stripe-payments - 错误:根据印度法规,出口交易需要客户姓名和地址
问题描述
我正在由 Stephen Grider 开设关于 Full Stack React(React、Redux、MongoDB、Node)的 Udemy 课程。我在为付款处理添加 Stripe 结账时遇到了问题。
问题:点击“添加积分”按钮后,信用卡表格出现了。我输入详细信息并提交详细信息。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;
解决方案
将货币更改为 inr。
非 inr 交易应以美元(美元)为单位,而 inr 交易应以 inr(印度卢比)为单位。
推荐阅读
- neo4j - Neo4j 使用标签/节点/关系名称的关键字
- sql - 如何在 SQL Server 中从没有标签的 xml 文件中读取 xml 数据?
- javascript - 对象数组 - 在 Vue.js 生态系统中更新对象的正确方法
- algorithm - 变量 m 更新了多少次
- python - 如何向 NumPy 数组添加多个额外的列
- matlab - 为什么这个高斯函数会给出不一致的参数错误?
- sql - 选择语句,但表是子查询?
- google-bigquery - BigQuery:查询执行期间资源超出。无需任何昂贵的操作
- c# - 从另一个 ViewModel 更改 ViewModel 的属性
- c - 我正在尝试理解 K&R 的练习 1-21