예제 #1
0
        private async Task <PayPalPaymentCreatedResponse> CreatedPayPalPaymentAsync(HttpClient http, PayPalAccessToken accessToken1, double total, string currency)
        {
            HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "/v1/payments/payment");

            request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessToken1.access_token);
            var payment = JObject.FromObject(
                new{
                intent        = "sale",
                redirect_urls = new{
                    return_url = configuration["PayPal:returnUrl"],
                    cancel_url = configuration["PayPal:CancelUrl"]
                },
                payer        = new { payment_method = "paypal" },
                transactions = JArray.FromObject(new[] {
                    new{
                        amount = new{
                            total    = total,
                            currency = currency
                        }
                    }
                })
            });

            request.Content = new StringContent(JsonConvert.SerializeObject(payment), Encoding.UTF8, "application/json");

            HttpResponseMessage responce = await http.SendAsync(request);

            string content = await responce.Content.ReadAsStringAsync();

            PayPalPaymentCreatedResponse PayPalPaymentCreated = JsonConvert.DeserializeObject <PayPalPaymentCreatedResponse>(content);

            return(PayPalPaymentCreated);
        }
예제 #2
0
 public async Task <string> getRedirectUrlToPayPal(double total, string currency)
 {
     try
     {
         return(Task.Run(async() =>
         {
             HttpClient http = GetPaypalHttpClient();
             PayPalAccessToken accessToken = await GetPayPalAccessTokenAsync(http);
             PayPalPaymentCreatedResponse createdPayment = await CreatedPayPalPaymentAsync(http, accessToken, total, currency);
             return createdPayment.links.First(x => x.rel == "approval_url").href;
         }).Result);
     }
     catch (Exception ex) {
         Debug.WriteLine(ex, "Fail");
         return(null);
     }
 }