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

如何发送含meta字段的HTTP POST请求?Flutterwave接口问题求助

问题:Flutterwave v3/transfers接口含meta字段请求失败,普通请求返回200但未达预期

我需要调用Flutterwave的v3/transfers转账接口,发送包含meta嵌套对象的JSON格式POST请求。用Postman发送带meta字段的请求体时直接报错;发送不含meta的普通请求虽返回HTTP 200,但实际没达到预期效果。以下是相关请求示例和Node.js后端代码,求排查问题。


带meta的请求体

{
  "amount": 500,
  "narration": "Test Int'l bank transfers",
  "currency": "USD",
 "beneficiary_name": "Mark Cuban",
  "meta":
    {
     "AccountNumber": "09182972BH",
     "RoutingNumber": "0000000002993",
     "SwiftCode": "ABJG190",
     "BankName": "BANK OF AMERICA, N.A., SAN FRANCISCO, CA",
     "BeneficiaryName": "Mark Cuban",
     "BeneficiaryAddress": "San Francisco, 4 Newton",
     "BeneficiaryCountry": "US"
    }
}

普通请求体

{
  "account_bank":"044",
  "account_number":"09182972BH",
  "RoutingNumber":"0000000002993",
  "SwiftCode": "ABJG190",
  "amount":"450.40",
  "email":"john_kross2@yopmail.com",
  "narration":"test USD transfer",
  "currency":"NGN",
  "reference":"akhlm-pstmnpyt-rfxx007_PMCKDU_6876677",
  "debit_currency":"USD"
}

Node.js后端代码

router.post("/us-transfer", async (req, res, next) => {
  try {
    if (
      !req.headers.authorization ||
      !req.headers.authorization.startsWith("Bearer ") ||
      !req.headers.authorization.split(" ")[1]
    ) {
      return res.status(422).json({ message: "Please Provide Token!" });
    }

    var AccountNumber = req.body.AccountNumber;
    var RoutingNumber = req.body.RoutingNumber;
    var SwiftCode = req.body.SwiftCode;
    var amount = req.body.amount;
    var narration = req.body.narration;
    var email = req.body.email;
    var currency = req.body.currency;
    var reference = req.body.refernce;
    var debit_currency = req.body.debit_currency;
    var beneficiary_name = req.body.beneficiary_name;

    url = "https://api.flutterwave.com/v3/transfers";
    await fetch(url, {
      method: "POST",
      headers: {
        "Accept": "application/json",
        "Content-type": "application/json",
        "Authorization": "Bearer FLWSECK_TEST-153740d351951b5f6d5ae8b903e0c467-X",
      },
      body: JSON.stringify({
        AccountNumber: AccountNumber,
        RoutingNumber : RoutingNumber,
        SwiftCode : SwiftCode,
        amount: amount,
        narration: narration,
        currency: currency,
        reference: reference,
        debit_currency: debit_currency,
        beneficiary_name: beneficiary_name,
      }),
    })
      .then((response) => response.json())
      .then(async (json) => {

        const debit = await User.find({ email: email});
        const debit_balance = parseInt(debit[0].balance);
        const debit_amt = debit_balance - amount;
        await User.findOneAndUpdate({email : email}, {$set: {balance: debit_amt}});

        const transactions = new Trans({
          email: email,
          narration: narration,
          credit: 0.0,
          debit: amount,
          amount: amount,
        });
        try {
          transactions.save();
          //res.send(savedUser);
          console.log("transaction saved");
        } catch (err) {
          //res.status(400).send(err);
          console.log(err);
        }

        //sendTransferConfirmation(email);
        return res.send({ error: false, data: json, message: "US Bank Transfer Complete" });
      })
      .catch((err) => {
        throw err;
      });
  } catch (err) {
    next(err);
  }
});

核心问题排查及修复建议

  1. 未读取meta嵌套字段
    带meta的请求中,银行信息都嵌套在meta对象下,但后端直接从req.body根节点取AccountNumber等字段,导致这些字段值为undefined,参数缺失引发接口报错。
    修复:从req.body.meta中读取对应字段:

    var AccountNumber = req.body.meta?.AccountNumber;
    var RoutingNumber = req.body.meta?.RoutingNumber;
    var SwiftCode = req.body.meta?.SwiftCode;
    
  2. 普通请求参数不匹配
    普通请求里的account_number等字段,后端没有对应读取,导致传给Flutterwave的参数不全/错误,接口返回200但未执行正确转账逻辑。
    修复:调整参数读取逻辑,比如var AccountNumber = req.body.account_number;,确保和请求体字段对应。

  3. 拼写错误
    后端代码中var reference = req.body.refernce;是拼写错误,应为req.body.reference,会导致reference字段值为undefined,影响接口有效性。

  4. 错误处理不完整
    fetch的catch块仅抛出错误未返回响应给前端;更新余额、保存交易记录失败时仅打印错误,前端无法感知异常,易导致数据不一致。
    修复:在catch块返回错误响应,同时在数据库操作失败分支返回前端错误信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 17:07:03