У меня есть настроенный интерфейс для Braintree. Я могу видеть пользовательский интерфейс в порядке. До этого я создал клиента и вижу его на песочнице braintree. Теперь я хочу добавить способ оплаты для клиента. Я пытаюсь следующий код, но paymentMethodNonceReceived не вызывается. Не уверен почему.
braintree.setup("<?=CLIENT_TOKEN_FROM_PHP?>",
"dropin",
{
container: "divBrainTreeContainer",
paymentMethodNonceReceived: function (event, nonce) {
console.log(nonce);
$('#formProfile').append('<input type="hidden" name="payment_method_nonce" value="'+nonce+'" />');
$('#formProfile').submit();
}
}
);
Я использую ниже JavaScript И его работает нормально:
braintree.setup(clientToken, "custom", {
id: "my-sample-form",
hostedFields: {
number: {
selector: "#card-number"},
cvv: {
selector: "#cvv"},
expirationMonth: {
selector: "#expiration-month"},
expirationYear: {
selector: "#expiration-year"},
},onPaymentMethodReceived:function(nonce){
console.log(JSON.stringify(nonce));
return false;
}
}
);
Выше дает ниже ответ и не отправляет форму:
{"nonce":"ff2662e1-f1fd-42a3-a16f-d8f3213a2406","details":{"lastTwo":"11","cardType":"Visa"},"type":"CreditCard"}
значит использовать onPaymentMethodReceived вместо paymentMethodNonceReceived
Спасибо
http://www.web-technology-experts-notes.in/2015/06/braintree-payment-gateway-integration.html
Согласно комментарию @ kdetella, должно быть submit
кнопка внутри <form>
элемент для получения метода оплаты nonce.
https://github.com/braintree/braintree-web/issues/58
Для пользовательской интеграции с несколькими способами оплаты используйте onSuccess вместо onPaymentMethodReceived.
braintree.setup(TOKEN, 'custom', {
id: 'checkout',
paypal: {
container: 'paypal-container',
onSuccess: function (nonce, email) {
// This will be called as soon as the user completes the PayPal flow
// nonce:String
// email: String
}
},
onPaymentMethodReceived: function(obj) {
// This will be called when the user submits the form
}
});