Paypal REST API:如何在用户批准付款后检索付款ID。

时间:2013-08-31 02:43:03

标签: paypal

按照https://developer.paypal.com/webapps/developer/docs/integration/web/accept-paypal-payment/上的指南,我已成功创建付款并重定向用户以批准该付款。

创建的付款类似于下面的内容,我将其保存在用户的会话中以供进一步参考。

{
  "id": "PAY-6RV70583SB702805EKEYSZ6Y",
  "create_time": "2013-03-01T22:34:35Z",
  "update_time": "2013-03-01T22:34:36Z",
  "state": "created",
  "intent": "sale",
  "payer": {
    "payment_method": "paypal"
  },
  "transactions": [
    {
      "amount": {
        "total": "7.47",
        "currency": "USD",
        "details": {
          "subtotal": "7.47"
        }
      },
      "description": "This is the payment transaction description."
    }
  ],
  "links": [
    {
      "href": "https://api.sandbox.paypal.com/v1/payments/payment/PAY-6RV70583SB702805EKEYSZ6Y",
      "rel": "self",
      "method": "GET"
    },
    {
      "href": "https://www.sandbox.paypal.com/webscr?cmd=_express-checkout&token=EC-60U79048BN7719609",
      "rel": "approval_url",
      "method": "REDIRECT"
    },
    {
      "href": "https://api.sandbox.paypal.com/v1/payments/payment/PAY-6RV70583SB702805EKEYSZ6Y/execute",
      "rel": "execute",
      "method": "POST"
    }
  ]
}

用户批准付款后,Paypal会将用户重定向到return_url。例如,http://<return_url>?token=EC-60U79048BN7719609&PayerID=7E7MGXCWTTKK2

要执行付款,必须向https://api.sandbox.paypal.com/v1/payments/payment/{payment_id}/execute/发出POST请求。

问题

网址中Paypal提供的唯一两条信息是tokenPayerID。如何找到相应的payment_id

可能的解决方案

tokenapproval_url的一部分,解析网址并存储token -> payment关系可以解决问题。但我正在寻找一种不需要解析的更好的解决方案。

5 个答案:

答案 0 :(得分:10)

我认为paypal文档对此并不清楚。但是你可以做一些简单的事情来解决你的问题,通过你的返回网址中的参数传递de PaymentID。

像这样: return_url ='http://www.yourdomain.com/paypal/success/ paymentID = PAY-1234567 '

当Paypal重定向到您的网站时,它会将paymentID与其他参数一起返回。


Emportuguês:

Nãoachoque isso esteja claronadocumentaçãodoPaypal。一个简单的解决方案,eu passo o PaymentIDcomoparâmetronaminha URL de retorno que informo para o Paypal。 Assim,quando o Paypal redirecionar para meu site de volta ele matemoparâmetrocomo PaymentID que eu tinha passado。

答案 1 :(得分:5)

在将用户重定向到PayPal批准网址之前,您必须记住您身边的付款ID(通常附有您的用户会话 - 购物车或订单或会话Cookie)。一旦将其重新定向回您的返回网址以及PayerID,您需要从用户会话中提取PaymentID并执行付款。

答案 2 :(得分:1)

在第一个API请求返回成功响应后,可以使用以下方法在PHP中获取Payment ID:

$payment->getId();

在线代码示例(http://paypal.github.io/PayPal-PHP-SDK/sample/doc/payments/CreatePaymentUsingPayPal.html)显示了如何发送请求,但它不包含getId()方法。

要找到这个,我必须在文件sample \ payments \ CreatePayment.php中查看下载的SDK文件,其中包含以下示例代码,显示了此方法的用法:

ResultPrinter::printResult('Create Payment Using Credit Card', 'Payment', $payment->getId(), $request, $payment);

答案 3 :(得分:0)

我发现此链接非常有用,以防有人想要查看它:https://github.com/paypal/PayPal-NET-SDK/issues/79

答案 4 :(得分:-1)

  1. paymentid
  2. 创建付款后,作为回报json,您可以获得paymentid。 像这样:&#34; id&#34;:&#34; PAY-01K00482KX842131HKORKVKY&#34;

    1. payerid
    2. 您可以使用API​​:GET / v1 / payments / payment / {paymentId}在用户批准付款后获取付款人ID,您会在json中找到payerid,如下所示:

      {
          "id":"PAY-01K00482KX842131HKORKVKY",
          "create_time":"2014-06-19T09:17:31Z",
          "update_time":"2014-06-19T09:17:31Z",
          "state":"created",
          "intent":"sale",
          "payer":{
                  "payment_method":"paypal",
                  "payer_info":{
                          "email":"buyer@samsung.com",
                          "first_name":"buyer",
                          "last_name":"samsung",
                          "payer_id":"H2DKRTTYWW8HS",
                          "shipping_address":{                                              "line1":"Lushan Road Num.188",                                              "line2":"JianYe",
                                                    "city":"Tucson",
                                                         "state":"AZ",   
                                                         "postal_code":"85715", 
                                                         "country_code":"US",
                                                          "recipientName":"buyer samsung"}}},
          "transactions":[{
                                 "amount":{
                                              "total":"12.00",
                                              "currency":"USD",
                                              "details"{"subtotal":"12.00"}},
                       "description":"creating a payment"}],
          "links":[
                         {"href":"xxxxxxx","rel":"self","method":"GET"},
                    {"href":"xxxxxxx","rel":"approval_url","method":"REDIRECT"},
                    {"href":"xxxxxxx","rel":"execute","method":"POST"}]}