当我通过 REST API(使用适用于 .NET 的 PayPal REST SDK)处理付款时,我首先创建付款
Payment payment = ...
Payment createdPayment = payment.Create(apiContext);
我存储创建的付款的 ID 以备后用。然后我重定向到提供的付款页面。在用户批准付款后 PayPal 调用的页面中,我想获取有关付款的信息。
我打电话
Payment payment = Payment.Get(apiContext, paymentID);
使用存储的支付 ID。
我预计此处的付款状态为“已批准”,但它仍处于“已创建”状态。
有什么问题吗?我何时或如何获得“已批准”状态?
最佳答案
你需要
construct a payment object with payment id and use the payer id returned from PayPal and make the API call using the access token.
这是从您重定向到 paypal 时提供的 SuccesUrl 返回的查询参数。 例如
http://yourserver.com/payment/paypal/success.asp?payerid=EC-43242423&token=FS321-DFSD-3123DFS-3G243
然后
Execute a payment:
Payment payment = new Payment(""); PaymentExecution pymntExecution = new PaymentExecution(); pymntExecution.payer_id = (""); Payment executedPayment = pymnt.Execute(apiContext,pymntExecution);
请参阅 paypal 教程中的第 4/5 步:
https://devtools-paypal.com/guide/pay_paypal/dotnet?interactive=OFF&env=sandbox
由 Jürgen Bayer 编辑
我接受这个答案,但我只是添加了一些我在 PayPal 支持的帮助下发现的东西:
created
创建付款后的结果。还是付款人授权付款后的状态(那是我推理的错误:approved
不是“付款人批准”而是“PayPal批准”的意思,没有“授权”的状态").- 执行付款后,状态可以是
pending
、approved
、failed
、cancelled
或已过期
pending
表示 PyPal 必须执行一些安全检查或付款是银行转帐。在后者中,PayPal 必须等到银行转账完成。approved
表示付款已被 PayPal 批准。这种状态可能会导致信用卡付款。失败
:根据https://developer.paypal.com/webapps/developer/docs/classic/ipn/integration-guide/IPNandPDTVariables/#id091EB04C0HS如果付款是无法完成的银行转帐,例如因为银行账户没有足够的资金,就会出现这种状态。已取消
:付款已取消(问题是,由谁取消?)expired
:支付授权已过期,无法获取。
关于 Paypal REST API : When do I get the approved state for payments over a PayPal account?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22436360/