我试图通过PayPal API捕获付款,但我一直收到错误500。我按照指南(根据我的需要翻译成PHP)操作,所以我看不出我的错误在哪里。
我的后台是PHP/Symfony,所以我使用HTTPClient发送请求:
$response = $this->client->request('POST', sprintf('%s/%s/checkout/orders/%s/capture', $this->url, 'v2', $orderID), [
'auth_bearer' => $this->accessToken,
'headers' => [
'Content-Type' => 'application/json',
'PayPal-Request-Id' => $payment->getClientToken()
],
'json' => null
]);
我添加了'json' =〉null以强制请求为application/json。
我也注意到一些小问题,我不能验证对v2网址,我必须使用v1和处理付款到v2。
我正在使用沙盒帐户。如果我运行所有的请求在 Postman 我得到201创建,但如果我只做这一个与ID从结帐我得到404未找到。
关于这三种使用方式的请求我没有一个单一的具有相同的回报。
有人遇到过这个问题并解决了吗?
编辑:添加PayPal API文档中的curl示例:
curl -v -X POST https://api-m.sandbox.paypal.com/v2/checkout/orders/XXX/authorize \
-H "Content-Type: application/json" \
-H "Authorization: Bearer Access-Token" \
-H "PayPal-Request-Id: XXX"
1条答案
按热度按时间j91ykkif1#
PayPal-Request-Id标头(如果包括)对于该捕获尝试应是唯一的。这适用于API idempotency,用于在收到500类型错误或无响应后需要重试捕获的情况。
如果您尝试从错误的环境中捕获ID,则可能会发生404(例如,ID是在沙箱中创建和批准的,但您错误地尝试在实时URL中捕获它)
我无法在v2 URL上验证
所有API调用都使用访问令牌,但最初的oauth请求仅针对v1 API,因此这是正确的。没有其他“v2”URL可用于请求访问令牌。