Я пытаюсь обновить кредитную карту, сохраненную в хранилище Braintree, новыми значениями с помощью следующего кода: —
var data = {
cardholderName: $('#cardholder_name').val(),
expirationDate: $('#expiration_date').val(),
cvv: $('#cvv').val(),
billingAddress: {
firstName: $('#firstName').val(),
lastName: $('#lastName').val(),
streetAddress: $('#streetAddress').val(),
locality: $('#city').val(),
region: $('#state').val(),
postalCode: $('#postalCode').val(),
countryName: $('input[name="country"]').val(),
}
};
if($('#number').prop('disabled') == false) {
data.number = $('#number').val();
}
data.billingAddress['options'] = { updateExisting: true };
var client = new braintree.api.Client({clientToken: "<?=$client_token?>"});
client.tokenizeCard(data, function (err, nonce) {
});
Приведенный выше код работает нормально, когда я удаляю
data.billingAddress['options'] = { updateExisting: true };
Если я включу вышеупомянутую строку, я получаю сообщение об ошибке Невозможно токенизировать карту. Как я могу обновить существующий платежный адрес, когда я токенизирую кредитную карту через javascript?
Я работаю в Брэйнтри. Если вам нужна какая-либо другая помощь, не стесняйтесь обращаться к нам по адресу support@braintreepayments.com.
При звонке tokenizeCard
информация о карте и адресе платежа, включенная в вызов, не добавляется в ваше хранилище. Из-за этого, updateExisting
не должен использоваться, и вернет ошибку при попытке токенизации карты.
Чтобы обновить существующую кредитную карту, вам нужно передать одноразовый номер, который вы получили на свой сервер, а затем сделать Braintree_PaymentMethod::update()
позвоните, чтобы обновить информацию. Вам нужно будет убедиться, что у вас есть оригинальный токен кредитной карты при выполнении этого вызова (который возвращается при первом вызове). Braintree_PaymentMethod::create()
или же Braintree_CreditCard::create())
,
Других решений пока нет …