我试图使用Stripe向信用卡收费,但出现错误。下面是我使用的代码:
import StripeCheckout from "react-stripe-checkout"
// import confirmPayment from 'stripe-element';
import { useState,useEffect } from "react";
import axios from "axios";
const key="pk_test_51MOn0RSCoZWqhGLghNbZGJNElj6EoHYkt03rWcPYTUpa1EUlMas5Rd2RY8Ta70ubtXaFVmchCdlqOPaXhkpYAQcO00i4y02duY";
export const Pay = () => {
const [stripeToken,setStripeToken]=useState(null);
const onToken=(token)=>{
setStripeToken(token)
}
useEffect(() => {
const makeRequest = async () => {
try {
const res = await axios.post("http://localhost:8080/api/checkout/payment", {
tokenId: stripeToken,
amount: 3000,
}
);
console.log(res.data)
console.log(res.status)
console.log(res.data)
} catch (err) {
console.log(err);
}
};
if (stripeToken) {
makeRequest();
}
}, [stripeToken]);
return (
<>
<div className="container-fluid">
<StripeCheckout
name="shop"
image="text"
billingAddress
shippingAddress
description="Your total is $2000"
amount={20000}
token={onToken}
stripeKey={key}
>
<button className="btn btn-success">Pay</button>
</StripeCheckout>
</div>
</>
);
}
const stripe=require("stripe")(process.env.SECRET_KEY_PAY)
exports.stripePayment=async(req,res,next)=>{
let error,status;
try{
const customer=await stripe.customers.create({
email:req.body.email,
source:req.body.token,
payment_method: ['card', 'ach_credit_transfer'],}
)
const charge=await stripe.paymentIntents.create({
amount:req.body.amount,
currency:"inr",
customer:customer.id,
description:req.body.description,
})
console.log("charge:",{charge});
status="success"
}catch(err){
console.log(err)
}
}
我尝试过的:
我尝试了以下方法来修复错误:
- 我已经检查了信用卡号码和有效期,以确保它们是正确的。
- 我试过使用不同的信用卡。
- 我已经尝试清除浏览器的缓存和cookie。
我期待的是:
我期待着信用卡成功充值。
我看到的是:
我看到以下错误消息:
StripeInvalidRequestError: Invalid string: {:"0"=>"card"}
at Function.generate (F:\React\e-commerce site\Api\node_modules\stripe\cjs\Error.js:10:20)
at res.toJSON.then.Error_js_1.StripeAPIError.message (F:\React\e-commerce site\Api\node_modules\stripe\cjs\RequestSender.js:105:54)
at processTicksAndRejections (node:internal/process/task_queues:96:5) {
1条答案
按热度按时间2fjabf4q1#
在创建Customer时,您试图将字符串数组传递给
payment_method
参数。此参数需要一个字符串,更具体地说,是现有Payment Method对象的ID。因此,API会抛出一个无效的请求错误。我建议研究一下API参考,以确保参数正确,并且发送的值有效。