Pav*_*hev 6 paypal paypal-sandbox
我有一个类似的问题。
设置
脚步
问题
在对 API 的所有请求中,我使用客户端 ID 和 REST API 应用程序的密钥,这些应用程序是我出于测试目的而创建的。
之后,我打开 Postman 并向 PayPal API 发送以下请求以生成访问令牌(文档:https: //developer.paypal.com/docs/api/get-an-access-token-curl/)。
curl -v https://api.sandbox.paypal.com/v1/oauth2/token \
-H "Accept: application/json" \
-H "Accept-Language: en_US" \
-u "client_id:secret" \
-d "grant_type=client_credentials"
Run Code Online (Sandbox Code Playgroud)
到目前为止,一切都很好。然后,我向 PayPal APIv1 发送 API 请求以获取有关订单的更多详细信息。我使用的交易 ID 与订单 ID 相同。
curl -v -X GET https://api.sandbox.paypal.com/v1/checkout/orders/TRANSACTION_ID \
-H "Content-Type: application/json" \
-H "Authorization: Bearer Access-Token"
Run Code Online (Sandbox Code Playgroud)
我得到这个:
{
"http_code": 404,
"body": {
"name": "INVALID_RESOURCE_ID",
"message": "INVALID_RESOURCE_ID",
"information_link": "https://developer.paypal.com/docs/api/orders/v1/#error-INVALID_RESOURCE_ID",
"debug_id": "c02871817abba"
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试了 APIv2:
curl -v -X GET https://api.sandbox.paypal.com/v1/checkout/orders/ORDER_ID \
-H "Content-Type: application/json" \
-H "Authorization: Bearer Access-Token"
Run Code Online (Sandbox Code Playgroud)
我得到这个:
{
"http_code": 404,
"body": {
"name": "RESOURCE_NOT_FOUND",
"details": [
{
"issue": "INVALID_RESOURCE_ID",
"description": "Specified resource ID does not exist. Please check the resource ID and try again."
}
],
"message": "The specified resource does not exist.",
"debug_id": "c2c24f91a44fd",
"links": [
{
"href": "https://developer.paypal.com/docs/api/orders/v2/#error-INVALID_RESOURCE_ID",
"rel": "information_link",
"method": "GET"
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
困惑
该交易清楚地列在企业帐户中,但 API 表示没有此类交易。
建议/解决方案?
解决方案
通过 PayPal 按钮(使用企业帐户生成)发起的付款的默认行为是销售,但不是订单。有关两者之间差异的更多详细信息,请阅读此处 - https://www.paypal.com/us/smarthelp/article/what-are-the-differences- Between-the-express-checkout- payment-actions-ts1501
解决方案是向另一个 PayPal API 方法发出请求(检查:https://developer.paypal.com/docs/paypal-plus/germany/how-to/show-sale/ ?fbclid=IwAR30yROZMjKT2LlRgSRuVBMGrjdmN1MGbuJ50rUiUBWwW11FSpGdxk5JNpY#show-sale-细节)
这是返回正确数据的请求。
curl -v -X GET https://api.sandbox.paypal.com/v1/payments/sale/TRANSACTION_ID \
-H "Content-Type: application/json" \
-H "Authorization: Bearer Access-Token"
Run Code Online (Sandbox Code Playgroud)
v2/orders 对象仅用于付款批准,它们不是交易。他们的 ID 仅应保留一个月左右用于调试目的,因为它们没有会计目的,并且在 PayPal.com 中不可引用
另一方面,PayPal 交易由 v2/付款对象表示,当您捕获 v2/订单时返回该对象。您可以通过适当的 GET 调用再次获取捕获的详细信息:https ://developer.paypal.com/docs/api/ payments/v2/#captures_get