我正在创建一个简单的结帐应用,该应用将一些订阅实现为产品。我在后端使用PHP的Stripe Elements。
到目前为止,订单流程类似于:
用户填写表单->表单提交到./create-customer.php
./create-customer.php
将customer-id
返回给客户端
然后,将包含产品/数量的数据发送到创建了PaymentIntent的./payment-intent.php
。
这对于常规的旧PaymentIntent
一次性费用有效;但是,当涉及到订阅时,事情显然会有所不同,并且客户需要附加一种付款方式。
使用Stripe Elements,我的印象是我不必触摸卡信息即可避免任何合规性,责任等。
目前,我的“订阅”创建如下:
\Stripe\Subscription::create([
'customer' => $customer_id,
'items' => [
[
'price' => 'price_1',
'quantity' => $qty_1,
'price' => 'price_2',
'quantity' => $qty_2,
],
],
]);
这是我的$.post
方法,它将数据发送到PaymentIntent
文件。
$.post('./payment-intent.php', data, null, "json")
.done(function(data) {
clientSecret = data.client_secret;
stripe.confirmCardPayment(clientSecret, {
payment_method: {
card: card,
}
}).then(function(result) {
if (result.error) {
console.log(result.error.message);
} else {
if (result.paymentIntent.status === 'succeeded') {
console.log("Payment success.");
}
}
})
})
.fail(function(xhr, status, error) {
console.log("Fail");
});
卡片信息如何从Element到PHP进行存储?
我已经研究了令牌化,但是这似乎需要传递卡信息服务器端。
谢谢。