【问题标题】:React Stripe Payment Create Customer and Order / Shipping Address etcReact Stripe Payment 创建客户和订单/送货地址等
【发布时间】:2019-01-31 21:18:18
【问题描述】:

我使用 gatsby react 和 aws lambda 创建了条带支付页面。但此代码不会创建客户数据,例如(送货地址、电子邮件等)

Lamdba 代码

const stripe = require("stripe")(process.env.STRIPE_SECRET_KEY);

module.exports.handler = (event, context, callback) => {
  console.log("creating charge...");

  // Pull out the amount and id for the charge from the POST
  console.log(event);
  const requestData = JSON.parse(event.body);
  console.log(requestData);
  const amount = requestData.amount;
  const token = requestData.token.id;

  // Headers to prevent CORS issues
  const headers = {
    "Access-Control-Allow-Origin": "*",
    "Access-Control-Allow-Headers": "Content-Type"
  };

  return stripe.charges
    .create({
      // Create Stripe charge with token
      amount,
      source: token,
      currency: "usd",
      description: "Tshirt"
    })
    .then(charge => {
      // Success response
      console.log(charge);
      const response = {
        headers,
        statusCode: 200,
        body: JSON.stringify({
          message: `Charge processed!`,
          charge
        })
      };
      callback(null, response);
    })
    .catch(err => {
      // Error response
      console.log(err);
      const response = {
        headers,
        statusCode: 500,
        body: JSON.stringify({
          error: err.message
        })
      };
      callback(null, response);
    });
};

盖茨比支付码

代码有效,付款有效。但运输细节不起作用。

openStripeCheckout(event) {
    event.preventDefault();
    this.setState({ disabled: true, buttonText: "WAITING..." });
    this.stripeHandler.open({
      name: "Demo Product",
      amount: amount,
      shippingAddress: true,
      billingAddress: true,
      description: "",
       token: (token, args) => {
        fetch(`AWS_LAMBDA_URL`, {
          method: "POST",
          body: JSON.stringify({
            token,
            args,
            amount,
          }),
          headers: new Headers({
            "Content-Type": "application/json",
          }),
        })
          .then(res => {
            console.log("Transaction processed successfully");
            this.resetButton();
            this.setState({ paymentMessage: "Payment Successful!" });
            return res.json();
          })
          .catch(error => {
            console.error("Error:", error);
            this.setState({ paymentMessage: "Payment Failed" });
          });
      },
    });
  } 

我想查看客户数据、送货地址等。

感谢您的帮助。

【问题讨论】:

  • 在您的后端,您似乎提取了金额和令牌 ID,但没有提取运输数据。当您console.log(requestData); 时,您是否看到在您的前端输入的args(运输数据)的内容?你可以从requestData.token.emailstripe.com/docs/checkout#required拉邮件
  • @duck 感谢您的回答。但我不知道我该怎么做?你能写示例代码吗?

标签: javascript node.js reactjs aws-lambda stripe-payments


【解决方案1】:

帐单地址和送货地址都可以在您收集的令牌回调的args-参数中找到。

https://jsfiddle.net/qh7g9f8w/

var handler = StripeCheckout.configure({
  key: 'pk_test_xxx',
  locale: 'auto',
  token: function(token, args) {

    // Print the token response
    $('#tokenResponse').html(JSON.stringify(token, null, '\t'));

    // There will only be args returned if you include shipping address in your config
    $('#argsResponse').html(JSON.stringify(args, null, '\t'));

  }
});

【讨论】:

    猜你喜欢
    • 2022-10-19
    • 2014-08-30
    • 1970-01-01
    • 2016-07-26
    • 1970-01-01
    • 2019-09-13
    • 2017-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多