让 Stripe 接受预定义的产品及其价格
Make Stripe accept predefined Products and their prices
我正在制作一个通过 Stripe 管理付款的 React 应用程序。 Stripe 有“产品”,您可以在其中将产品和价格 ID 复制到您的代码中,然后 Stripe 将注册您的付款并将其 link 到所选产品。我是 Stripe 的新手,我不太确定该怎么做。目前,我在“描述”字段中传递产品名称,并将价格作为整数传递。
这是我的 Stripe 元素代码:
<Elements stripe={stripePromise}>
<CheckoutForm price='1000' name='orientacion'/>
</Elements>
价格和名称道具被传递给 CheckoutFrom 组件:
import React from 'react';
import {loadStripe} from '@stripe/stripe-js';
import { Elements, CardElement, useStripe, useElements } from "@stripe/react-stripe-js";
import {Button, Form} from 'react-bootstrap';
import axios from 'axios';
const stripePromise = loadStripe('pk_test_MYPUBLICKEY');
const CheckoutForm = (props) => {
const stripe = useStripe();
const elements = useElements();
const handleSubmit = async (e) => {
e.preventDefault();
const {error, paymentMethod} = await stripe.createPaymentMethod({
type: 'card',
card: elements.getElement(CardElement)
});
if (!error) {
console.log(paymentMethod);
const { id } = paymentMethod;
console.log('id');
console.log(id)
const data = await axios.post('http://localhost:3001/api/checkout',
{
id,
amount: props.price,
description: props.name
}
);
console.log(data);
} else {
console.log(error);
}
}
return (
<Form onSubmit ={handleSubmit}>
<CardElement />
<p>Price: {props.price/100} eur</p>
<Button type='submit'>
Comprar
</Button>
</Form>
)
}
export default CheckoutForm;
它们从那里被发送到我的本地服务器:
const express = require('express');
const Stripe = require('stripe');
const cors = require('cors');
const app = express();
const stripe = new Stripe('sk_test_51IRxezLeEfBz7v63tNaTPPWBdlMaVCVHxVDsqQ5Z4BzVxIf5fgxI4fTkznzt1S8ZRNnyc146VPqA29I4lmsNl1C600nnih2m6x');
app.use(cors({origin: 'http://localhost:3000'}));
app.use(express.json());
app.post('/api/checkout', async (req, res) => {
const {id, amount, description} = req.body;
const payment = await stripe.paymentIntents.create({
amount,
currency: "EUR",
description,
payment_method: id,
confirm: true
});
console.log(payment);
res.send({message: 'Sucess payment'});
});
app.listen(3001, () => {
console.log('server listened', 3001)
})
将其发送到 Stripe。那么如何告诉 stripe 使用价格和产品 ID?
与 PaymentIntent 相比,产品和价格与 Subscription 和 Checkout 相关联。所以不,您不能将现有产品和价格附加到 PaymentIntent。
例如,您可以将产品和价格附加到结账:https://stripe.com/docs/api/checkout/sessions/create#create_checkout_session-line_items or Subscription: https://stripe.com/docs/api/subscriptions/create
如果您想实施 PaymentIntent,我的建议是在您的网站上列出您的产品供用户选择,然后从价格中提取 amount
并传递到 PaymentIntent 的 amount
.
我正在制作一个通过 Stripe 管理付款的 React 应用程序。 Stripe 有“产品”,您可以在其中将产品和价格 ID 复制到您的代码中,然后 Stripe 将注册您的付款并将其 link 到所选产品。我是 Stripe 的新手,我不太确定该怎么做。目前,我在“描述”字段中传递产品名称,并将价格作为整数传递。
这是我的 Stripe 元素代码:
<Elements stripe={stripePromise}>
<CheckoutForm price='1000' name='orientacion'/>
</Elements>
价格和名称道具被传递给 CheckoutFrom 组件:
import React from 'react';
import {loadStripe} from '@stripe/stripe-js';
import { Elements, CardElement, useStripe, useElements } from "@stripe/react-stripe-js";
import {Button, Form} from 'react-bootstrap';
import axios from 'axios';
const stripePromise = loadStripe('pk_test_MYPUBLICKEY');
const CheckoutForm = (props) => {
const stripe = useStripe();
const elements = useElements();
const handleSubmit = async (e) => {
e.preventDefault();
const {error, paymentMethod} = await stripe.createPaymentMethod({
type: 'card',
card: elements.getElement(CardElement)
});
if (!error) {
console.log(paymentMethod);
const { id } = paymentMethod;
console.log('id');
console.log(id)
const data = await axios.post('http://localhost:3001/api/checkout',
{
id,
amount: props.price,
description: props.name
}
);
console.log(data);
} else {
console.log(error);
}
}
return (
<Form onSubmit ={handleSubmit}>
<CardElement />
<p>Price: {props.price/100} eur</p>
<Button type='submit'>
Comprar
</Button>
</Form>
)
}
export default CheckoutForm;
它们从那里被发送到我的本地服务器:
const express = require('express');
const Stripe = require('stripe');
const cors = require('cors');
const app = express();
const stripe = new Stripe('sk_test_51IRxezLeEfBz7v63tNaTPPWBdlMaVCVHxVDsqQ5Z4BzVxIf5fgxI4fTkznzt1S8ZRNnyc146VPqA29I4lmsNl1C600nnih2m6x');
app.use(cors({origin: 'http://localhost:3000'}));
app.use(express.json());
app.post('/api/checkout', async (req, res) => {
const {id, amount, description} = req.body;
const payment = await stripe.paymentIntents.create({
amount,
currency: "EUR",
description,
payment_method: id,
confirm: true
});
console.log(payment);
res.send({message: 'Sucess payment'});
});
app.listen(3001, () => {
console.log('server listened', 3001)
})
将其发送到 Stripe。那么如何告诉 stripe 使用价格和产品 ID?
与 PaymentIntent 相比,产品和价格与 Subscription 和 Checkout 相关联。所以不,您不能将现有产品和价格附加到 PaymentIntent。
例如,您可以将产品和价格附加到结账:https://stripe.com/docs/api/checkout/sessions/create#create_checkout_session-line_items or Subscription: https://stripe.com/docs/api/subscriptions/create
如果您想实施 PaymentIntent,我的建议是在您的网站上列出您的产品供用户选择,然后从价格中提取 amount
并传递到 PaymentIntent 的 amount
.