/* * This method cn be used to patch an order by passing the order id. */ public async static Task <HttpResponse> PatchOrder(string orderId, bool debug = false) { var request = new OrdersPatchRequest <Object>(orderId); request.RequestBody(BuildPatchRequest()); var response = await PayPalClient.client().Execute(request); if (debug) { var ordersGetRequest = new OrdersGetRequest(orderId); response = await PayPalClient.client().Execute(ordersGetRequest); var result = response.Result <Order>(); Console.WriteLine("Retrieved Order Status After Patch"); Console.WriteLine("Status: {0}", result.Status); Console.WriteLine("Order Id: {0}", result.Id); Console.WriteLine("Intent: {0}", result.Intent); Console.WriteLine("Links:"); foreach (LinkDescription link in result.Links) { Console.WriteLine("\t{0}: {1}\tCall Type: {2}", link.Rel, link.Href, link.Method); } AmountWithBreakdown amount = result.PurchaseUnits[0].Amount; Console.WriteLine("Total Amount: {0} {1}", amount.CurrencyCode, amount.Value); Console.WriteLine("Response JSON: \n {0}", PayPalClient.ObjectToJSONString(result)); } return(response); }
public async static Task <HttpResponse> GetOrder(string orderId) { var request = new OrdersGetRequest(orderId); var response = await PayPalClient.client().Execute(request); return(response); }
public override Task Execute(MessageData data) { var args = data.GetAs <Params>(); OrdersGetRequest request = new OrdersGetRequest(args.OrderId); if (string.IsNullOrEmpty(clientId)) { throw new CoflnetException("unavailable", "checkout via paypal has not yet been enabled, please contact an admin"); } var client = new PayPalHttpClient(new LiveEnvironment(clientId, clientSecret)); //3. Call PayPal to get the transaction PayPalHttp.HttpResponse response; try { response = client.Execute(request).Result; } catch (Exception e) { dev.Logger.Instance.Error(e, "payPalPayment"); throw new CoflnetException("payment_failed", "The provided orderId has not vaid payment asociated"); } //4. Save the transaction in your database. Implement logic to save transaction to your database for future reference. var result = response.Result <Order>(); Console.WriteLine(JSON.Stringify(result)); Console.WriteLine("Retrieved Order Status"); Console.WriteLine("Status: {0}", result.Status); Console.WriteLine("Order Id: {0}", result.Id); AmountWithBreakdown amount = result.PurchaseUnits[0].AmountWithBreakdown; Console.WriteLine("Total Amount: {0} {1}", amount.CurrencyCode, amount.Value); if (result.Status != "COMPLETED") { throw new CoflnetException("order_incomplete", "The order is not yet completed"); } if (UsedIds.Contains(args.OrderId)) { throw new CoflnetException("payment_timeout", "the provied order id was already used"); } if (DateTime.Parse(result.PurchaseUnits[0].Payments.Captures[0].UpdateTime) < DateTime.Now.Subtract(TimeSpan.FromHours(1))) { throw new CoflnetException("payment_timeout", "the provied order id is too old, please contact support for manual review"); } var user = data.User; var days = args.Days; var transactionId = result.Id; UserService.Instance.SavePurchase(user, days, transactionId); UsedIds.Add(args.OrderId); FileController.AppendLineAs("purchases", JSON.Stringify(result)); return(data.Ok()); }
public async Task <IHttpActionResult> BuyTicket(BuyTicketBindingModel bindingModel) { var user = unitOfWork.Users.Find(u => u.Email.Equals(bindingModel.Email)).FirstOrDefault(); if (user == null) { return(BadRequest("User with that email doesn't exist")); } DateTime currentTime = DateTime.Now; var pricelistItem = unitOfWork.Pricelists.GetPricelistItemForSelectedTypes(bindingModel.TicketType, user.PassengerType, currentTime); if (pricelistItem == null) { return(NotFound()); } OrdersGetRequest request = new OrdersGetRequest(bindingModel.OrderId); var response = await PayPalClient.client().Execute(request); var result = response.Result <Order>(); Transaction transaction; if (result.Status == "COMPLETED") { transaction = new Transaction() { OrderId = result.Id, CreateTime = result.CreateTime, PayerEmail = result.Payer.Email, Status = result.Status, UserId = user.Id }; unitOfWork.Transactions.Add(transaction); unitOfWork.Complete(); } else { return(BadRequest("Transaction was not validated.")); } Ticket ticket = new Ticket() { TimeOfPurchase = currentTime, TicketInfo = pricelistItem, IsCanceled = false, PassengerId = user.Id }; SendTicketToEmail(ticket, transaction.PayerEmail); unitOfWork.Tickets.Add(ticket); unitOfWork.Complete(); return(Ok()); }
public async Task <InvoicePaymentProvider> UpdateAmountInvoice(InvoicePaymentProvider invoicePaymentProvider, Domain.Entities.Orders.Order order) { PayPalEnvironment environment = CreateEnvironment(); var client = new PayPalHttpClient(environment); var getOrderRequest = new OrdersGetRequest(invoicePaymentProvider.Transaction); try { var getOrderResponse = await client.Execute(getOrderRequest); var getOrderResult = getOrderResponse.Result <PaypalOrder>(); var payment = new OrderRequest() { CheckoutPaymentIntent = "CAPTURE", PurchaseUnits = new List <PurchaseUnitRequest>() { new PurchaseUnitRequest() { CustomId = getOrderResult.PurchaseUnits[0].CustomId, Description = getOrderResult.PurchaseUnits[0].Description, AmountWithBreakdown = new AmountWithBreakdown() { CurrencyCode = Currency.CurrencyValue.USD.ToString(), Value = Convert.ToInt32(order.TotalAmount).ToString() } } }, ApplicationContext = CreateApplicationContext() }; var request = new OrdersCreateRequest(); request.Prefer("return=representation"); request.RequestBody(payment); var response = await client.Execute(request); var result = response.Result <PaypalOrder>(); var uri = new Uri(result.Links.Single(l => l.Rel == "approve").Href); await CancelInvoice(invoicePaymentProvider); invoicePaymentProvider.Link = uri; invoicePaymentProvider.Transaction = result.Id; return(invoicePaymentProvider); } catch (HttpException httpException) { var debugId = httpException.Headers.GetValues("PayPal-Debug-Id").FirstOrDefault(); throw httpException; } }
public async Task <Result <Order> > GetOrder(string orderId, bool debug = false) { var request = new OrdersGetRequest(orderId); var response = await _payPalClient.Client().Execute(request); var result = response.Result <Order>(); //todo: Save things to DB return(result != null ? Result <Order> .Ok(result) : Result <Order> .Error($"There are no payments with given Id.")); }
public static HttpResponse GetOrder(string orderId, int userId, bool debug = true) { OrdersGetRequest request = new OrdersGetRequest(orderId); //3. Call PayPal to get the transaction var response = Task.Run(() => PayPalClient.client().Execute(request)).Result; //4. Save the transaction in your database. Implement logic to save transaction to your database for future reference. var result = response.Result <Order>(); String value = result.PurchaseUnits[0].AmountWithBreakdown.Value; /*if (result.Status != "COMPLETE") { * return response; * }*/ Transaction transaction = new Transaction(); transaction.Status = result.Status; transaction.Amount = value; transaction.UserId = userId; ApplicationContext db = new ApplicationContext(); User user = db.Users.SingleOrDefault(u => u.Id == userId); if (String.Compare(value, SilverPrice) == 0) { user.TokenAmount += Silver; transaction.Package = "Silver"; } if (String.Compare(value, GoldPrice) == 0) { user.TokenAmount += Gold; transaction.Package = "Gold"; } if (String.Compare(value, PlatinumPrice) == 0) { user.TokenAmount += Platinum; transaction.Package = "Platinum"; } transaction.Paid = float.Parse(transaction.Amount); db.Entry(user).State = EntityState.Modified; db.Transactions.Add(transaction); db.SaveChanges(); String amount = result.PurchaseUnits[0].AmountWithBreakdown.Value; return(response); }
public async Task <HttpResponse> GetTransaction(string OrderId, bool debug = false) { //string orderId = "8TH80554NC7396247"; string orderId = "23139793XR804084D"; try { //RefundsGetRequest //CapturesGetRequest var request = new OrdersCaptureRequest(orderId); request.RequestBody(new OrderActionRequest()); PayPalEnvironment payPalEnvironment = new SandboxEnvironment("Af8jLh10kVlYkx4lunz6GSduOt92LyS_hRCOjzRZaU1SZrr1Eb7xYXBjLn-ue6SqiVlsTCEPPlMmL4bI", "EKQBNJEbuBx-yIx0vdtFTiptyfnnyjQVYwhPAmiuKe19T3Viko-B8E-wYrfQuvGdVCOJ97zH9-arreb4"); var response = await new PayPalHttpClient(payPalEnvironment).Execute(request); var result = response.Result <Order>(); foreach (PurchaseUnit purchaseUnit in result.PurchaseUnits) { foreach (PayPalCheckoutSdk.Orders.Capture capture in purchaseUnit.Payments.Captures) { //captureId = capture.Id; } } Console.WriteLine("Retrieved Order Status"); //result.Payer.A Console.WriteLine("Status: {0}", result.Status); Console.WriteLine("Order Id: {0}", result.Id); //Console.WriteLine("Intent: {0}", result.CheckoutPaymentIntent); Console.WriteLine("Links:"); //foreach (LinkDescription link in result.Links) //{ // Console.WriteLine("\t{0}: {1}\tCall Type: {2}", link.Rel, link.Href, link.Method); //} // AmountWithBreakdown amount = result.PurchaseUnits[0].AmountWithBreakdown; // Console.WriteLine("Total Amount: {0} {1}", amount.CurrencyCode, amount.Value); // Console.WriteLine("Response JSON: \n {0}", PayPalClient.ObjectToJSONString(result)); return(response); } catch (Exception e) { OrdersGetRequest request = new OrdersGetRequest(orderId); PayPalEnvironment payPalEnvironment = new SandboxEnvironment("Af8jLh10kVlYkx4lunz6GSduOt92LyS_hRCOjzRZaU1SZrr1Eb7xYXBjLn-ue6SqiVlsTCEPPlMmL4bI", "EKQBNJEbuBx-yIx0vdtFTiptyfnnyjQVYwhPAmiuKe19T3Viko-B8E-wYrfQuvGdVCOJ97zH9-arreb4"); return(await new PayPalHttpClient(payPalEnvironment).Execute(request)); } }
public async void TestOrdersGetRequest() { var response = await OrdersCreateTest.CreateOrder(); Order createdOrder = response.Result <Order>(); OrdersGetRequest request = new OrdersGetRequest(createdOrder.Id); response = await TestHarness.client().Execute(request); Assert.Equal(200, (int)response.StatusCode); Order retrievedOrder = response.Result <Order>(); Assert.NotNull(retrievedOrder); Assert.Equal(retrievedOrder.Id, createdOrder.Id); Assert.NotNull(retrievedOrder.PurchaseUnits); Assert.Equal(retrievedOrder.PurchaseUnits.Count, createdOrder.PurchaseUnits.Count); for (int count = 0; count < retrievedOrder.PurchaseUnits.Count; count++) { PurchaseUnit retrievedOrderPurchaseUnit = retrievedOrder.PurchaseUnits[count]; PurchaseUnit createdOrderPurchaseUnit = createdOrder.PurchaseUnits[count]; Assert.Equal(retrievedOrderPurchaseUnit.ReferenceId, createdOrderPurchaseUnit.ReferenceId); Assert.Equal(retrievedOrderPurchaseUnit.Amount.CurrencyCode, createdOrderPurchaseUnit.Amount.CurrencyCode); Assert.Equal(retrievedOrderPurchaseUnit.Amount.Value, createdOrderPurchaseUnit.Amount.Value); } Assert.NotNull(retrievedOrder.CreateTime); Assert.NotNull(createdOrder.Links); bool foundApproveURL = false; foreach (var linkDescription in createdOrder.Links) { if ("approve".Equals(linkDescription.Rel)) { foundApproveURL = true; Assert.NotNull(linkDescription.Href); Assert.Equal("GET", linkDescription.Method); Console.WriteLine(linkDescription.Href); } } Console.WriteLine(createdOrder.Id); Assert.True(foundApproveURL); Assert.Equal("CREATED", createdOrder.Status); }
public async Task <HttpResponse> GetOrder(bool debug = false) { //string orderId = "8TH80554NC7396247"; //string orderId = "3WW64787D42227157"; string orderId = "95868714B0010890H"; try { //RefundsGetRequest //CapturesGetRequest OrdersGetRequest request = new OrdersGetRequest(orderId); PayPalEnvironment payPalEnvironment = new SandboxEnvironment("Af8jLh10kVlYkx4lunz6GSduOt92LyS_hRCOjzRZaU1SZrr1Eb7xYXBjLn-ue6SqiVlsTCEPPlMmL4bI", "EKQBNJEbuBx-yIx0vdtFTiptyfnnyjQVYwhPAmiuKe19T3Viko-B8E-wYrfQuvGdVCOJ97zH9-arreb4"); var response = await new PayPalHttpClient(payPalEnvironment).Execute(request); var result = response.Result <Order>(); Console.WriteLine("Retrieved Order Status"); var shippingCharge = result.PurchaseUnits.Select(s => s.AmountWithBreakdown).Sum(a => Convert.ToDecimal(a.AmountBreakdown.Shipping.Value)); var tax = result.PurchaseUnits.Select(s => s.AmountWithBreakdown).Sum(a => Convert.ToDecimal(a.AmountBreakdown.TaxTotal.Value)); var total = result.PurchaseUnits.Select(s => s.AmountWithBreakdown).Sum(a => Convert.ToDecimal(a.AmountBreakdown.TaxTotal.Value)); foreach (PurchaseUnit purchaseUnit in result.PurchaseUnits) { } //result.Payer.A Console.WriteLine("Status: {0}", result.Status); Console.WriteLine("Order Id: {0}", result.Id); //Console.WriteLine("Intent: {0}", result.CheckoutPaymentIntent); Console.WriteLine("Links:"); //foreach (LinkDescription link in result.Links) //{ // Console.WriteLine("\t{0}: {1}\tCall Type: {2}", link.Rel, link.Href, link.Method); //} // AmountWithBreakdown amount = result.PurchaseUnits[0].AmountWithBreakdown; // Console.WriteLine("Total Amount: {0} {1}", amount.CurrencyCode, amount.Value); // Console.WriteLine("Response JSON: \n {0}", PayPalClient.ObjectToJSONString(result)); return(response); } catch (Exception e) { OrdersGetRequest request = new OrdersGetRequest(orderId); PayPalEnvironment payPalEnvironment = new SandboxEnvironment("Af8jLh10kVlYkx4lunz6GSduOt92LyS_hRCOjzRZaU1SZrr1Eb7xYXBjLn-ue6SqiVlsTCEPPlMmL4bI", "EKQBNJEbuBx-yIx0vdtFTiptyfnnyjQVYwhPAmiuKe19T3Viko-B8E-wYrfQuvGdVCOJ97zH9-arreb4"); return(await new PayPalHttpClient(payPalEnvironment).Execute(request)); } }
public async Task <Order> CaptureOrder(string approvedOrderId) { // Construct a request object and set desired parameters // Replace ORDER-ID with the approved order id from create order var request = new OrdersCaptureRequest(approvedOrderId); request.RequestBody(new OrderActionRequest()); var response = await Client().Execute(request); var getRequest = new OrdersGetRequest(approvedOrderId); response = await Client().Execute(getRequest); var result = response.Result <Order>(); return(result); }
//2. Set up your server to receive a call from the client /* * You can use this method to retrieve an order by passing the order ID. */ public async static Task <HttpResponse> GetOrder(string orderID, string sessionId, bool debug = false) { Console.WriteLine("OrderID: " + orderID); Console.WriteLine("SessionID: " + sessionId); OrdersGetRequest request = new OrdersGetRequest(orderID); //3. Call PayPal to get the transaction var response = await PayPalClient.client().Execute(request); //4. Save the transaction in your database. Implement logic to save transaction to your database for future reference. var result = response.Result <Order>(); if (result == null) { Console.WriteLine("Result is null."); } Console.WriteLine("Customer Name: " + result.Payer.Name.GivenName); using (var db = new RareShoesContext()) { var order = db.Order.Where(a => a.SessionId == sessionId).FirstOrDefault(); if (order == null) { Console.WriteLine("Order is null"); } else { Console.WriteLine("OrderID: " + order.OrderId); } order.CustomerName = result.Payer.Name.FullName; order.EmailAddress = result.Payer.EmailAddress; order.TransactionId = result.Id; order.OrderStatusId = 3; order.DateOfOrder = DateTime.Now; order.DeliveryAddress = result.PurchaseUnits[0].Shipping.AddressPortable.AddressLine1 + result.Payer.AddressPortable.AddressLine2 + ", " + result.Payer.AddressPortable.AdminArea2 + ", " + result.Payer.AddressPortable.AdminArea1; Console.WriteLine("Deliver address: " + order.DeliveryAddress); db.Entry(order).State = Microsoft.EntityFrameworkCore.EntityState.Modified; db.SaveChanges(); } return(response); }
public async Task <IEnumerable <IOrderState> > GetAsync(ICriterion filter, IList <string> orders = null, int firstResult = 0, int maxResults = int.MaxValue, IList <string> fields = null) { IEnumerable <IOrderState> states = null; var q = new OrdersGetQuery(); q.FirstResult = firstResult; q.MaxResults = maxResults; q.Sort = OrderProxyUtils.GetOrdersQueryValueString(orders); q.Fields = OrderProxyUtils.GetReturnedFieldsQueryValueString(fields, QueryFieldValueSeparator); q.Filter = OrderProxyUtils.GetFilterQueryValueString(filter); var req = new OrdersGetRequest(); req.Query = q; var resp = await _ramlClient.Orders.Get(req); OrderProxyUtils.ThrowOnHttpResponseError(resp); states = (resp.Content == null) ? null : resp.Content.Select(e => e.ToOrderState()); return(states); }
public ActionResult About() { var clientId = ""; var secret = ""; //Creating a sandbox environment PayPalEnvironment environment = new SandboxEnvironment(clientId, secret); // Creating a client for the environment PayPalHttpClient client = new PayPalHttpClient(environment); var request = new OrdersGetRequest(""); var task = client.Execute(request); var response = task.Result; var statusCode = response.StatusCode; ViewBag.Message = response.StatusCode.ToString(); return(View(statusCode)); }
public async Task <IActionResult> Complete([FromBody] PayPalTransactionCompleteInput input) { _logger.LogInformation(input.ToString()); try { OrdersGetRequest request = new OrdersGetRequest(input.OrderId); // Call PayPal to get the transaction var response = await _paypalClient.Execute(request); // Save the transaction in your database. Implement logic to save transaction to your database for future reference. var result = response.Result <Order>(); var resultJson = JsonConvert.SerializeObject(result); _logger.LogInformation("支付结果:" + resultJson); return(Json(result)); } catch (Exception ex) { _logger.LogError(ex, "支付失败"); return(BadRequest()); } }
public async Task <String> GetOrder(string id, bool debug = false) { OrdersGetRequest request = new OrdersGetRequest(id); //3. Call PayPal to get the transaction var response = await PayPalClient.client().Execute(request); //4. Save the transaction in your database. Implement logic to save transaction to your database for future reference. var result = response.Result <Order>(); Console.WriteLine("Retrieved Order Status"); Console.WriteLine("Status: {0}", result.Status); Console.WriteLine("Order Id: {0}", result.Id); Console.WriteLine("Intent: {0}", result.Intent); Console.WriteLine("Links:"); foreach (LinkDescription link in result.Links) { Console.WriteLine("\t{0}: {1}\tCall Type: {2}", link.Rel, link.Href, link.Method); } AmountWithBreakdown amount = result.PurchaseUnits[0].Amount; Console.WriteLine("Total Amount: {0} {1}", amount.CurrencyCode, amount.Value); return(PayPalClient.ObjectToJSONString(response.Result <Order>())); }
/// <summary> /// 获取一号店指定时间区间的订单 /// </summary> /// <param name="param">查询参数</param> /// <param name="auth">授权参数</param> /// <returns>一号店订单列表</returns> /// <remarks>2017-08-23 黄杰 创建</remarks> public Result <List <UpGradeOrder> > GetOrderList(OrderParameters param, AuthorizationParameters auth) { var dealerInfo = new HytOrderDealerInfo() { DealerSysNo = 1565, DealerMallSysNo = 10, HytPayStatus = 20, IsSelfSupport = 1, }; var result = new Result <List <UpGradeOrder> > { Status = true, Message = "", Data = null, StatusCode = 0 }; var orderList = new List <UpGradeOrder>(); var _param = new Dictionary <string, string>(); var req = new OrdersGetRequest() { /**订单状态(逗号分隔): * ORDER_WAIT_PAY:已下单(货款未全收)、 * ORDER_PAYED:已下单(货款已收)、 * ORDER_WAIT_SEND:可以发货(已送仓库)、 * ORDER_ON_SENDING:已出库(货在途)、 * ORDER_RECEIVED:货物用户已收到、 * ORDER_FINISH:订单完成、 * ORDER_CANCEL:订单取消 */ OrderStatusList = "ORDER_WAIT_SEND", //可以发货(已送仓库) DateType = 2, //日期类型(1:订单生成日期,2:订单付款日期,3:订单发货日期,4:订单收货日期,5:订单更新日期) StartTime = param.StartDate.ToString("yyyy-MM-dd HH:mm:ss"), //查询开始时间 格式2011-12-12 20:10:10 EndTime = param.EndDate.ToString("yyyy-MM-dd HH:mm:ss"), //查询结束时间(时间差为15天) CurPage = 1, //当前页数 PageRows = 80 //每页显示记录数,默认50,最大100 }; var response = client.Execute(req, config.SessionKey); //循环获得订单编号,并根据订单编号获取订单详情 while (true) { var trades = JObject.Parse(response.ToString()); int totals = int.Parse(trades["response"]["totalCount"].ToString()); int totalPages = totals / param.PageSize; if (totals % param.PageSize != 0) { totalPages++; } var tradess = trades["response"]["orderList"]["order"]; bool has_nexts = param.PageIndex < totalPages; //trade = JObject.Parse(response.ToString()); foreach (var i in tradess) { //根据获取的订单号取得订单详情 var reqs = new OrdersDetailGetRequest() { OrderCodeList = i["orderId"].ToString() }; var responseData = client.Execute(reqs, config.SessionKey); #region 把订单详情和MAP绑定 while (true) { var trade = JObject.Parse(responseData.ToString()); int total = int.Parse(trade["response"]["totalCount"].ToString()); int totalPage = total / param.PageSize; if (total % param.PageSize != 0) { totalPage++; } var trades1 = trade["response"]["orderInfoList"]["orderInfo"]; bool has_next = param.PageIndex < totalPage; //trade = JObject.Parse(response.ToString()); foreach (var j in trades1) { var order = new UpGradeOrder(); Map(j, order); order.HytOrderDealer = dealerInfo; //// 支付方式(一号店无支付方式选项) //order.HytOrderDealer.HytPayType = YihaodianToPayTypeSysNo(i["payType"].ToString()); orderList.Add(order); } if (has_next) { param.PageIndex++; req.CurPage = param.PageIndex; response = client.Execute(req, config.SessionKey); } else { break; } } #endregion } if (has_nexts) { param.PageIndex++; req.CurPage = param.PageIndex; response = client.Execute(req, config.SessionKey); } else { break; } } result.Data = orderList; return(result); }