通过ReactNative实现以下代码,我可以成功完成Stripe支付。
const openPaymentSheet = async (paymentIntentClientSecret: string, ephemeralKey: string, stripeId: string) => {
try {
const { error } = await initPaymentSheet({
customerId: stripeId,
customerEphemeralKeySecret: ephemeralKey,
paymentIntentClientSecret: paymentIntentClientSecret,
merchantDisplayName: 'Workout Wallet'
});
if (error) {
captureLog('Error in init payment sheet: ', error)
Alert.alert('Error', error.message);
return;
}
const { error: paymentError } = await presentPaymentSheet();
if (paymentError) {
captureLog('Error in payment: ', paymentError)
Alert.alert('Error', paymentError.message);
} else {
Alert.alert('Success', 'Your payment was confirmed successfully!');
}
} catch (err) {
console.log("Failed to open payment sheet: ", err);
Alert.alert('Error', 'Failed to open payment sheet');
}
};
在服务器上,我能够从 Stripe 捕获成功和失败事件。
在客户端,成功付款后,我必须根据该交易将发票详细信息、订单摘要、折扣详细信息等保存在数据库中。但客户端应用程序无法获取交易 ID 或其他任何内容的详细信息。如何捕获交易 ID 以将自定义详细信息保存在我的数据库中?
保存发票详细信息、订单摘要、折扣详细信息等业务逻辑应始终在 webhook 处理程序中进行。您永远不应该通过客户端执行此操作,因为客户可以在保存数据之前关闭浏览器窗口,并且数据将会丢失。您可以在服务器上监听
payment_intent.succeeded
webhook 事件,并使用 PaymentIntent ID 通过 Stripe API 获取任何相关对象/信息,并将其保存到您的数据库中。