Вот как я это сделал. Я использовал JS на клиенте и сервере , но по большей части шаги одинаковы, даже если синтаксис отличается. На нем так мало документации - я подумал, что посмотрю, смогу ли я помочь. Даже если она совершенно другая, большая часть логики c должна быть одинаковой. В частности:
Frontend returns paymentRequest -> Server-takes-paymentRequest -> customer -> subscription -> Done
Во-первых, вам не нужно ничего делать с намерением оплаты на веб-интерфейсе. Некоторое время я был зациклен на этом.
Далее, начиная все, используя stripe.paymentRequest()
, который берет некоторые детали платежа и возвращает объект "PaymentRequest" ..
Здесь вы обрабатываете рендеринг кнопка, основанная на PaymentRequest.canMakePayment ()
Далее, как я обрабатываю, когда они нажимают кнопку для оплаты.
У paymentRequest есть метод "on", который в основном является подписчиком. Я думаю, что это называется веб-хук. Он принимает 2 аргумента, строку 'paymentmethod', указывающую, что вы ожидаете, и функцию, которой в качестве аргумента присваивается результат события, например
stripePaymentRequest.on('paymentmethod', (event) => {
const paymentMethod = event.paymentMethod
if (paymentMethod) {
// call your server and pass it the payment method
// for Server side Stripe-API handling of payment
}
event.complete('success'); // Completes the transaction and closes Google/Apple pay
});
Когда вы вызываете сервер, вы можете обработать он аналогичен карточной оплате, поскольку у вас есть способ оплаты.
1: вы создаете объект «Клиент» из полосы, используя метод оплаты. Я использовал что-то вроде
const customer = await stripe.customers.create({
payment_method: paymentMethod.id,
email: paymentMethod.billing_details.email,
invoice_settings: {
default_payment_method: paymentMethod.id,
},
});
2: вы создаете объект «Подписка» из полосы, используя Customer, я делал это так
const subscription = await stripe.subscriptions.create({
customer: customer.id,
items: [{ plan: "plan_HereIsYourPlanID" }], // <--
trial_period_days: 7,
expand: ["latest_invoice.payment_intent"],
});
3: предыдущий шаг должен быть выполнен sh все что нужно для Stripe. На данный момент у меня есть собственный код управления пользователями, чтобы отслеживать, подписан ли мой пользователь или нет. Затем вы возвращаете успех или нет - той функции, которую вы вызывали во внешнем интерфейсе, и теперь, когда все готово, вы вызываете event.complete ('success')
Надеюсь, это поможет. Извините, это не PHP, но, надеюсь, это начало.