2016-11-30 7 views
0

Добрый день всем,Брэйнтри оплаты nodeJS paymentMethodNonce

Я пытаюсь тренировки платежной системы Braintree, используя NodeJs. Представление обрабатывается с помощью HandleBars (HBS), а затем после подачи платежа платеж обрабатывается в платежном.js. Моя проблема заключается в том, что платежная карта с помощью кредитной карты или контейнера PayPal не отображается. Я не уверен, если его потому, что HBS не поддерживает теги сценария, но мне нужно, чтобы получить код paymentMethodNonce, а затем вводят в payment.js файл

Ниже файл представления

файл payment.hbs

<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

Из [Docs] (https://developers.braintreepayments.com/start/hello-client/javascript/v3), похоже, что вам нужно '<входной тип = "скрытые" NAME =" платеж -method-nonce ">' – tsuz

+0

Спасибо за это, и я думаю, добавив, что вход может установить связь между этими страницами, но моя основная проблема заключается в том, что контейнер платежей, включенный в представление, не отображается при запуске. Единственное, что появляется, это логотип braintree. – John

+0

. Вы можете видеть, что произошло с этим элементом, щелкнув правой кнопкой мыши -> 'Inspect Element' – tsuz

ответ

0

Панельный пользовательский интерфейс будет загружаться только при условии предоставления клиентуToken. Вы должны добавить новый метод в бэкэнде 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}); 
      } 
     }); 
    } 

 Смежные вопросы

  • Нет связанных вопросов^_^