在测试中使用假有效随机数创建交易时,交易结果向我显示消息:"网关被拒绝:重复"



在我的测试中,当我试图创建与fake-valid-nonce的事务时,出现了一个问题。

下面是创建事务的代码:

const createTransaction = (price, nonceFromTheClient, customerBrainTreeId) => {
  const transactionToken = new Promise((resolve, reject) => {
    gateway.transaction.sale(
      {
        amount: price,
        customerId: customerBrainTreeId,
        paymentMethodNonce: nonceFromTheClient,
        options: {
          submitForSettlement: true
        }
      },
      (error, result) => {
        if (error) {
          logger.error(`create transaction error: ${error}`);
          reject(error);
        } else {
          resolve(result);
        }
      });
  });
  return transactionToken;
};
下面是关于test的代码:
it(‘**************************', () => {
  return PaymentService.createTransaction("104.0", 'fake-valid-nonce', null)
    .then(result => {
      expect(result.success).to.be.true;
      expect(result.transaction.status).to.be.equals('submitted_for_settlement');
      expect(result.transaction.type).to.be.equals('sale');
    });
});

当我第一次运行测试时,该测试将通过。但是,如果我多次运行这个测试,这个测试将不通过,并且事务结果显示给我消息:"Gateway Rejected: duplicate "

我该如何解决这个问题?

我已经在braintree支持团队的帮助下找到了解决方案:

错误Gateway Rejected: duplicate被触发不是因为您使用了测试nonce值,而是因为您在Sandbox帐户中启用了Duplicate Transaction Checking选项(它是默认启用的)。重复事务检查可防止意外处理多个事务请求。如果客户刷新您的结帐页面或单击发出新API请求的按钮,就会发生这种情况。为了禁用或配置该选项,我邀请您登录到您的Braintree控制面板,然后进入设置>处理>编辑或禁用重复交易设置

最新更新