Example #1
0
        public async Task <PaymentRespObj> makePayment(PaymentObj payment)
        {
            var url         = "payments";
            var jsonContent = JsonConvert.SerializeObject(payment);
            var buffer      = Encoding.UTF8.GetBytes(jsonContent);
            var byteContent = new ByteArrayContent(buffer);

            byteContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");

            PaymentRespObj responseObj       = new PaymentRespObj();
            var            flutterWaveClient = _httpClientFactory.CreateClient("FLUTTERWAVE");
            var            keys = await _serverRequest.GetFlutterWaveKeys();

            flutterWaveClient.DefaultRequestHeaders.Add("Authorization", "Bearer " + keys.keys.secret_keys);

            return(await _retryPolicy.ExecuteAsync(async() =>
            {
                try
                {
                    result = await flutterWaveClient.PostAsync(url, byteContent);
                    if (!result.IsSuccessStatusCode)
                    {
                        var data1 = await result.Content.ReadAsStringAsync();
                        responseObj = JsonConvert.DeserializeObject <PaymentRespObj>(data1);
                        return new PaymentRespObj
                        {
                            message = responseObj.message
                        };
                    }
                    var data = await result.Content.ReadAsStringAsync();
                    responseObj = JsonConvert.DeserializeObject <PaymentRespObj>(data);
                }
                catch (Exception ex) { throw ex; }
                if (responseObj == null)
                {
                    return new PaymentRespObj
                    {
                        message = "Not Successful"
                    };
                }
                if (responseObj.status == "success")
                {
                    return new PaymentRespObj
                    {
                        status = responseObj.status,
                        data = responseObj.data,
                        message = responseObj.message
                    };
                }
                return new PaymentRespObj
                {
                    message = "Not Successful"
                };
            }));
        }
        public async Task <PaymentIdRes> CreatePayment(string token, string getAmount)
        {
            //Add headers
            client.DefaultRequestHeaders.Accept.Add(
                new MediaTypeWithQualityHeaderValue("application/json"));
            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);

            //Payment object
            PaymentObj pObj = new PaymentObj
            {
                intent = "sale",
                payer  = new PaymentObj.Payer
                {
                    payment_method = "paypal"
                },
                redirect_urls = new PaymentObj.Redirect_Urls
                {
                    return_url = "/Client/Success",
                    cancel_url = "/Client/Cancel"
                },
                transactions = new PaymentObj.Transaction[]
                {
                    new PaymentObj.Transaction
                    {
                        amount = new PaymentObj.Amount
                        {
                            total    = getAmount,
                            currency = "EUR"
                        }
                    }
                }
            };

            DataContractJsonSerializer serializePaymentObj = new DataContractJsonSerializer(typeof(PaymentObj));
            //Create a stream to serialize the object to.
            MemoryStream ms = new MemoryStream();

            serializePaymentObj.WriteObject(ms, pObj);
            byte[] json = ms.ToArray();
            ms.Close();
            string              bodyToSend = Encoding.UTF8.GetString(json, 0, json.Length);
            HttpContent         _body      = new StringContent(bodyToSend, Encoding.UTF8, "application/json");
            HttpResponseMessage response   = await client.PostAsync("https://api.sandbox.paypal.com/v1/payments/payment", _body);

            //Response
            var serializer = new DataContractJsonSerializer(typeof(PaymentIdRes));

            response.EnsureSuccessStatusCode();
            var responseBody = await response.Content.ReadAsStreamAsync();

            var payId = serializer.ReadObject(responseBody) as PaymentIdRes;

            return(payId);
        }