Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 关于条带令牌功能的澄清_Javascript_Node.js_Stripe Payments_Stripe.js - Fatal编程技术网

Javascript 关于条带令牌功能的澄清

Javascript 关于条带令牌功能的澄清,javascript,node.js,stripe-payments,stripe.js,Javascript,Node.js,Stripe Payments,Stripe.js,因此,我目前正处于设计一个小型网上商店的最后阶段,我很难理解stripe令牌包含什么,如何在node.js服务器上获取它等等 目前,我的客户端代码如下所示: <div style="text-align: center;"> <form id="paymentForm" action="//httpbin.org/post" method="POST"> <input type="hidden" id="stri

因此,我目前正处于设计一个小型网上商店的最后阶段,我很难理解stripe令牌包含什么,如何在node.js服务器上获取它等等

目前,我的客户端代码如下所示:

        <div style="text-align: center;">

        <form id="paymentForm" action="//httpbin.org/post" method="POST">
          <input type="hidden" id="stripeToken" name="stripeToken" />
          <input type="hidden" id="stripeEmail" name="stripeEmail" />
            <input type="hidden" id="cartTotal" name="cartTotal" />
          <input type="hidden" id="cartContents" name="cartContents" />
        </form>

        <p><input type="button" class="button" id="purchaseButton" value="チェックアウト"></p>


        <script>

            var totalCost = 0;
            var totalCartLoad = "";
            totalCost = localStorage.getItem('totalCartPrice');
            totalCartLoad = localStorage.getItem('whatsInCart');
            totalCartLoad = totalCartLoad.replace('undefined','');
            totalCartLoad = '_____________________________________' + totalCartLoad;
            var finalCartLoad = String(totalCartLoad); //convert it to a string for display



            var handler = StripeCheckout.configure({
              key: 'pk_test_6pRNASCoBOKtIshFeQd4XMUh',
              token: function(token) {
                $("#stripeToken").val(token.id);
                $("#stripeEmail").val(token.email);
                $("#cartTotal").val(totalCost);
                    $("#cartContents").val(finalCartLoad);
                $("#paymentForm").submit();
              }
            });

            $('#purchaseButton').on('click', function(e) {


              // Open Checkout with further options
              handler.open({
                    name: "チェックアウト",
                    description: finalCartLoad,
                    shippingAddress: true,
                    billingAddress: true,
                    zipCode: true,
                    allowRememberMe: true,
                    currency: 'JPY',
                    amount: totalCost
              });
              e.preventDefault();
            });

            // Close Checkout on page navigation
            $(window).on('popstate', function() {
              handler.close();
            });

        </script>

    </div>
const stripe = require("stripe")("sk_test_BQokikJOvBiI2HlWgH4olfQ2");

