2016-04-08 75 views
0

我很難找出託管字段中的onPaymentMethodReceived爲什麼沒有返回任何值。 `BrainTree託管字段onPaymentMethodReceived函數不工作返回隨機數

<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> 

` 我想存儲的隨機數返回,但什麼也沒發生,執行console.log沒有顯示任何值。即使onError也沒有做任何事情。
使用斷點,我可以告訴隱藏的隨機數回來,但回調函數沒有被解僱。
我試過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支持](https://support.braintreepayments.com)聯繫,討論您的實施細節。 –