Разъяснение функциональности жетона полосы - PullRequest
0 голосов
/ 29 июня 2018

Итак, я нахожусь на финальной стадии разработки небольшого интернет-магазина, и у меня возникли некоторые трудности с пониманием того, что содержит токен полоски, как подобрать его на сервере 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, // ? remember to change this!
    // this metadata object property can hold any
    // extra private meta data (like IP address)
    metadata: {},
  });
}

Однако я не уверен, как удостовериться, что необходимые детали, такие как адрес доставки, электронная почта клиента, товарный манифест и тому подобное, что я собрал на своем клиенте, в конечном итоге, где мне это нужно, в счете или где-то в моем аккаунте на полосе. Я также точно не знаю, как происходит зарядка (я знаю, что для этого мне нужен файл app.js, так что я был бы признателен за некоторые указания на этом этапе, потому что он действительно делал все возможное.

Ответы [ 2 ]

0 голосов
/ 01 июля 2018
            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,
0 голосов
/ 29 июня 2018

Token.id - это то, что вы хотите использовать в качестве source при создании Заряда, и похоже, что это то, что вы делаете, так что вы должны хорошо идти с этой стороны.

В настоящее время вы должны найти письмо на req.body.stripeEmail; на самом деле, вы должны найти все следующее в 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

Для того, чтобы получить адрес доставки, вам также необходимо передать его; вы можете найти их в аргументе args функции token(), так что вам просто нужно взять то, что вам нужно, и отправить его вместе с вами в форме.

...