我很难找到一个不是UIKit的解决方案,或者一个需要购买的解决方案。
我的项目试图在SwiftUI中集成Stripe,使用node.js Firebase函数进行后端处理。
我在UIViewRepresentable中构建了一个STPPaymentCardTextField。这使我可以通过State获得客户的信用卡详细信息。
@State var params: STPPaymentMethodCardParams = STPPaymentMethodCardParams()
SwiftUI文本字段
StripePaymentCardTextField(cardParams: $params, isValid: $isValid)
然后我们可以建立像…这样的支付方法。。
let paymentMethodParams = STPPaymentMethodParams(card: params, billingDetails: billingDetails, metadata: nil)
现在我可以很容易地将信用卡详细信息传递到我的后端,并使用手动添加卡
添加支付方式的功能
const createPaymentMethods = functions.https.onCall(async (data, context) => {
const paymentMethod = await stripe.paymentMethods.create({
customer: '{{CUSTOMER_ID}}',
payment_method: '{{PAYMENT_METHOD_ID}}',
}, {
stripeAccount: '{{CONNECTED_STRIPE_ACCOUNT_ID}}',
});
}
但我知道这是不好的做法。我发现这个帖子可能是";"重复";,但却是最相关的答案。添加客户';s条纹中的信用卡信息。然而,该用户正在使用reactjs,并希望将信用卡详细信息存储在数据库中,我只想将其传递给Stripe。
难道我没有办法将信用卡数据发送到Stripe,取回paymentMethod ID,然后将其传递到我的后端或其他什么地方吗?我已经解决了订阅和购买收费问题,如果不经过付款设置过程,我就无法设置信用卡。我希望用户在创建新帐户和/或在设置中手动添加信用卡。
您能调用stripe ios的createPaymentMethod()
函数[0]吗?这是SwiftUI应用程序将调用的一个客户端函数,用于将paymentMethodParams
中的卡详细信息标记到PaymentMethod对象中。然后,您可以在服务器端传递该ID以附加到Customer。
[0]https://stripe.dev/stripe-ios/docs/Classes/STPAPIClient.html#/c:@CM@Stripe@objc(cs(STPAPIClient(im(createPaymentMethodWithPayment:完成:
要扩展@hmunoz的答案以及我实现这一点的方法如下。
- 为您的用户创建Stripe帐户。https://stripe.com/docs/api/customers/create
- 将客户条带id记录在用户的Firestore数据库中,以便于参考
- 创建一个";添加卡片";查看您的前端并调用add payment method函数。https://stripe.com/docs/api/cards/create
- 结账时,只要客户的条纹ID在付款意向中被传递,它就应该用他们保存的付款方式填充
总之,最好跟踪已登录的用户,以便您可以在整个过程中执行所需的任何CRUD。