支付宝/微信小程序魔改方案探讨?

原因: 小区有一个电瓶车充电小程序,扫码获取到充电设备编号后,选择充电端口进行支付充电,问题是小程序各种广告,充值流程很长,且经常出现各种弹窗卡住,又要重新扫码进行充值,我受不了,我解包出了小程序源码,但是修改后没用,扫码后加载的又是官方的小程序。 我的实现方案: 第一阶段: 通过抓包,获取到小程序...
支付宝/微信小程序魔改方案探讨?
支付宝/微信小程序魔改方案探讨?

原因:

小区有一个电瓶车充电小程序,扫码获取到充电设备编号后,选择充电端口进行支付充电,问题是小程序各种广告,充值流程很长,且经常出现各种弹窗卡住,又要重新扫码进行充值,我受不了,我解包出了小程序源码,但是修改后没用,扫码后加载的又是官方的小程序。

我的实现方案:

第一阶段:

通过抓包,获取到小程序调用的接口,编写一个原生安卓app,在app调用小程序接口,但是这些接口需要授权,于是app提供一个保存token的界面,需要每次抓包获取token后,在app进行填充,但是支付实现不了,因为支付调用的代码是:

# 微信小程序支付:
wx.requestPayment({timeStamp, nonceStr, package, paySign})
# 支付宝小程序支付:
my.tradePay({tradeNO}) 

wxmy是小程序环境独有的对象,所以支付过不了。

第二阶段:

得益于手机有root权限,有xposed框架,将实现方案进行调整,app无需再手动抓包获取token,改为直接打开支付宝小程序,然后hook支付宝小程序获取code的节点,截取到code后返回到app进行保存,然后在app通过code调用登录接口,从而获取到用户token。
支付时,依然直接携带订单号跳转到小程序,然后通过hook自动执行my.tradePay({tradeNO}) ,从而实现支付功能。

实现效果:

d3060e609efea2a1ac7b38f328a959b6
dc4b4e56dc49f31d5e1cc0084530e1e3
d65fc8ee11e0bbc196900065c0d7477d
62bc8b1a79e856bd5f3e8a5040636bb9
5fe41e535c0e9742812f7ba4d49ecbdf
a3f8683ccfbce49ae725415a41c8edd6

目前这个方案虽然功能完成了,但是普适性较差,对手机环境有比较苛刻的要求,不知道佬们有没有其他方案?讨论讨论。

1 个帖子 - 1 位参与者

阅读完整话题

来源: LinuxDo 最新话题查看原文