PAYATHON 2026

在 Android 应用中集成 Third party Payment 的限制

支付小周

明确结论

Android 操作系统通常不会禁止应用接入第三方支付,也不会因为应用调用了第三方支付 SDK 就向开发者收费。

相关限制主要取决于应用的分发渠道和交易内容:

  • 销售实体商品或线下服务,如外卖、打车、酒店和机票,一般可以使用第三方支付。
  • 通过 Google Play 分发应用,并销售应用内使用的数字内容、会员、订阅或虚拟功能时,通常需要使用 Google Play Billing。
  • 部分国家或地区允许替代结算、用户选择结算或外部支付链接,但各地的适用范围、申请条件、信息披露要求和服务费不同。
  • 不通过 Google Play 分发的应用,不受 Google Play 结算政策直接约束,但仍须遵守支付服务商、所在应用商店及当地法律的规定。

因此,不能只看它是不是 Android 应用。商品类型、上架渠道和目标地区都需要确认。

为什么会有这些限制

Android 是操作系统,Google Play 则是独立的应用分发平台。应用能够在技术上安装和运行第三方支付 SDK,不等于这种结算方式符合 Google Play 的上架政策。

判断支付方式时,先要分清交易对象:

交易内容常见结算方式
实体商品、外卖、交通、住宿等通常可使用第三方支付
应用内数字功能、虚拟货币、数字内容通过 Google Play 分发时通常使用 Google Play Billing
数字订阅或会员权益通常属于数字内容,需结合权益的使用场景判断
捐赠、金融服务、点对点付款等可能适用专门规则,需要单独核对

商品叫不叫“会员”,并不能决定使用哪种支付方式。会员权益如果主要是应用内数字内容,通常会被视为数字购买;如果权益对应线下健身房、实体配送等服务,则可能属于实体服务。

是否需要向 Google 支付费用

需要根据具体情况判断:

  1. 直接安装、企业分发或其他应用商店

    Android 不会因为应用集成第三方支付而自动收费。是否产生费用,要看第三方支付服务商、分发平台和相关合同。

  2. 通过 Google Play 销售数字商品

    通常需要接入 Google Play Billing,并根据开发者账号、交易类型和适用政策支付相应的服务费。具体比例可能随开发者计划、订阅类型、地区和政策调整,不应在实现中写死某个固定比例。

  3. 参加替代结算相关计划

    获准使用第三方结算,不一定代表无需向 Google 支付服务费。部分计划仍可能收取调整后的服务费,并要求开发者申报交易、展示选择界面或提供客户支持。

第三方支付服务商一般也会收取通道费、退款费、跨境费或货币转换费,这些费用与 Google 无关。

推荐的实施步骤

1. 确定商品性质

列出应用中的每项收费内容,并判断它属于哪种类型:

  • 实体商品;
  • 线下服务;
  • 应用内数字商品;
  • 自动续订订阅;
  • 金融、捐赠或其他特殊交易。

不要把数字商品改名为“服务费”后接入第三方支付。平台审核通常看实际交付的内容,而不只看商品名称。

2. 确定分发渠道和地区

确认应用的分发情况:

  • 是否发布到 Google Play;
  • 是否同时发布到多个应用商店;
  • 是否通过官网或企业渠道分发;
  • 是否面向允许替代结算的特定国家或地区。

如果应用有多个分发渠道,可以使用不同的构建变体隔离支付实现,但不能通过运行时配置规避某个商店的审核要求。

interface PaymentGateway {
    fun startPurchase(productId: String)
}

class PlayBillingGateway : PaymentGateway {
    override fun startPurchase(productId: String) {
        // Start a Google Play Billing purchase flow.
    }
}

class ThirdPartyPaymentGateway : PaymentGateway {
    override fun startPurchase(productId: String) {
        // Start the approved third-party payment flow.
    }
}

例如,可以在构建阶段为不同渠道注入对应的实现:

val paymentGateway: PaymentGateway =
    if (BuildConfig.DISTRIBUTION_CHANNEL == "google_play") {
        PlayBillingGateway()
    } else {
        ThirdPartyPaymentGateway()
    }

这里的渠道判断只应用于维护合规的发行版本,不能用来绕过 Google Play Billing 的要求。

3. 数字商品使用 Google Play Billing

Google Play 版本销售应用内数字商品时,可以使用 BillingClient 建立连接:

val billingClient = BillingClient.newBuilder(context)
    .setListener { billingResult, purchases ->
        if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) {
            purchases?.forEach { purchase ->
                // Send purchase.purchaseToken to the backend for verification.
            }
        }
    }
    .enablePendingPurchases()
    .build()

billingClient.startConnection(object : BillingClientStateListener {
    override fun onBillingSetupFinished(billingResult: BillingResult) {
        if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) {
            // Billing service is ready. Query product details here.
        }
    }

    override fun onBillingServiceDisconnected() {
        // Retry later with an appropriate backoff strategy.
    }
})

完整实现还需要查询 ProductDetails、调用 launchBillingFlow(),并在服务端验证 purchaseToken。购买完成后,应根据商品类型进行确认或消耗处理。权益发放不能只依赖客户端回调。

4. 实体商品接入第三方支付

如果交易属于允许使用第三方支付的场景,可以集成支付服务商提供的 Android SDK。支付订单应由服务端创建,商户密钥不能写入 APK:

data class PaymentRequest(
    val orderId: String,
    val amountMinor: Long,
    val currency: String
)

fun startPayment(request: PaymentRequest) {
    // Obtain a short-lived payment token from your backend.
    // Pass the token to the payment provider's official Android SDK.
}

amountMinor 表示最小货币单位,例如人民币分。实际金额应由服务端根据订单重新计算,不能信任客户端上传的金额。

推荐采用以下流程:

Android App
    → Backend creates order
    → Payment provider creates payment session
    → Android App opens provider SDK
    → Provider notifies backend through webhook
    → Backend verifies notification and updates order
    → Android App queries the final order status

付款成功页面只是给用户看的界面反馈。最终发货或开通权益,应以服务端验证后的支付状态为准。

还需要遵守的条款

除了应用商店规则,通常还要检查:

  • 第三方支付服务商的商户协议和禁止交易清单;
  • 支付服务商对 SDK、品牌标识和支付页面的使用要求;
  • 隐私政策、数据收集说明和用户授权;
  • 支付卡数据安全要求,如适用时的 PCI DSS;
  • 当地有关消费者保护、退款、自动续费和税务的规定;
  • 用户取消订阅、关闭自动续费和查询账单的途径;
  • Webhook 签名验证、订单幂等和重复通知处理;
  • Google Play 对外部链接及引导用户使用其他支付渠道的限制。

支付政策会随地区和时间变化。上线前,应根据目标市场核对 Google Play 最新的支付政策、适用计划条款和第三方支付服务商文档。如果销售的是数字商品,不能仅凭技术上可以打开网页或第三方 SDK,就认定这种支付方式能够通过审核。

备注:内容仅供参考。