获得贝宝唯一的交易ID,贝宝PHP API


Get PayPal Unique Transaction ID, PayPal PHP API

我正在尝试获得PayPal支付的唯一交易ID。支付是在我的安卓应用程序和我捕获支付id,并将其存储在数据库中。我有一个脚本,寻找新的支付,并抓住支付id和传递是一个PHP脚本,获得支付信息,但由于某种原因,它没有返回唯一的交易id。下面是返回的内容:

array (size=8)
  'id' => string 'PAY-XXXXXXXXXXXXXXXXXXXXX' (length=28)
  'create_time' => string '2014-03-13T20:51:07Z' (length=20)
  'update_time' => string '2014-03-13T20:51:10Z' (length=20)
  'state' => string 'approved' (length=8)
  'intent' => string 'sale' (length=4)
  'payer' => 
    array (size=2)
      'payment_method' => string 'paypal' (length=6)
      'payer_info' => 
        array (size=5)
          'email' => string 'someone@somewhere.com' (length=21)
          'first_name' => string 'my first name' (length=5)
          'last_name' => string 'my last name' (length=5)
          'payer_id' => string 'the payer id' (length=13)
          'shipping_address' => 
            array (size=0)
              ...
  'transactions' => 
    array (size=1)
      0 => 
        array (size=3)
          'amount' => 
            array (size=3)
              ...
          'description' => string 'INVOICE' (length=7)
          'related_resources' => 
            array (size=1)
              ...
  'links' => 
    array (size=1)
      0 => 
        array (size=3)
          'href' => string 'https://api.paypal.com/v1/payments/payment/PAY-XXXXXXXXXXXXXXXXXXXXX'  (length=71)
          'rel' => string 'self' (length=4)
          'method' => string 'GET' (length=3)

现在,在我们发布链接和提供无用的信息之前,让我告诉你,我已经通过developer.paypal.com网站并通过PHP API广泛阅读。我运行了他们的样本,使用了脚本并对其进行了一些操作,并检查了他们可怕且相当混乱的SDK中的每段代码。我有一切工作,但希望能够得到这个唯一的id。有什么建议吗?如果可以的话,尝试用PHP来解决这个问题。

在开发人员网站上,它显示我的响应应该像这样:(或类似的,其中包含唯一的id。)

{
  "id": "PAY-5YK922393D847794YKER7MUI",
  "create_time": "2013-02-19T22:01:53Z",
  "update_time": "2013-02-19T22:01:55Z",
  "state": "approved",
  "intent": "sale",
  "payer": {
    "payment_method": "credit_card",
    "funding_instruments": [
      {
        "credit_card": {
          "type": "mastercard",
          "number": "xxxxxxxxxxxx5559",
          "expire_month": "2",
          "expire_year": "2018",
          "first_name": "Betsy",
          "last_name": "Buyer"
        }
      }
    ]
  },
  "transactions": [
    {
      "amount": {
        "total": "7.47",
        "currency": "USD",
        "details": {
          "subtotal": "7.47"
        }
      },
      "description": "This is the payment transaction description.",
      "related_resources": [
        {
          "sale": {
            "id": "36C38912MN9658832",
            "create_time": "2013-02-19T22:01:53Z",
            "update_time": "2013-02-19T22:01:55Z",
            "state": "completed",
            "amount": {
              "total": "7.47",
              "currency": "USD"
            },
            "parent_payment": "PAY-5YK922393D847794YKER7MUI",
            "links": [
              {
                "href": "https://api.sandbox.paypal.com/v1/payments/sale/36C38912MN9658832",
                "rel": "self",
                "method": "GET"
              },
              {
                "href": "https://api.sandbox.paypal.com/v1/payments/sale/36C38912MN9658832/refund",
                "rel": "refund",
                "method": "POST"
              },
              {
                "href": "https://api.sandbox.paypal.com/v1/payments/payment/PAY-5YK922393D847794YKER7MUI",
                "rel": "parent_payment",
                "method": "GET"
              }
            ]
          }
        }
      ]
    }
  ],
  "links": [
    {
      "href": "https://api.sandbox.paypal.com/v1/payments/payment/PAY-5YK922393D847794YKER7MUI",
      "rel": "self",
      "method": "GET"
    }
  ]
}

您的唯一交易ID应该在payment.transactions[0].related_resources[0].sale中。我,不是吗?或者payment["transactions"][0]["related_resources"][0]["sale"]["id"]如果是PHP对象?(最后这句话还没有经过测试,所以要持保留态度。)

你已经从上面的伪vardump中删除了related_resources数组的内容,但是根据PayPal REST API与支付交叉引用交易的答案,它应该在哪里。我的意思是,我完全不知道为什么它被藏在交易的"相关资源"下,但是嘿,这就是你的PayPal。

我刚刚遇到了同样的问题(虽然我使用。net REST API),并在该字段中找到了我唯一的事务ID;

这是PHP的语法,只是为了方便其他人使用:

$payment->transactions[0]->related_resources[0]->sale->id;

这对paypal支付(快递结帐)和cc交易都有效。