module.exports = (req) => {
  // the token is generated by Stripe and POST'ed
  // to the `action` URL in our form
  const token = req.body.stripeToken;

  // now we create a charge which returns a `promise`
  // so we need to make sure we correctly handle
  // success and failure, but that's outside of this
  // function (and we'll see it later)
  return stripe.charges.create({
    // ensures we send a number, and not a string
    amount: parseInt(process.env.STRIPE_COST, 10),
    currency: process.env.STRIPE_CCY,
    source: token,
    description: process.env.STRIPE_DESCRIPTION, // The 
Token.id
is what you want to use as the
source
when creating the Charge, and it looks like that's what you're doing, so you should be good to go from that side.

You should currently find the email at
req.body.stripeEmail
; in fact, you should find all of the following in
req.body
:

$("#stripeToken").val(token.id);        // req.body.stripeToken
$("#stripeEmail").val(token.email);     // req.body.stripeEmail
$("#cartTotal").val(totalCost);         // req.body.cartTotal
$("#cartContents").val(finalCartLoad);  // req.body.cartContents

var总成本=0; var totalCartLoad=“”; totalCost=localStorage.getItem('totalCartPrice'); totalCartLoad=localStorage.getItem('WhatsCart'); totalCartLoad=totalCartLoad.replace('undefined',''); totalCartLoad=''.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.''.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'总Cartload; var finalCartLoad=字符串(totalCartLoad)//将其转换为字符串以供显示 var handler=StripeCheckout.configure({ 键:“pk_测试6pRNASCoBOKtIshFeQd4XMUh”, 令牌:函数(令牌){ $(“#stripeToken”).val(token.id); $(“#stripeEmail”).val(token.email); 美元(“#cartTotal”).val(总成本); $(“#cartContents”).val(finalCartLoad); $(“#paymentForm”).submit(); } }); $('purchaseButton')。在('click',函数(e)上{ //打开带有更多选项的签出 handler.open({ 姓名:“チェックアウト", 说明:finalCartLoad, 发货地址:对, billingAddress:是的, 真的, 我:是的, 货币:日元, 金额:总成本 }); e、 预防默认值(); }); //关闭页面导航上的签出 $(窗口).on('popstate',function()){ handler.close(); });
我的服务器代码如下所示:

        <div style="text-align: center;">

        <form id="paymentForm" action="//httpbin.org/post" method="POST">
          <input type="hidden" id="stripeToken" name="stripeToken" />
          <input type="hidden" id="stripeEmail" name="stripeEmail" />
            <input type="hidden" id="cartTotal" name="cartTotal" />
          <input type="hidden" id="cartContents" name="cartContents" />
        </form>

        <p><input type="button" class="button" id="purchaseButton" value="チェックアウト"></p>


        <script>

            var totalCost = 0;
            var totalCartLoad = "";
            totalCost = localStorage.getItem('totalCartPrice');
            totalCartLoad = localStorage.getItem('whatsInCart');
            totalCartLoad = totalCartLoad.replace('undefined','');
            totalCartLoad = '_____________________________________' + totalCartLoad;
            var finalCartLoad = String(totalCartLoad); //convert it to a string for display



            var handler = StripeCheckout.configure({
              key: 'pk_test_6pRNASCoBOKtIshFeQd4XMUh',
              token: function(token) {
                $("#stripeToken").val(token.id);
                $("#stripeEmail").val(token.email);
                $("#cartTotal").val(totalCost);
                    $("#cartContents").val(finalCartLoad);
                $("#paymentForm").submit();
              }
            });

            $('#purchaseButton').on('click', function(e) {


              // Open Checkout with further options
              handler.open({
                    name: "チェックアウト",
                    description: finalCartLoad,
                    shippingAddress: true,
                    billingAddress: true,
                    zipCode: true,
                    allowRememberMe: true,
                    currency: 'JPY',
                    amount: totalCost
              });
              e.preventDefault();
            });

            // Close Checkout on page navigation
            $(window).on('popstate', function() {
              handler.close();
            });

        </script>

    </div>
const stripe = require("stripe")("sk_test_BQokikJOvBiI2HlWgH4olfQ2");

module.exports = (req) => {
  // the token is generated by Stripe and POST'ed
  // to the `action` URL in our form
  const token = req.body.stripeToken;

  // now we create a charge which returns a `promise`
  // so we need to make sure we correctly handle
  // success and failure, but that's outside of this
  // function (and we'll see it later)
  return stripe.charges.create({
    // ensures we send a number, and not a string
    amount: parseInt(process.env.STRIPE_COST, 10),
    currency: process.env.STRIPE_CCY,
    source: token,
    description: process.env.STRIPE_DESCRIPTION, // The 
Token.id
is what you want to use as the
source
when creating the Charge, and it looks like that's what you're doing, so you should be good to go from that side.

You should currently find the email at
req.body.stripeEmail
; in fact, you should find all of the following in
req.body
:

$("#stripeToken").val(token.id);        // req.body.stripeToken
$("#stripeEmail").val(token.email);     // req.body.stripeEmail
$("#cartTotal").val(totalCost);         // req.body.cartTotal
$("#cartContents").val(finalCartLoad);  // req.body.cartContents
const stripe=require(“stripe”)(“sk_test_bkokikjovbiii2hlwgh4olfq2”);
module.exports=(请求)=>{
//令牌由Stripe和POST'ed生成
//到我们表单中的'action'URL
const token=req.body.stripeToken;
//现在我们创建一个返回“承诺”的费用`
//因此,我们需要确保正确处理
//成功和失败,但那不在这范围之内
//函数(稍后我们将看到)
返回stripe.charges.create({
//确保我们发送的是数字,而不是字符串
金额:parseInt(process.env.STRIPE_成本,10),
货币:process.env.STRIPE\u CCY,
资料来源:token,

description:process.env.STRIPE\u description,//令牌.id
是您在创建费用时想要用作
源代码的,看起来您正在这样做,因此您应该从这一方面出发

您当前应该在
req.body.stripeEmail
中找到该电子邮件;事实上,您应该在
req.body
中找到以下所有内容:

            var handler = StripeCheckout.configure({
              key: 'pk_test_6pRNASCoBOKtIshFeQd4XMUh',
              token: function(token) {
                $("#stripeToken").val(token.id);
                $("#stripeEmail").val(token.email);
                $("#cartTotal").val(totalCost);
                    $("#cartContents").val(finalCartLoad);
                    $("#userShippingA").val(token.shippingAddress);
                    $("#userBillingA").val(token.billingAddress);   
                $("#paymentForm").submit();
              }
            });


  return stripe.charges.create({
// ensures we send a number, and not a string
amount: parseInt(process.env.STRIPE_COST, 10),
currency: process.env.STRIPE_CCY,
source: token,
description: req.body.cartContents,
shippingAddress: req.body.shippingAddress,
billingAddress: req.body.billingAddress,
email: req.body.stripeEmail,

为了获得发货地址,您还需要传递这些地址;您可以在
标记()的参数中找到它们
函数,因此您只需从那里提取所需内容,并以您的形式发送。

令牌.id
是您在创建费用时想要用作
源代码的内容,看起来这就是您正在做的,所以您应该从这一方面出发

您当前应该在
req.body.stripeEmail
中找到该电子邮件;事实上,您应该在
req.body
中找到以下所有内容:

            var handler = StripeCheckout.configure({
              key: 'pk_test_6pRNASCoBOKtIshFeQd4XMUh',
              token: function(token) {
                $("#stripeToken").val(token.id);
                $("#stripeEmail").val(token.email);
                $("#cartTotal").val(totalCost);
                    $("#cartContents").val(finalCartLoad);
                    $("#userShippingA").val(token.shippingAddress);
                    $("#userBillingA").val(token.billingAddress);   
                $("#paymentForm").submit();
              }
            });


  return stripe.charges.create({
// ensures we send a number, and not a string
amount: parseInt(process.env.STRIPE_COST, 10),
currency: process.env.STRIPE_CCY,
source: token,
description: req.body.cartContents,
shippingAddress: req.body.shippingAddress,
billingAddress: req.body.billingAddress,
email: req.body.stripeEmail,

为了获得发货地址,您还需要传递这些地址;您可以在
标记()的参数中找到它们
函数,所以您只需从那里提取所需内容并以您的表单发送即可。

抱歉,只是检查一下,这是服务器端的正确实现吗?描述:process.env.STRIPE\u描述,发货地址:process.env.STRIPE\u发货地址,账单地址:process.env.STRIPE\u账单地址,不,您希望以表单元素的形式发送它们,并从req.body获取它们。感谢您的澄清。我已经用现在的答案添加了一个答案。抱歉,只是检查一下,这是服务器端的正确实现吗?描述:process.env.STRIPE\u description,shippingAddress:process.env.STRIPE\u shippingAddress,billingAddresss:process.env.STRIPE\u BILLINGADDRESS,不,您希望以表单元素的形式发送它们,并从req.body获取它们。感谢您的澄清。我已经用现在的答案添加了一个答案。这将从环境变量获取成本,并且对每个人都是一样的(假设您设置了环境变量)。地址位于令牌函数的第二个参数中,如我在回答中链接的文档中所述。此处的内容无效。确定。我已将签出令牌创建更改为:token:function(token,args){我正在尝试阅读带有描述的args:args.cartContents等等。
args
只包含这里列出的内容:其余的-你的东西-你必须从你的表单中传递过来。谢谢。最终实现了一个paypal帐户,不需要用卡支付表单。它工作得更好。这会让你满意的r从一个环境变量中获取成本,每个人的成本都是相同的(假设您已经设置了环境变量)。地址位于令牌函数的第二个参数中,如我在回答中链接的文档所述。您在这里得到的不会起作用。好的。我已将签出令牌创建更改为:token:function(token,args){我正在尝试阅读带有描述的args:args.cartContents等等。
args
只包含这里列出的内容:其余的-你的东西-你必须从表单中传递过来。谢谢