如何在独立Swift Framework中配置Apple Pay以支持同一应用双商户收款
Apple Pay Swift Framework多商户收款实现方案
你提到的要求宿主将你的merchant ID添加到其Apple Pay entitlements的思路是完全可行的,这也是目前iOS生态下Framework侧实现自有商户Apple Pay收款的唯一合规方案,同时天然支持同一应用内多个商户独立发起收款。
为什么不能给Framework单独配置Apple Pay能力
Apple Pay相关的权限是基于主应用的Entitlements文件签名生效的,Framework作为动态库/静态库本身无法携带独立的Entitlements配置,所有系统层面的Apple Pay权限校验只会读取主应用的权限列表,因此无法实现Framework独立绑定商户的能力,必须依赖宿主的权限配置。
具体落地步骤
- 提前告知所有接入你的SDK的宿主应用,需要完成两个配置动作:
- 在苹果开发者后台对应App ID的Apple Pay配置项中,添加你的merchant ID到关联商户列表
- 在项目的Entitlements文件的
com.apple.developer.in-app-payments数组中,新增你的merchant ID
- 你在Framework内部发起支付时,直接创建
PKPaymentRequest实例,将merchantIdentifier字段赋值为你的自有商户ID即可,发起流程和主应用本身的Apple Pay发起流程完全一致,两者互不干扰 - 建议在Framework中增加前置校验逻辑,避免宿主未完成配置时发起支付导致崩溃:
若返回false可直接向宿主抛出明确的配置错误提示。let canUseMyMerchant = PKPaymentAuthorizationViewController.canMakePayments( usingNetworks: [.visa, .masterCard, .amex], // 你支持的卡组织 merchantIdentifier: "你的merchant ID" )
注意事项
- 宿主仅需要在Entitlements中新增你的merchant ID即可,不需要额外接入你的商户的支付凭证、不需要处理你的收款回调,所有支付逻辑和后续的资金清算都可以完全封装在Framework内部,不会泄露商户敏感信息,也不会影响宿主本身的Apple Pay业务逻辑
- 同一应用的Entitlements支持添加任意数量的merchant ID,多个商户发起的Apple Pay请求系统会自动区分,完全不会出现串单等问题
内容的提问来源于stack exchange,提问作者Isaaс Weisberg
相关产品推荐
相关产品推荐

