将Mastercard信用卡添加至Google Pay报错无日志,OPC格式问题排查
问题排查解决方案
- OPC转换错误:你当前代码中直接将base64编码的OPC字符串调用
getBytes()转为字节数组传入setOpaquePaymentCard属于错误操作。正确流程是先对OPC字符串做Base64解码,将解码得到的二进制数组传入该方法即可。 - OPC格式异常:卡组织下发的OPC本身是不透明二进制 payload,正常无法直接解码为明文JSON结构。你当前解码后得到JSON结构,说明后端返回的OPC经过了额外封装,无法被Google Pay服务端识别。请联系卡组织侧技术支持,确认后端获取到的原始OPC是否被二次封装,直接将卡组织下发的原始OPC做Base64编码后传给前端即可,不要做额外JSON封装。
- OPC已过期:你贴出的示例
tokenizationAuthenticationValue中dataValidUntilTimestamp有效期到2021年9月13日,已经过期失效。请后端重新获取最新的有效OPC再进行测试。 - 补充返回结果日志:调用
pushTokenize后需要在Activity的onActivityResult方法中添加回调日志,接收REQUEST_CODE_PUSH_TOKENIZE对应的返回结果:
@Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_CODE_PUSH_TOKENIZE) { Log.d(TAG, "pushTokenize resultCode: " + resultCode); if (data != null) { int errorCode = data.getIntExtra(TapAndPay.EXTRA_ERROR_CODE, -1); String errorMessage = data.getStringExtra(TapAndPay.EXTRA_ERROR_MESSAGE); Log.d(TAG, "errorCode: " + errorCode + ", errorMessage: " + errorMessage); } } }
根据返回的错误码可以直接定位具体问题,比如OPC无效、签名校验失败、应用未备案等。
- 应用备案校验:确认你App的包名、签名SHA256指纹和在Google Pay发行方后台提交的信息完全一致,同时确认你当前使用的测试Google账号已经添加到了测试白名单中。
内容的提问来源于stack exchange,提问作者Lukáš Šálek
相关产品推荐
相关产品推荐

