You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android SDK下能否通过Stripe公钥添加卡片并使用PaymentMethodId支付?

关于Stripe Android SDK添加卡片与PaymentMethod支付的问题
  • 能否用Stripe公钥通过Android SDK添加卡片?
    可以。Stripe Android SDK的设计逻辑就是让客户端仅使用**公钥(publishable key,格式为pk_xxx)**来安全收集卡片信息并创建PaymentMethod,全程不需要暴露秘钥。你之前无法完成操作,大概率是集成步骤出错:

    • 初始化SDK时必须传入公钥,而非秘钥。
    • 优先使用Stripe提供的预构建UI组件(如PaymentSheet或CardInputWidget)收集卡片信息,这类组件会直接处理敏感数据,不会让卡片信息流入你的应用代码。
    • 创建PaymentMethod的核心代码示例:
      val stripe = Stripe(context, "pk_your_publishable_key")
      val cardParams = CardParams.Builder()
          .setNumber("4242424242424242")
          .setExpiryMonth(12)
          .setExpiryYear(2025)
          .setCvc("123")
          .build()
      stripe.createPaymentMethod(
          PaymentMethodCreateParams.create(cardParams),
          object : ApiResultCallback<PaymentMethod> {
              override fun onSuccess(result: PaymentMethod) {
                  // 获取有效PaymentMethodId:result.id
              }
              override fun onError(e: Exception) {
                  // 处理创建失败逻辑
              }
          }
      )
      
  • 用PaymentMethodId实现后续支付是否可行?
    完全可行,这也是Stripe推荐的安全支付流程:

    1. 客户端用公钥创建PaymentMethod后,将其id(如pm_xxx)传给你的后端服务器。
    2. 后端使用秘钥调用Stripe API(如创建PaymentIntent),将该PaymentMethod与支付请求关联,返回客户端所需的client_secret。
    3. 客户端通过Stripe SDK使用client_secret完成支付确认。
  • 秘钥不能在应用层使用的原因
    秘钥(sk_xxx)拥有Stripe账户的全部操作权限,一旦在客户端暴露,恶意用户可直接盗用你的账户发起非法交易、篡改数据。因此所有需要秘钥的操作必须放在后端执行,客户端仅负责前端数据收集与支付确认环节。

内容的提问来源于stack exchange,提问作者Bhringesh Biswas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 12:45:37