首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Braintree payment nodeJS paymentMethodNonce

Braintree payment nodeJS paymentMethodNonce
EN

Stack Overflow用户
提问于 2016-12-01 07:45:19
回答 1查看 202关注 0票数 0

大家好,

我正在尝试使用NodeJs开发Braintree支付系统。视图使用HandleBars (HBS)呈现,然后在提交时在payment.js中处理付款。我的问题是在视图中,braintree payment by信用卡或by paypal容器不显示。我不确定是不是因为HBS不支持脚本标签,但是我需要抓取paymentMethodNonce代码,然后注入到payment.js文件中

下面是视图文件

payment.hbs文件

代码语言:javascript
复制
<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文件

代码语言:javascript
复制
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)
    }
});

任何帮助都将不胜感激。如果需要任何澄清,请让我知道。

EN

回答 1

Stack Overflow用户

发布于 2017-01-25 19:59:38

只有在提供了clientToken的情况下,才会加载下拉UI。必须在payment.js后台添加新方法才能生成客户端令牌。从你的前端调用这个方法并传递clientToken。

代码语言:javascript
复制
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});
            }
        });
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40900293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档