当我通过REST API处理付款时(使用PayPal REST SDK for .NET)我首先创建付款
Payment payment = ...
Payment createdPayment = payment.Create(apiContext);
我存储创建的付款的ID以供日后使用。然后我重定向到提供的付款页面。在PayPal用户批准付款后调用的页面中,我想获取有关付款的信息。
我打电话
Payment payment = Payment.Get(apiContext, paymentID);
使用存储的付款ID。
我预计支付状态“已经批准”,但它仍然是“已创建”。
可能有什么不对?何时或如何获得“批准”状态?
答案 0 :(得分:12)
你需要
使用付款ID 构建付款对象,并使用PayPal中的付款人ID 返回,并使用访问令牌进行API调用。< / p>
这是您在重定向到paypal时提供的 SuccesUrl 返回的查询参数。 e.g
http://yourserver.com/payment/paypal/success.asp?payerid=EC-43242423&token=FS321-DFSD-3123DFS-3G243
然后
执行付款:
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ürgenBayer编辑
我接受这个答案,但我只是在PayPal支持的帮助下添加了一些我发现的东西:
created
结果。在付款人授权付款之后仍然是州(这是我的推理错误:approved
并不意味着“由付款人批准”而是“由PayPal批准”。没有“授权”状态。 pending
,approved
,failed
,cancelled
或expired
pending
表示PyPal必须执行一些安全检查或付款是银行转帐。在后者中,PayPal必须等到银行转帐完成。approved
表示付款已获得PayPal批准。这种状态可能会导致信用卡付款。failed
:根据https://developer.paypal.com/webapps/developer/docs/classic/ipn/integration-guide/IPNandPDTVariables/#id091EB04C0HS,如果付款是无法完成的银行转帐,则会产生此状态,例如因为银行帐户资金不足。cancelled
:付款被取消了(问题是,由谁?)expired
:付款授权已过期且无法捕获。答案 1 :(得分:1)
for 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));
}
});
答案 2 :(得分:0)
它写在那里:“如果通话成功,我们将在创建状态时返回交易确认。”