【问题标题】:PayPal REST API: When do I get the approved state for payments over a PayPal account?PayPal REST API:我什么时候可以通过 PayPal 账户获得付款的批准状态?
【发布时间】:2014-04-21 14:17:24
【问题描述】:

当我通过 REST API(使用适用于 .NET 的 PayPal REST SDK)处理付款时,我首先创建付款

Payment payment = ...
Payment createdPayment = payment.Create(apiContext);

我存储创建的付款的 ID 以供以后使用。然后我重定向到提供的付款页面。在用户批准付款后 PayPal 调用的页面中,我想获取有关付款的信息。

我打电话

Payment payment = Payment.Get(apiContext, paymentID);

使用存储的付款 ID。

我预计付款的状态会在这里“批准”,但它仍然是“创建”。

可能出了什么问题?我何时或如何获得“已批准”状态?

【问题讨论】:

    标签: paypal


    【解决方案1】:
    1. 你需要

      使用 payment id 构造一个支付对象,并使用 PayPal 的 payer id 返回,并使用访问令牌进行 API 调用。

      这是您在重定向到贝宝时提供的SuccesUrl返回的查询参数。 例如

      http://yourserver.com/payment/paypal/success.asp?payerid=EC-43242423&token=FS321-DFSD-3123DFS-3G243

    2. 然后

      执行付款:

      Payment payment = new Payment("");
      PaymentExecution pymntExecution = new PaymentExecution();
      pymntExecution.payer_id = ("");
      Payment executedPayment = pymnt.Execute(apiContext,pymntExecution);
      
    3. 请参阅 paypal 教程中的步骤 4 / 5:

      https://devtools-paypal.com/guide/pay_paypal/dotnet?interactive=OFF&env=sandbox

    Jürgen Bayer 编辑

    我接受这个答案,但我只是在 PayPal 支持的帮助下添加了一些我发现的东西:

    • created 创建付款后的结果。仍然是付款人授权付款后的状态(这是我推理的错误:approved不是“付款人批准”而是“PayPal批准”。没有“授权”的状态)。李>
    • 执行付款后,状态可以是pendingapprovedfailedcancelledexpired
    • pending 表示 PyPal 必须执行一些安全检查,或者付款是银行转帐。在后者中,PayPal 必须等到银行转账完成。
    • approved 表示付款已通过 PayPal。信用卡付款可能会导致这种状态。
    • failed:根据https://developer.paypal.com/webapps/developer/docs/classic/ipn/integration-guide/IPNandPDTVariables/#id091EB04C0HS,如果付款是无法完成的银行转帐,例如因为银行账户没有足够的资金,就会产生这种状态。
    • cancelled: 付款被取消了(问题是,是谁取消的?)
    • expired:支付授权已过期,无法获取。

    【讨论】:

    • 感谢您的回答。但这就是我已经做的,它没有回答我的问题(我什么时候获得批准的状态?)。在创建付款、重定向到 PayPal 并从 PayPal 重定向到我提供的 return_url 后,我从 PayPal 获取付款(payment = Payment.Get(apiContext, paymentID))。生成的 Payment 对象中的状态仍然是“已创建”。我希望状态beeing“批准”(以防客户批准付款)。
    • 付款在 pynment.execute() 之后被批准。在此之前,您已经获得了转账的批准,您仍然可以选择是否提取资金。
    • 你从哪里得到的?这似乎有点奇怪,因为对我来说“已批准”的含义是“已批准”,而这正是付款人在 PayPal 重定向到确认页面之前所做的(如果付款人取消 PayPal 重定向到取消 URL)。我承认在某些情况下“已批准”是在执行付款后产生的,但在其他情况下,结果状态是“待定”(正如我所料)。我开始假设 PayPal 存在一些时间问题,可能是因为付款更改是异步处理的。也许我们根本不应该关心状态......
    • 我在该页面上找不到任何关于批准或执行后付款状态的信息。并且:我收到了来自 PayPal 商家支持的关于此问题的回复。它指出“已批准”应在付款人批准付款后产生。执行付款后,应该会出现“待定”或(我不知道)“已完成”。我参与其中(我按照商家支持的建议联系技术支持)并尽快发布我的发现。
    【解决方案2】:

    上面写着:“如果调用成功,我们将返回一个交易确认,并带有正在创建的状态。”

    【讨论】:

      【解决方案3】:

      对于 node.js...

      您需要调用execute来更新状态以批准

      var execute_payment_json = {
          "payer_id": "Appended to redirect url",
          "transactions": [{
              "amount": {
                  "currency": "USD",
                  "total": "1.00"
              }
          }]
      };
      
      var paymentId = 'PAYMENT id created in previous step';
      
      paypal.payment.execute(paymentId, execute_payment_json, function (error, payment) {
          if (error) {
              console.log(error.response);
              throw error;
          } else {
              console.log("Get Payment Response");
              console.log(JSON.stringify(payment));
          }
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-10-26
        • 2013-09-03
        • 2013-05-26
        • 2014-09-23
        • 2019-11-06
        • 1970-01-01
        • 2012-10-22
        • 2014-03-10
        相关资源
        最近更新 更多