Android端Stripe Tap to Pay读卡器屏幕如何显示金额?
解决Stripe Tap to Pay读卡器显示金额的问题
创建PaymentIntent时必须指定金额和币种
不管是后端生成还是测试环境用Stripe Dashboard创建,PaymentIntent必须包含amount(以最小货币单位计,比如100代表1美元)和currency字段,同时要设置payment_method_types为["card_present"],否则读卡器无法获取金额数据。
后端示例(Java):PaymentIntentCreateParams params = PaymentIntentCreateParams.builder() .setAmount(100L) .setCurrency("usd") .setPaymentMethodTypes(Arrays.asList("card_present")) .build(); PaymentIntent paymentIntent = stripe.paymentIntents().create(params);启动支付会话时传入正确的PaymentIntent Client Secret
Android端启动Tap to Pay流程时,要把生成的PaymentIntent的client secret传入createPaymentIntentParams,让读卡器关联这笔支付的金额信息:val paymentIntentParams = Terminal.createPaymentIntentParams(paymentIntentClientSecret) Terminal.getInstance().collectPaymentMethod(paymentIntentParams, object : Callback<PaymentMethod> { override fun onSuccess(paymentMethod: PaymentMethod) { // 执行支付确认逻辑 } override fun onFailure(e: Exception) { // 处理错误 } })检查读卡器固件版本
旧版本的读卡器固件可能不支持金额显示功能。通过SDK获取当前读卡器信息,查看deviceSoftwareVersion,如果不是最新,调用更新接口:val reader = Terminal.getInstance().getReader() if (reader?.needsUpdate == true) { Terminal.getInstance().updateReaderSoftware(object : Callback<Reader> { override fun onSuccess(reader: Reader) { // 更新完成 } override fun onFailure(e: Exception) { // 更新失败处理 } }) }测试环境验证
测试环境下使用Stripe提供的测试卡(比如4242 4242 4242 4242)进行支付,读卡器应该会同步显示PaymentIntent中设置的金额。如果还是不显示,确认是否在创建PaymentIntent时没有遗漏必要字段,或者SDK版本是否为最新(建议使用Stripe Terminal SDK最新稳定版)。
内容的提问来源于stack exchange,提问作者Rahul Mishra
相关产品推荐
相关产品推荐

