Apple Pay 有几种接入方式,我该选哪种?
共四种。官网的建议是:除非产品体验或合规边界要求由商户自己处理 Apple Pay token,否则一律用 Waffo 托管收银台,不需要申请 Apple 开发者账号、管理 Apple Pay 证书或自己解密 token。
说明:
- 前三种由 Waffo 处理 Apple Pay token。第四种由你的服务端解密。
- Android 终端不适用 Apple Pay。Android App 可以复用 WebView 加载收银台的做法来支持其他支付方式。
- 不论哪种方式,支付结果都以 Webhook 或订单查询接口为准,不要只看用户跳转回来的页面。
能不能把收银台链接直接放进普通 iframe 来用 Apple Pay?
不能。iframe 方式必须使用 Waffo 前端 SDK,并在集成之前联系技术支持完成 Apple Pay 的域名验证和注册。不要把orderAction.webUrl 放进普通 <iframe>。域名验证和注册完成之前就上线 iframe Apple Pay,Apple Pay 按钮可能不显示,或者授权无法继续。
Portal 里没有域名页面,域名注册只能通过技术支持处理。如果你更换了收银台所在域名,需要提前提出,不要等切换之后,详见商户 Portal 里哪些设置我可以自己改?。iframe 本身的要求(allow="payment"、Referrer Policy、CSP、响应式宽度)见接入方式怎么选,以及把收银台嵌进我的页面。
Apple Pay 商户直连:我要传什么?需要自己解密吗?
需要。目前直连方式只支持你在服务端解密后,把解密结果传给 Waffo。你要自己负责:- Apple 开发者账号和 Merchant ID;
- Payment Processing Certificate 及其私钥;
- Apple Pay on the Web 的域名验证;
- Apple Pay JS 或 PassKit 的前端集成;
- token 的验签、解密、防重放,以及敏感数据的合规。
- 选用与 Payment Processing Certificate 对应的私钥;
- 按 Apple 的规范验证 token 签名和证书链;
- 按 token 的
version解密token.paymentData.data,把结果按 UTF-8 解析成 JSON; - 确认该
transactionId没有被处理过,并核对解密出的币种、金额与订单一致; - 把解密后的 JSON 放进
token.decryptedPaymentData,再提交给 Waffo。
- 内容放在
/api/v1/order/create的paymentTokenData字段里。该字段在接口里是String,需要把整个对象序列化成 JSON 字符串后再提交,不是 JSON 对象。 - 只传解密后的内容不够:它不含卡组织,
billingContact(持卡人姓名和账单地址的唯一来源)也在加密数据之外。所以要保留 Apple Pay 返回的外层结构,在token里增加decryptedPaymentData。你也可以同时保留token.paymentData,但不能只传它。 - Waffo 检测到
token.decryptedPaymentData时,优先使用解密后的 token,不再做平台解密。
字段的完整结构和示例见官网直连 Apple Pay。直连时下单请求还需要按按支付方式划分的条件必填字段提供
userBrowserIp、userAgent 等信息。
Google Pay 有几种接入方式?
商户自己集成时,要怎么配置和提交?
- 在 Google 的
tokenizationSpecification里,type为PAYMENT_GATEWAY,gateway填waffo,gatewayMerchantId沙箱填googletest,生产环境的值向 Waffo 的技术客户经理(TAM)获取。 - 支持的支付类型是
CARD;卡组织为VISA、MASTERCARD、AMEX、DISCOVER;认证方式为PAN_ONLY。 - 需要收集的信息:姓名、地址、电话、邮箱。
- 调用
/api/v1/order/create,paymentInfo.payMethodName为GOOGLEPAY,payMethodType为CARD,并在paymentTokenData里放 Google Pay 返回的加密 token。官网特别强调:paymentTokenData要按 JSON 字符串提交。 - 支持订阅(循环扣款)的前提:你必须遵守卡组织规则,特别是商户发起交易(MIT)的规则;并在你的购买流程里披露「付款条款」,且让客户接受。
- 如果使用 Waffo Web SDK 的非 3DS 流程,需要先联系技术支持为你的账户配置。
Google Pay 怎么上线?
官网的上线清单:- 向 Google 申请生产访问权限(Google Production Access);
- 把 Google 集成配置更新为生产环境;
- 把
gatewayMerchantId换成技术客户经理提供的生产值; - 联系技术客户经理确认配置无误。
Google Pay 的 3DS 怎么控制?
用 Waffo Web SDK 的createPayment() 集成时,通过 googlePay3Dflow 参数控制:enable(默认)启用 3DS;disable 跳过 3DS,需要先联系 Waffo 完成配置。
Apple Pay 和 Google Pay 在哪些国家能用?
Apple Pay 和 Google Pay 在目录里是各自独立的条目(APPLEPAY、GOOGLEPAY),每个市场有自己的条目,需要各自开通,卡已经上线不代表它们上线。可用国家请以你账户的 Portal → Service → Payin 目录里这两行为准,也可以用支付方式配置查询接口(/api/v1/paymethodconfig/inquiry)确认。目录里没有,就是你的账户上尚未启用,请联系客户经理。国家清单会变化,本页不列。
相关入口
- 官网 Apple Pay 接入:https://waffo.com/docs/zh/developer-docs/integration/apple-pay/overview.md
- 官网直连 Apple Pay:https://waffo.com/docs/zh/developer-docs/integration/apple-pay/merchant-direct-integration.md
- 官网 Google Pay:https://waffo.com/docs/en/developer-docs/integration/google-pay/google-pay.md
- 官网前端组件 - Google Pay 集成:https://waffo.com/docs/zh/developer-docs/integration/elements/frontend-integration.md
- 官网支付方式集成注意事项:https://waffo.com/docs/zh/developer-docs/tools-and-references/references/payment-method-integration-notes.md
- 我可以接受哪些支付方式和市场?