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

时间:2014-03-16 11:40:33

标签: paypal

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

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

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

我打电话

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

使用存储的付款ID。

我预计支付状态“已经批准”,但它仍然是“已创建”。

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

3 个答案:

答案 0 :(得分:12)

  1. 你需要

      

    使用付款ID 构建付款对象,并使用PayPal中的付款人ID 返回,并使用访问令牌进行API调用。< / p>

    这是您在重定向到paypal时提供的 SuccesUrl 返回的查询参数。 e.g

      

    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

  4. 由JürgenBayer编辑

    我接受这个答案,但我只是在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:付款授权已过期且无法捕获。

答案 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)

它写在那里:“如果通话成功,我们将在创建状态时返回交易确认。”