2016-04-08 8 views
0

Ich habe eine harte Zeit herausfinden, warum die onPaymentMethodReceived in einem gehosteten Feldern keine Werte zurückgibt. `BrainTree Hosted Fields onPaymentMethodReceived Funktion funktioniert nicht Rückgabe Nonce

<form action="" id="my-form" method="post"> 
     <label for="a">Amount</label> 
     <div id="amount"> 
      <input type="text" name="amount" value="400" id="amount" /> 
     </div> 

     <label for="card-number">Card Number</label> 
     <div id="card-number"> 
      <input type="text" name="cardNumber" value="4111111111111111" id="cardNumber" /> 
     </div> 

     <label for="cvv">CVV</label> 
     <div id="cvv"> 
      <input type="text" name="CVV" value="020" id="cv-v" /> 
     </div> 
     <label for="expiration-month">Expiration Month</label> 
     <div id="expiration-month"> 
      <input type="text" name="expirMonth" value="10" id="expirMonth" /> 
     </div> 

     <label for="expiration-year">Expiration Year</label> 
     <div id="expiration-year"> 
      <input type="text" name="expirYear" value="20" id="expirYear" /> 
     </div> 
     <input type="submit" value="Pay" id="btn_submit"/> 
    </form> 

<script> 
    var nonce0 ; 
    braintree.setup(clientToken, "custom", 
    { 
     id: "my-form", 
     hostedFields: { 
      number: { 
       selector: "#card-number" 
      }, 
      cvv: { 
       selector: "#cvv" 
      }, 
      expirationMonth: { 
       selector: "#expiration-month" 
      }, 
      expirationYear: { 
       selector: "#expiration-year" 
      }, 
     }, 
     onPaymentMethodReceived:function(nonce){ 
      console.log("in onPaymentMethodReceived"); 
      console.log(nonce); 
      nonce0 = nonce; 
      alert('OnPaymentMR'); 
      console.log(JSON.stringify(nonce)); 
      return false; 
     }, 
     onError :function(obj){ 
      alert('onError'); 
      console.log(JSON.stringify(obj)); 
    } 
    }); 
    console.log('BTree = '+ nonce0); 
    </script> 

` Ich wollte die Nonce zurück zu speichern, aber nichts geschieht, console.log wird keinen Wert zeigt. Auch der onError tut nichts.
Mit Haltepunkten kann ich sagen, dass die versteckte Nonce zurückkommt, aber die Callback-Funktion nicht ausgelöst wird.
Ich habe es mit der Dropin-UI versucht und es funktioniert und ich kann die Nonce von der onPaymentMethodReceived erhalten. Nicht sicher, was ich falsch mache.

Antwort

2

Vollständige Offenlegung: Ich als Entwickler arbeiten für Braintree

Wenn Felder gehosteten sollte die Form umfassen nur einen div container for each payment field. Ihre Implementierung würde etwa so aussehen:

Das Braintree Setup-Skript wird dann iFrames rendern, um Zahlungsfeldeingaben zu verarbeiten. Wenn Sie weiterhin Probleme haben, können Sie sich jederzeit an Braintree support wenden.

+0

Vielen Dank für die Antwort. Ich Daten aus dem Formular wird an die API übergeben, mein Problem ist, dass die Rückruffunktion von onPaymentMethodReceived keine Werte zurückgibt. Wenn ich einen Haltepunkt in das Skript einfüge, kann ich sehen, dass die Nonce von der Braintree-API zurückkommt, aber nicht die onPaymentMethodReceived-Funktion aufruft. – user1741614

+0

Wir konnten das Problem, das Sie mit diesen Code-Snippets beschreiben, nicht reproduzieren. An dieser Stelle empfehle ich Ihnen, [Braintree Support] (https://support.braintreepayments.com) zu kontaktieren, um die Besonderheiten Ihrer Implementierung zu besprechen. –

0

In "onPaymentMethodReceived" -Methode müssen Sie "nonce.nonce" var versuchen, Nonce in Antwort zu überprüfen. wie -

onPaymentMethodReceived:function(obj) { 
    var nonce_from_braintree = obj.nonce     
} 

Auch können Sie folgenden Link überprüfen detaillierteren Skript zu bekommen braintree Payment Gateway Integration mit gehosteten Feld zu manipulieren.

http://www.ilovephp.net/php/simple-braintree-paypal-payment-gateway-integration-in-php-with-demo-examples/

hoffe das hilft dir ... :)

Verwandte Themen