J'essaie Braintree en mode bac à sable en utilisant la fonction Drop-in. Je crée un jeton client en utilisant un customerID
existant. Mais quand je fais transaction.sale
appel avec cette customerId
et l'option storeInVault = true
donne erreur l'erreur suivante:Braintree sandbox transaction.sale donne une erreur: "Le code client de vente a déjà été pris"
Sale Customer ID has already been taken.
Selon la documentation, il doit mettre à jour le client avec le nonce de paiement.
Voici le code:
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;
}
}
});
J'utilise Meteor avec le package patrickml:braintree
.
Je pense que c'est ce que je dois faire. Toutefois, selon la documentation: ** Client existant avec nouveau mode de paiement ** Pour associer le mode de paiement de cette transaction à un client existant, transmettez un customerId avec options.storeInVault ou options.storeInVaultOnSuccess comme vrai. Node.js 'gateway.transaction.sale ({ montant: "10.00", paymentMethodNonce: nonceFromTheClient, customerId: "theCustomerId", Options: { storeInVaultOnSuccess: true} }, la fonction (err, résultat) { }); ' –
La documentation est correcte, mais je peux voir la confusion. Vous imbriquez l'attribut 'id' dans les options client. Dans l'exemple que vous avez lié, l'attribut customerId est spécifié au niveau supérieur. – ThinkAboutIt
Aha le moment Eureka !!! Bonne prise, ça aide toujours d'avoir une deuxième paire d'yeux! Merci beaucoup. –