2016-04-08 8 views
0

なぜ、ホストされているフィールドのonPaymentMethodReceivedが値を返さないのかを調べるのに苦労しています。 BrainTree Hosted Fields onPaymentMethodReceived関数が動作しない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> 

``

私はnonceが返さ保存したかったが、何も起こっていない、にconsole.logは任意の値を示していません。 onErrorでも何もしていません。
ブレークポイントを使用すると、非表示のnonceが戻ってきているが、コールバック関数が起動していないことがわかります。
Dropin-UIで試してみましたが、うまくいき、onPaymentMethodReceivedからnonceを取得できます。 私が間違っていることがわかりません。

答えて

2

全開示:ホストされたフィールド、フォームのみdiv container for each payment fieldを含むべきであるを使用する場合、私はブレーントリー

用現像剤として働きます。あなたの実装は次のようになります:

<form action="" id="my-form" method="post"> 
    <label for="a">Amount</label> 
    <div id="amount"></div> 

    <label for="card-number">Card Number</label> 
    <div id="card-number"></div> 

    <label for="cvv">CVV</label> 
    <div id="cvv"></div> 

    <label for="expiration-month">Expiration Month</label> 
    <div id="expiration-month"></div> 

    <label for="expiration-year">Expiration Year</label> 
    <div id="expiration-year”></div> 

    <input type="submit" value="Pay" id="btn_submit"/> 
</form> 

Braintreeセットアップスクリプトは、支払フィールド入力を処理するためにiframeをレンダリングします。問題が引き続き発生する場合は、いつでもBraintree supportと連絡を取り合うことができます。

+0

感謝を助けます。フォームからのデータがAPIに渡されています。私の問題は、onPaymentMethodReceivedのコールバック関数が値を返さないことです。私がスクリプトにブレークポイントを置くと、nonceがbraintree APIから戻ってくるのがわかりますが、onPaymentMethodReceived関数は呼び出されません。 – user1741614

+0

これらのコードスニペットで説明している問題を再現できませんでした。この時点で、あなたの実装の詳細を議論するために[Braintree support](https://support.braintreepayments.com)に連絡することをお勧めします。 –

0

"onPaymentMethodReceived"メソッドでは、 "nonce.nonce" varを試して応答のノンスをチェックする必要があります。 のように -

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

また、あなたは、ホストされたフィールドを持つブレーントリー支払いゲートウェイの統合を操作するために、より詳細なスクリプトを取得するには下のリンクをチェックすることができます。

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

ホープこれは、応答のためにあなた... :)

関連する問題