我正在尝试获得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交易都有效。