2016-11-30 4 views
0

좋은 하루 모두,브레인 지불 nodeJS paymentMethodNonce는

나는 NodeJs를 사용하여 운동 브레인 결제 시스템에 노력하고 있습니다. 뷰는 HandleBars (HBS)를 사용하여 렌더링 된 다음 submision시 지불이 payment.js에서 처리됩니다. 내 문제는 신용 카드 또는 paypal 컨테이너로 braintree 지불보기에 표시되지 않습니다. 나는 확실하지 않다 경우는 HBS는 스크립트 태그를 지원하지 않습니다,하지만 난 다음

이 payment.hbs이 파일

보기 파일 파일 paymentMethodNonce 코드를 잡아 다음 payment.js에 주입해야하기 때문에

<h1> This package will cost you 7$ </h1> 
<h3> You can pay via credit card or using paypal </h3> 
      <form action="/pickup/payment/process" method="post"> 
      <fieldset> 
       <div class="pure-g"> 
       </div> 

       <br> 

       <div id="checkout"></div> 

       <b 

    utton class="btn-submit" type="submit">Pay now</button> 

       </fieldset> 
      </form> 
     </div> 
     <br> 
    <br><br> 


    <script src="https://js.braintreegateway.com/js/braintree-2.27.0.min.js"></script> 
     <script> 
      braintree.setup('<%- clientToken %>', 'dropin', { 
       container: 'checkout' 
      }); 
     </script> 

     <a href="https://www.braintreegateway.com/merchants/ID/verified" target="_blank"> 
     <img src="https://s3.amazonaws.com/braintree-badges/braintree-badge-wide-dark.png" width="280px" height ="44px" border="0"/> 

    </a> 

payment.js는 어떤 도움을 이해할 수있을 것이다

var express = require('express'); 
var router = express.Router(); 
var braintree = require('braintree'); 

var bodyParser = require('body-parser'); 


var parseUrlEnconded = bodyParser.urlencoded({ 
}); 


var util = require('util'), 
    braintree = require('braintree'); 

var gateway = braintree.connect({ 
    environment: braintree.Environment.Sandbox, 
    merchantId: '[...]', 
    publicKey: '[...]', 
    privateKey: '[...]' 
}); 

gateway.transaction.sale({ 
    amount: '7.00', extended: false 

    paymentMethodNonce: "nonce-from-the-client", 
    options: { 
    submitForSettlement: true 
    } 
}, 
    function(err, result) { 
    if (result) { 
     if (result.success) { 
     console.log("Transaction ID: " + result.transaction.id) 
     } else { 
     console.log(result.message) 
     } 
    } else { 
     console.log(err) 
    } 
}); 

파일. 모든 설명이 필요하면 알려주십시오.

+0

은 (https://developers.braintreepayments.com/start/hello-client/javascript/v3), 그것은 보인다 -method-nonce "> – tsuz

+0

고마워요. 그 입력이 그 페이지들 사이에 링크를 만들 수 있다고 생각합니다.하지만 내 주요 문제는 시작시보기에 포함 된 지불 컨테이너가 표시되지 않는다는 것입니다. 유일한 것은 브레인 트리 로고입니다 – John

+0

마우스 오른쪽 버튼을 클릭하여 해당 요소에 무슨 일이 일어 났는지 확인할 수 있습니다 ->'요소 검사 ' – tsuz

답변

0

dropin UI는 clientToken이 제공된 경우에만로드됩니다. 클라이언트 토큰을 생성하려면 payment.js 백엔드에 새 메소드를 추가해야합니다. 프론트 엔드에서이 메소드를 호출하고 clientToken을 전달하십시오. 당신이`<입력 유형 = "숨겨진"이름 = "지불을 필요로 같은 [문서]에서

btClientToken:function(req,res){ 

     gateway.clientToken.generate({}, function (err, response) { 
      if(err){ 
       res.status(400).json({'message':err}); 
      }else{ 
       res.status(200).json({clientToken: response.clientToken}); 
      } 
     }); 
    }