首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >REST payment.create不创建支付

REST payment.create不创建支付
EN

Stack Overflow用户
提问于 2014-12-02 22:14:16
回答 1查看 142关注 0票数 0

我有一个后端web服务(不是网页),它试图从前端客户端创建一个支付。在一些细节和事务列表之间没有数据匹配的地方,我从沙坑那里得到了适当的错误消息,解释了出了什么问题后,我最终得到了payment.create方法来执行,而没有抛出异常。不幸的是,虽然我可以看到测试web服务和paypal之间存在SSL通信,但是当例程返回时,我没有链接,也没有创建状态。我可能完全误解了api的机制,但是在调用中没有任何错误或异常的情况下,我有点困惑。

下面是我使用的代码:

代码语言:javascript
复制
    var config = ConfigManager.Instance.GetProperties();
    var clientid = config[BaseConstants.ClientId];
    var clientSecret = config[BaseConstants.ClientSecret];
    var accessToken = new OAuthTokenCredential(clientid, clientSecret, config).GetAccessToken();
    var apiContext = new APIContext(accessToken);
    var itemList = new ItemList() { items = new List<Item>() };
    using (var context = new PETTEntities3())
    {
      SubscriptionType subType = context.SubscriptionTypes.FirstOrDefault(s => s.SubscriptionTypeID == Subscription.SubscriptionTypeID);
      itemList.items.Add(new Item()
      {
        name = subType.SubscriptionName,
        currency = "NZD",
        price = (Subscription.Amount / (decimal)1.15).ToString("0.00"),
        quantity = "1",
        sku = subType.SubscriptionTypeID.ToString()
       });
       var payer = new Payer() { payment_method = "paypal" };
       var redirectUrls = new RedirectUrls()
       {
         cancel_url = ConfigurationManager.AppSettings["PaymentConfirmationURL"] + Subscription.PaymentApprovalID,
           return_url = ConfigurationManager.AppSettings["PaymentCancellationURL"] + Subscription.PaymentApprovalID
       };
       var details = new Details()
       {
         tax = (Subscription.Amount - decimal.Parse((Subscription.Amount / (decimal)1.15).ToString("0.00"))).ToString("0.00"),
         subtotal = (Subscription.Amount / (decimal)1.15).ToString("0.00"),
         shipping="0"
        };
        var amount = new Amount()
        {
          currency = "NZD",
          total = Subscription.Amount.ToString("0.00"),
          details = details              
        };
        var transactionList = new List<Transaction>();
        transactionList.Add(new Transaction()
        {
          description = "PETT Subscription.",
          invoice_number = "PETT1420" + Subscription.SubscriptionID.ToString(),
          amount = amount,
          item_list = itemList
        });
        Payment payment = new Payment()
        {
          intent = "sale",
          payer = payer,
          transactions = transactionList,
          redirect_urls = redirectUrls
        };
        payment.Create(apiContext);
.... At this point the payment state is still null and no links are present even though I appear to have a successful call with no exceptions.

任何关于我所缺少的线索或洞察力都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-04 01:43:37

啊,太明显了。没有注意到函数签名payment.create,它返回了一个新的支付。这是您需要使用的,而不是用于调用创建的付款:

支付paymentToUse = payment.Create(apiContext);

paymentToUse把所有的货物都买好了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27260047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档