获取customerId、ephemeralKey和clientSecret后,我用一个配置对象初始化PaymentSheet(其中包括应用程序名称、customerConfiguration(customerId、ephemeralKey和GooglePayConfiguration.
然后我调用presentWithPaymentIntent(clientSecrent, customerConfiguration)
,其中customerConfiguration是在第一步中创建的对象。
文件说,如果你通过了客户配置,用户检查";保存以备将来付款";复选框,在下一次付款时,PaymentSheet将显示保存的卡,但出于某种原因,对我来说它没有。
我已经检查过,当前客户的customerId总是一样的,只是新付款的ephemeralKey发生了变化,这似乎是正确的。
知道我可能做错了什么吗?iOS客户端按预期工作,因此服务器端配置正常。
谢谢!
代码示例:
PaymentSheet.GooglePayConfiguration googlePayConfiguration = new PaymentSheet.GooglePayConfiguration(getGooglePayEnvironment(), countryCode);
PaymentSheet.CustomerConfiguration customerConfiguration = new PaymentSheet.CustomerConfiguration(mViewModel.getCustomerId(), mViewModel.getEphemeralKey());
PaymentSheet.Configuration configuration = new PaymentSheet.Configuration(getString(R.string.app_name),
customerConfiguration,
googlePayConfiguration,
null,
null);
mPaymentSheet.presentWithPaymentIntent(mViewModel.getClientSecret(), configuration);
您的问题没有显示在视图模型中执行的代码,因此我将给出一个保存/加载卡数据的工作示例:
-
获取临时密钥-要从服务器获取密钥,您需要发送POST请求,您必须将自定义ID附加到该请求请求可能因服务器上的实现而异。在来自服务器的响应中,我们收到一个临时密钥。条纹将其发送到名为"的服务器;秘密";。重要!如果你不使用自己的服务器来保护你的密钥,那么你需要为了得到名为"的字段;秘密";从…起https://api.stripe.com/v1/ephemeral_keys
-
发送付款意向。最有可能的是已转移到您的服务器,并将被到的反射所取代您的服务器,它将生成付款意向并向您发送必要的数据返回,但是,默认的主体实现将看起来像这样:
https://api.stripe.com/v1/payment_intents BODY PARAMS
customer=$customerId
amount=$amount
currency=usd
此请求将返回密钥意图,我们将在初始化付款单时使用该密钥意图。
下一步是设置工作表。使用以下代码:
val customerConf = PaymentSheet.CustomerConfiguration(viewModel.customerId, ephemeralKey)
val sheetConf = PaymentSheet.Configuration(
merchantDisplayName = "Some product name",
customer = customerConf,
allowsDelayedPaymentMethods = false
)
paymentSheet.presentWithPaymentIntent(intentSecret, sheetConf)
因此,您将在重新付款后收到您的卡的保存。
通过保存的卡付款。图像
我还建议您为android应用程序创建一个测试用户,并在面板上检查点击复选框并付款后是否保存了卡数据
lateinit var customerConfig: PaymentSheet.CustomerConfiguration
private lateinit var paymentSheet: PaymentSheet
customerConfig=付款单。客户配置(id,ephemeral_key(
paymentSheet.presentWithPaymentIntent(
client_secret,
PaymentSheet.Configuration(
PrefManager.getFullName(),
customer = customerConfig,
// Set `allowsDelayedPaymentMethods` to true if your business
// can handle payment methods that complete payment after a delay, like SEPA Debit and Sofort.
allowsDelayedPaymentMethods = true
)
)
非常感谢。。。形成印度