为啥我在尝试设置 PayPal 付款时在生产中不断收到 INVALID_RESOURCE_ID 错误?
Posted
技术标签:
【中文标题】为啥我在尝试设置 PayPal 付款时在生产中不断收到 INVALID_RESOURCE_ID 错误?【英文标题】:Why do I keep getting INVALID_RESOURCE_ID error in production when trying to set up PayPal payment?为什么我在尝试设置 PayPal 付款时在生产中不断收到 INVALID_RESOURCE_ID 错误? 【发布时间】:2021-09-04 01:25:09 【问题描述】:我想设置一次性 PayPal 付款。我从 html 中调用 <script data-page-type="checkout" src="https://www.paypal.com/sdk/js?client-id=my client id&currency=CZK&commit=true&intent=capture&debug=true"></script>
来显示按钮。
然后我像这样在客户端 javascript 中设置它
createOrder: function(data, actions)
return fetch('/.netlify/functions/transactionProcessor?orderAction=create',
method: 'post',
).then(function(functionResponse)
console.log("order created");
return functionResponse.json();
).then(function(functionResponseJson)
return functionResponseJson.id;
);
,
当用户单击按钮时,会调用 createOrder。 CreateOrder 然后调用这个服务器端代码
async function createOrder(client)
// Call PayPal to set up a transaction.
const request = new paypal.orders.OrdersCreateRequest();
request.prefer('return=minimal');
request.requestBody(
intent: 'CAPTURE',
purchase_units: [
amount:
currency_code: 'CZK',
value: '69.99'
]
);
const order = await client.execute(request);
console.log('order successfuly created');
// Return a successful serverResponse to the client with the order ID.
return statusCode: 200, body: JSON.stringify( serverResponse: order, id:
order.result.id )
返回绝对没问题。客户端代码然后通过在它的 createOrder 方法中返回它来处理它 - 这里会发生错误。
RESOURCE_NOT_FOUND (https://justpaste.it/resource_not_found_paypal_err)
INVALID_RESOURCE_ID (https://justpaste.it/invalid_resource_id_err)
我完全不知道为什么会这样,而且我已经尝试修复它好几天了。它在沙盒中工作。
【问题讨论】:
【参考方案1】:解决了。我不小心在服务器上使用了沙盒环境。逻辑是process.env.SANDBOX ? sandboxEnv : liveEnv
,但 process.env 变量由于某种原因不起作用(Netlify + Netlify dev)。我将其替换为本地const sandbox = false
。
不敢相信我花了这么多时间在这上面。如果我不这么愚蠢地摆弄它,我永远不会找到它。
【讨论】:
【参考方案2】:您不应该从客户端执行 REST API 捕获请求。这个对 PayPal 的 API 调用只能从服务器执行。
至于为什么它在实时而不是沙盒中因配置文件 ID 无效而出错,可能是您忽略了在所述客户端代码中更新 clientID+secret。但是,如前所述,绝不能从客户端使用秘密(以及您获得的身份验证令牌)。它仅用于服务器端 API 调用。
【讨论】:
以上是关于为啥我在尝试设置 PayPal 付款时在生产中不断收到 INVALID_RESOURCE_ID 错误?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我在使用 Paypal 付款后在我的商店中得到一个空白页面?