2015-01-21 25 views
8

Tôi đã thiết lập giao diện người dùng dropin cho braintree. Tôi có thể thấy giao diện người dùng. Trước đó, tôi đã tạo khách hàng và tôi có thể thấy khách hàng trên hộp cát-braintree. Bây giờ tôi muốn thêm phương thức thanh toán cho khách hàng. Tôi đang cố gắng sau mã, nhưng paymentMethodNonceReceived không được gọi. Không chắc chắn lý do tại sao.Braintree - paymentMethodNonceReceived không được gọi

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(); 
     } 
    } 
); 
+4

Tôi làm việc tại Braintree trong nhóm SDK. Bạn có phần tử 'divBraintTreeContainer' bên trong phần tử' form' không? Nếu vậy, có phải 'biểu mẫu' có chứa nút gửi không? – kdetella

+0

Ok @kdetella cảm ơn, không có nút gửi, tôi đã gửi qua javascript, nhưng khi tôi thêm nút gửi, tôi đã nhận payment_method_nonce. –

+2

@ kdetella Thực tế này về nút gửi không được chỉ định ở bất kỳ nơi nào trên trang giao diện người dùng thả xuống hoặc trang Xin chào, khách hàng. Nó sẽ là tuyệt vời để thêm này ở đâu đó, như tôi đã stumped bởi điều này quá! Nó không ngăn chặn một nonce xuống trên một giao diện người dùng tùy chỉnh. – janson0

Trả lời

5

Theo nhận xét của @ kdetella, có phải là một nút submit bên trong phần tử <form> nhận phương thức thanh toán nonce.

+0

Tôi đang sử dụng braintree với js, tôi đã thêm nút gửi bên trong id div mà tôi đã đề cập trong vùng chứa, nhưng tôi vẫn không thể nhận nonce, thay vì nhận được lỗi không bắt buộc: Không thể xâu chuỗi sự kiện: JSON.stringify không phải là chức năng – Kamini

7

Tôi đang sử dụng dưới đây Javascriptnó làm việc tốt:

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; 

    } 
    } 

     ); 

Trên cung cấp cho dưới đây phản ứng và KHÔNG gửi biểu mẫu:

{"nonce":"ff2662e1-f1fd-42a3-a16f-d8f3213a2406","details":{"lastTwo":"11","cardType":"Visa"},"type":"CreditCard"} 

phương tiện sử dụng onPaymentMethodReceived thay vì paymentMethodNonceReceived

Cảm ơn http://www.web-technology-experts-notes.in/2015/06/braintree-payment-gateway-integration.html

+0

Tôi đang sử dụng braintree với js, tôi đã thêm nút gửi bên trong id div mà tôi đã đề cập trong vùng chứa, nhưng tôi vẫn không thể lấy nonce, thay vì nhận được lỗi không bắt buộc: Không thể xâu chuỗi sự kiện: JSON.stringify không một hàm. Vui lòng giúp – Kamini

2

https://github.com/braintree/braintree-web/issues/58

Đối với hội nhập tùy chỉnh với nhiều phương thức thanh toán, sử dụng onSuccess thay vì 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 
    } 
}); 
+0

'OnSuccess' đã không được chấp nhận (https://developers.braintreepayments.com/reference/client-reference/javascript/v2/paypal#options) –

Các vấn đề liên quan