错误:根据印度法规,出口交易需要客户名称和地址

问题描述 投票:0回答:3

我正在学习 Stephen Grider 教授的关于全栈 React(React、Redux、MongoDB、Node)的 Udemy 课程。我在添加 Stripe checkout 进行付款处理时遇到了问题。

问题:单击“添加积分”按钮后,会显示信用卡表格。我输入详细信息并提交详细信息。 Stripe 向我发送一个令牌,我将该令牌发送到“api/stripe”路线,在那里我完成收费,向用户模型添加 5 个积分,并将更新后的用户文档返回到前端。但是,我无法让用户回来。有错误显示:错误:根据印度法规,出口交易需要客户名称和地址。我附上了完整错误消息的图片。

如何修复该错误?请注意,我在前端使用react-stripe-checkout包,在后端使用stripe包,并使用Redux Toolkit进行状态管理。所有必要的代码示例如下。

Payments.js
import React from "react";
import StripeCheckout from "react-stripe-checkout";
import { Button } from "react-bootstrap";
import { handleToken } from "./tokenSlice";
import { useDispatch } from "react-redux";

const Payments = () => {
  const dispatch = useDispatch();
  return (
    <StripeCheckout
      name="Emaily"
      description="$5 for 5 email credits"
      amount={500}
      token={(token) => dispatch(handleToken(token))}
      stripeKey={process.env.REACT_APP_STRIPE_KEY}
    >
      <Button variant="outline-warning">Add Credits</Button>
    </StripeCheckout>
  );
};

export default Payments;
billingRoutes.js
const express = require("express");
const keys = require("../config/keys");
const stripe = require("stripe")(keys.stripeSecretKey);

const router = express.Router();

router.post("/", async (req, res) => {
  const charge = await stripe.charges.create({
    amount: 500,
    currency: "usd",
    description: "$5 for 5 credits",
    source: req.body.id,
  });
  req.user.credits += 5;
  const user = await req.user.save();
  res.send(user);
});

module.exports = router;
tokenSlice.js
import { createSlice, createAsyncThunk } from "@reduxjs/toolkit";
import axios from "axios";

const initialState = {
  status: "idle",
};

export const handleToken = createAsyncThunk(
  "token/handleToken",
  async (token) => {
    const { data } = await axios.post("/api/stripe", token);
    return data;
  }
);

const tokenSlice = createSlice({
  name: "token",
  initialState,
  reducers: {},
  extraReducers: {
    [handleToken.pending]: (state, action) => {
      state.status = "loading";
    },
    [handleToken.fulfilled]: (state, action) => {
      state.status = "succeeded";
      state.userInfo = action.payload;
    },
  },
});

export default tokenSlice.reducer;

enter image description here

stripe-payments react-fullstack
3个回答
1
投票

将货币更改为印度卢比。

非inr交易应以美元(美元)为单位,inr交易应以inr(印度卢比)为单位。


0
投票

您没有将所有必需的信息传递给 Stripe。目前,您传递给 Stripe 的费用对象包括金额、货币和描述,但您还需要根据 Stripe 对印度出口费用的要求提供客户的姓名和账单地址,详细信息请参见:

https://support.stripe.com/questions/requirements-for-india-export-charges#:~:text=Charge%20must%20be%20presented%20in,with%20cards%20issued%20outside%20India


0
投票

找到解决方案:使用印度测试卡

我意识到问题中提供的代码没有问题。主要问题在于用于测试目的的卡。

为了以印度卢比进行测试,建议使用以下印度测试签证卡:

印度测试签证卡:4000 0035 6000 0008

我有类似的问题并且正在使用 django。使用信用卡号=4000 0035 6000 0008。(请勿使用信用卡号= 4242 4242 4242 4242)。

© www.soinside.com 2019 - 2024. All rights reserved.