Hello,村长🙂

我的场景

  • 在 Android studio 打包运行正常
  • 使用 unity 打包,使用 maven 依赖,运行支付失败

问题和现象

应用 ysdk 接入,使用米大师支付,商品数据已备好,本地工程打包运行,支付正常;
然后发布 sdk 版本到 maven 仓库,支付时忽然发现‘缺少订单信息’;

如下图:

应用宝 ysdk 支付 ‘订单缺失’ 问题_android

问题分析

讲过和对方技术人员激烈的谈论,对方反馈说:​​可能是 MidasPay.zip 文件被修改了, md5 发生变化导致。​

如下图是官方资料:

应用宝 ysdk 支付 ‘订单缺失’ 问题_java_02

十万个为什么:

  • 文件为什么被修改了?
  • 是 android studio 构建打包时,开启 ​​资源压缩​​​、​​开启 zip 文件对齐​​​、​​开启混淆​​ 导致文件被修改吗?
  • 还是我打包上传到 maven 仓库时被修改了?【可是在仓库上​​直接​​下载文件,查看 midaspay.zip md5 没有变化,是正确的】
  • 我构建、打包、发布到 maven 仓库,build.gradle 已经添加了 ​​noCompress = ['.zip']​​ ,为什么问题还是复现?

根据我的场景,我推测,​​是不是 maven 依赖到本地,在这个过程中 midaspay.zip 文件被修改了 😮​

立马查看 build.gradl 依赖 maven 仓库拉起到本地缓存的文件: 果然,文件大小都不一样了,提取 md5 发现也不一样。
哭了哭了,难道真的是从仓库拉取文件到本地这个过程中发生了什么奇怪的事情😮

如下图是本地依赖:

应用宝 ysdk 支付 ‘订单缺失’ 问题_下载文件_03

临时解决方法

排查有点困难,进度紧迫,就先使用临时方案了!!!

android 工程同级目录下(assets目录)存放一份 ​​MidasPay.zip​​​文件就好了,拉取远程仓库文件时发现本地已存在一份文件,仓库的那份文件被丢弃,打包构建使用的是本地完整无缺的 ​​MidasPay.zip​​ 这样算是好了。