Braintree sandbox transaction.sale gives error: "Sale Customer ID has already been taken"

Braintree sandbox transaction.sale gives error: "Sale Customer ID has already been taken"

我正在使用 Drop-in 功能在沙盒模式下试用 Braintree。 我正在使用现有的 customerID 创建一个客户端令牌。但是当我用这个 customerId 和选项 storeInVault = true 进行 transaction.sale 调用时,它给出了以下错误:

Sale Customer ID has already been taken.

根据文档,它应该使用付款随机数更新客户。

代码如下:

gateway.transaction.sale({
  amount: '10.00',
  paymentMethodNonce: nonceFromTheClient, // Generated nonce passed from client
  customer: {
    id: 232057823,  //this customer exist in the vault
    email : user.emails[0].address
  },
  options: {
    submitForSettlement: true,
    storeInVault: true 
    //storeInVaultOnSuccess: true 
  }
}, function (err, result) {
  if (err) {
    console.log(err);
  } else {
    if (result.success) {
         return result.success;
    } else {
            console.log('ERR Sale '+result.message);
            return result.success;
    }
  }
});

我在 patrickml:braintree.

包中使用 Meteor

您似乎在使用 Braintree Transaction Sale API Call,其中包含了 storeInVault: true 选项。这是在用包含的付款方式 nonce 创建交易并尝试创建客户 ID 232057823,这就是您遇到该错误的原因。

如果您的目标是简单地更新现有客户,您会希望使用 Customer Update API call