You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase Functions集成PayPal支付遇日志错误,请求技术协助

解决Firebase Cloud Functions集成PayPal Payouts的问题

我来帮你一步步排查和解决这两天遇到的问题:

问题1:SYNC_MODE_NOT_APPLICABLE 错误

你已经意识到要把sync_mode改为false,但这里有个细节要注意:必须用布尔值false,而不是字符串类型的'false'。你的原代码里sync_mode是字符串'true',改成布尔值后才能正确触发PayPal要求的异步模式(同步模式确实已经对新集成弃用了)。

另外还有个小优化:不需要把付款请求对象payReq转成JSON字符串,PayPal的REST SDK直接接受JavaScript对象,转字符串反而可能引发不必要的解析问题。修改后的代码片段如下:

const functions = require('firebase-functions');
const paypal=require('paypal-rest-sdk');
const admin=require('firebase-admin');

admin.initializeApp(functions.config().firebase);

paypal.configure({
    mode:"sandbox",
    client_id:functions.config().paypal.client_id,
    client_secret:functions.config().paypal.client_secret
});

exports.payout = functions.https.onRequest((request, response) => {
    const sender_batch_id = Math.random().toString(36).substring(9);
    // 改为布尔值false
    const sync_mode = false;
    // 直接用对象,不用JSON.stringify
    const payReq = {
        sender_batch_header: {
            sender_batch_id: sender_batch_id,
            email_subject: "You have a payment"
        },
        items: [
            {
                recipient_type: "EMAIL",
                amount: { value: 0.1, currency: "USD" },
                receiver: "ammah6600@crowns.com",
                note: "Thank you.",
                sender_item_id: "item_3"
            }
        ]
    };

    paypal.payout.create(payReq,sync_mode,(error,payout) =>{
        if(error){
            console.warn(error.response);
            response.status(500).end();
            throw error;
        }else{
            console.info("payout created");
            console.info(payout);
            response.status(200).end();
        }
    });
});

问题2:INSUFFICIENT_FUNDS 错误

这个错误很明确:你的PayPal沙箱商户账户余额不足,无法发起这笔付款。解决步骤很简单:

  • 登录PayPal开发者平台,进入沙箱账户管理页面
  • 找到你用来发起付款的商户沙箱账户,点击「查看/编辑账户」
  • 在余额板块,点击「添加资金」,选择USD币种并输入足够的金额(比如10 USD)
  • 保存后重新测试你的Cloud Function

另外补充一点:你在埃及不影响沙箱测试,只要商户和收款账户都是有效的美国区沙箱账户就没问题,重点是确保沙箱账户有足够的测试资金。

额外检查建议

  • 确认Firebase环境变量里的paypal.client_id和paypal.client_secret是沙箱环境的凭证,别不小心用了生产环境的
  • 检查收款邮箱ammah6600@crowns.com是否是已验证的沙箱账户,未验证的账户可能无法接收付款
  • 可以直接去PayPal沙箱的交易日志里查看更详细的失败细节,方便进一步排查

内容的提问来源于stack exchange,提问作者Amr Mohammed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:58:03