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

iOS Swift中如何将账单地址关联至Stripe PaymentSheet

解决PaymentSheet关联用户地址的Swift代码修改方案

核心思路

要让收集到的地址同步到Stripe后端,需将地址数据通过PaymentSheet.Configuration传递给Stripe,同时配合后端创建PaymentIntent时关联地址字段。

前端代码修改步骤

  1. 整理收集到的地址数据
    把你通过地址元素获取的地址,转换为Stripe要求的STPBillingDetails格式:

    // 假设address是你已收集的用户地址实例
    let billingDetails = STPBillingDetails()
    billingDetails.address = STPAddress()
    billingDetails.address?.line1 = address.street
    billingDetails.address?.line2 = address.apartment // 可选,如公寓号
    billingDetails.address?.city = address.city
    billingDetails.address?.state = address.state
    billingDetails.address?.postalCode = address.postalCode
    billingDetails.address?.country = address.countryCode // 需为ISO 3166-1 alpha-2格式,比如"CN"或"US"
    
  2. 配置PaymentSheet并关联地址
    初始化PaymentSheet.Configuration时,将整理好的billingDetails赋值给配置项:

    var configuration = PaymentSheet.Configuration()
    configuration.customer = .init(id: customerId, ephemeralKeySecret: ephemeralKey)
    // 关联地址到PaymentSheet配置
    configuration.customer.billingDetails = billingDetails
    // 保留原有其他配置
    configuration.merchantDisplayName = "你的商家名称"
    
  3. 启动PaymentSheet时传入修改后的配置
    确保启动PaymentSheet时使用上述配置:

    let paymentSheet = PaymentSheet(paymentIntentClientSecret: paymentIntentSecret, configuration: configuration)
    paymentSheet.present(from: self)
    

后端配合修改(关键)

仅前端传递地址无法在Stripe后台显示,后端创建PaymentIntent时需指定shipping或billing字段:

  • 如果是发货地址,创建PaymentIntent时设置shipping参数:
    # 示例Ruby后端代码,其他语言逻辑一致
    Stripe::PaymentIntent.create({
      amount: 1000,
      currency: 'cny',
      customer: customer_id,
      shipping: {
        address: {
          line1: params[:shipping_address][:line1],
          line2: params[:shipping_address][:line2],
          city: params[:shipping_address][:city],
          state: params[:shipping_address][:state],
          postal_code: params[:shipping_address][:postal_code],
          country: params[:shipping_address][:country]
        },
        name: params[:shipping_name],
        phone: params[:shipping_phone]
      },
      automatic_payment_methods: { enabled: true }
    })
    
  • 如果是账单地址,设置billing_details参数即可。

验证方式

完成修改后发起一笔测试支付,在Stripe后台的支付记录中点击对应PaymentIntent,即可在详情页查看关联的地址信息。

内容的提问来源于stack exchange,提问作者Bosco Tsin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 17:18:10