微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么我在生产环境中尝试设置 PayPal 付款时不断收到 INVALID_RESOURCE_ID 错误?

如何解决为什么我在生产环境中尝试设置 PayPal 付款时不断收到 INVALID_RESOURCE_ID 错误?

我想设置一次性 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)

我完全不知道为什么会发生这种情况,而且我已经尝试修复它好几天了。它适用于沙盒。

解决方法

您不应该从客户端执行 REST API 捕获请求。这个对 PayPal 的 API 调用只能从服务器执行。

至于为什么在实时而不是沙箱中使用无效的配置文件 ID 出错,您可能忽略了在所述客户端代码中更新 clientID+secret。但是,如前所述,绝不能从客户端使用该机密(以及您通过它获得的身份验证令牌)。它仅用于服务器端 API 调用。

,

解决了。我不小心在服务器上使用了沙箱环境。逻辑是 process.env.SANDBOX ? sandboxEnv : liveEnv,但 process.env 变量由于某种原因不起作用(Netlify + Netlify dev)。我用本地 const sandbox = false 替换了它。

不敢相信我花了这么多时间在这上面。如果我不这么愚蠢地摆弄它,我永远不会发现它。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。