PayPal REST API:我何时通过PayPal帐户获得批准的付款状态?

Jür*_*yer 3 paypal

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

Payment payment = ...
Payment createdPayment = payment.Create(apiContext);
Run Code Online (Sandbox Code Playgroud)

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

我打电话

Payment payment = Payment.Get(apiContext, paymentID);
Run Code Online (Sandbox Code Playgroud)

使用存储的付款ID.

我预计这里的付款状态"已经批准",但它仍然是"已创建".

可能有什么不对?何时或如何获得"批准"状态?

use*_*539 12

  1. 你需要

    构建具有支付ID的支付对象,并使用从PayPal 返回支付者ID ,并使用访问令牌进行API调用.

    这是从重定向到paypal时提供的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);
    
    Run Code Online (Sandbox Code Playgroud)
  3. 请参阅paypal教程中的步骤4/5:

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

由JürgenBayer编辑

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

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