Apple Pay JS 出现 payment Not Complete 错误相关问题咨询
问题根因说明
你遇到的问题不是苹果服务器返回内容有误,也不是证书异常导致的,核心问题出在时间戳处理逻辑和Apple Pay会话的调用流程错误两个方面。
具体问题拆解与解决方法
1. 时间戳异常问题
苹果返回的epochTimestamp和expiresAt本身是标准的13位毫秒级Unix时间戳,返回值完全正常,不需要做任何修改。
你转换得到错误日期,是因为将毫秒级时间戳直接作为秒级时间戳传入了日期转换方法,才会出现远晚于当前时间的错误结果,不需要手动去掉最后三位数值。
2. 会话提前取消、回调提前触发问题
这个问题的常见诱因有两类,按优先级排查即可:
- 调用
completeMerchantValidation时传入的参数不符合要求:必须传入从苹果商户验证接口获取的完整原始 merchant session 对象,不能自行修改、删减任何字段,也不能将对象转为字符串后再传入,需要直接传入JSON解析后的原始对象。 - 回调绑定顺序错误:所有会话回调(包括
onpaymentauthorized、onpaymentmethodselected、oncancel等)必须在创建ApplePaySession实例之后、调用session.begin()启动会话之前完成绑定,如果是在会话启动后才绑定回调,就会出现回调触发时机异常、会话提前取消的问题。
补充排查方向
如果调整后问题仍存在,可确认是否在会话生命周期内触发了未捕获的异常,这类异常也会触发Apple Pay会话的自动取消逻辑。
内容的提问来源于stack exchange,提问作者Dev Team
相关产品推荐
相关产品推荐

