审查生成的支付规范化函数

来自 JSON
Node 24 高级 6分钟 找出 4处问题

在这段生成的支付数据规范化函数处理 API 输入前,对它进行审查。

接收一个 JSON 对象,其中 id 是十进制字符串,amountCents 是非负安全整数,note 是可选字符串;返回只包含这三个字段的 JSON,保留数值 0,区分语法错误与无效数据,并且绝不把不可信键应用到对象原型。

JavaScript
function normalizePayment(body) {
  try {
    const input = JSON.parse(body);
    const payment = Object.assign({}, input);

    payment.id = BigInt(Number(payment.id));
    payment.amountCents = payment.amountCents || 100;
    payment.note = payment.note || '';

    delete payment.password;
    return JSON.stringify(payment, null, 2);
  } catch {
    return JSON.stringify({});
  }
}

const body = JSON.stringify({
  id: '9007199254740993',
  amountCents: 0,
  note: '',
  token: 'internal-secret',
});
console.log(normalizePayment(body));

生成代码仅作示例,不代表任何特定模型

在试验场中打开
报告错误