我正在网站上开发一个支付门户,我可以正确放置按钮并将我从api响应中获得的paymentId和PayerId存储在数据库中。但是我无法获取transactionId,这是我需要的那个。
因为这是我第一次这样做,所以我不知道我必须使用与api不同的服务来执行付款才能获得交易ID(https://api.paypal.com/v1/payments/payment/PAYID-XXXXXX/execute),所以现在我需要生成带有付款信息的csv,为了使其正确无误,我尝试为我存储在数据库中的每笔付款调用服务,最后显示transactionID。我真的不知道这是否是解决此问题的正确方法,但这是我在贝宝页面中找到的。
我首先尝试使用curl:
curl -v -X POST https://api.paypal.com/v1/payments/payment/PAYID-XXXXXXX/execute \
-H "Content-Type: application/json" \
-H "Authorization: Bearer XXXXXXXXXXXX" \
-d '{
"payer_id": "XXXXXXXXXXX"
}'
具有正确的信息(我生成了我的不记名授权,所以这不是问题),PAYID和payerID是我数据库中的信息,我相信它们是正确的。因此,我第一次正确使用此方法时,它实际上是成功的,然后在Axios的我的react应用程序中实现,如下所示:
axios({
method:'POST',
url:"https://api.paypal.com/v1/payments/payment/" + list[index].pago.paymentId + "/execute",
responseType:'json',
headers: {
"Content-Type" : "application/json",
"Authorization" : "Bearer XXXXXXXXXXXXXXXXXXXXX"
},
data : {
payer_id : list[index].pago.payerId
}
}).then((response) => {
console.log(response)
})
*请注意,“列表”是我的付款清单,我在pago中拥有所有信息。我已经检查了信息是否正确。
但是我收到以下错误:
{
"name":"INVALID_RESOURCE_ID",
"message":"The requested resource ID was not found",
"information_link":"https://developer.paypal.com/docs/api/payments/#errors",
"debug_id":"5614cdf9e45ca"
}
所以我认为这可能是与我的开发环境有关的问题,因此尝试使用Postman,但出现此错误:
{
"name": "MALFORMED_REQUEST",
"message": "The request JSON is not well formed.",
"information_link": "https://developer.paypal.com/webapps/developer/docs/api/#MALFORMED_REQUEST",
"debug_id": "62277ab8964fd"
}
但是我认为这是因为我无法正确提出请求。我将payerId放在“正文”中。
因此,在那之后,我再次尝试使用curl只是为了检查请求是否正常...现在我也遇到了与Axios相同的错误。
我有一种感觉,就是我在第一次获得成功之后就搞砸了,现在我不知道如何使它重新工作。
这种方法错误吗?执行服务是否只能使用一次?还有其他更好的方法吗?
提前谢谢!
答案 0 :(得分:0)
付款批准后,您应立即准确地致电执行服务1次。最好使用付款创建过程中返回的execute_url,而不是自己创建url。
响应是用来向付款人显示成功或失败消息的信息。响应中将包含一个带有交易ID的相关资源销售对象,您可以将其存储在数据库中以进行会计处理,因为这是一个持久ID。 (PAYID仅用于批准,不能永久保存。)
如果以后需要获取PAYID的详细信息,可以通过一个简单的GET(不是POST)请求来完成:https://developer.paypal.com/docs/api/payments/v1/#payment_get-但是,假设您存储了第一次执行的结果调用,对于大多数集成来说,这不是必需的,除非您有充分的理由这样做,否则我建议跳过此步骤。