首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么在尝试设置PayPal payment时,我在生产中不断收到INVALID_RESOURCE_ID错误?

为什么在尝试设置PayPal payment时,我在生产中不断收到INVALID_RESOURCE_ID错误?
EN

Stack Overflow用户
提问于 2021-06-20 02:53:00
回答 2查看 94关注 0票数 0

我想设置一次性PayPal付款。我从超文本标记语言调用<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中设置它,如下所示

代码语言: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调用此服务器端代码

代码语言:javascript
运行
复制
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)

我完全不知道为什么会发生这种情况,我已经试着修复它好几天了。它能在沙盒里工作。

EN

回答 2

Stack Overflow用户

发布于 2021-06-20 14:06:40

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

至于为什么它会在live而不是sandbox中出现无效的配置文件ID,可能是因为您忽略了在上述客户端代码中更新clientID+secret。但是,正如前面提到的,机密(以及您使用它获得的身份验证令牌)决不能从客户端使用。它仅用于服务器端API调用。

票数 0
EN

Stack Overflow用户

发布于 2021-06-20 20:14:05

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

不敢相信我在这上面花了这么多时间。如果我不是那么愚蠢地摆弄它,我永远也找不到它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68049863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档