微信支付寶xposed個(gè)人收款免簽支付源碼

源碼介紹:

個(gè)人免簽支付是指使用自己的微信支付寶賬號(hào)作為個(gè)人網(wǎng)站的收款賬號(hào),網(wǎng)站訂單支付成功后,網(wǎng)站能實(shí)時(shí)收到成功回調(diào)信息。

系統(tǒng)基于xposed逆向微信、支付寶、云閃付來(lái)實(shí)現(xiàn)個(gè)人收款免簽支付。(tag:個(gè)人收款,免簽支付,微信免簽,支付寶免簽,云閃付免簽)

源碼地址:https://github.com/wxs2/xposed-pay

支付寶xposed的源碼不多,個(gè)人免簽這個(gè)源碼還是很實(shí)用的。能自定義金額,自動(dòng)出碼,自動(dòng)回調(diào),支付寶能H5喚起,源碼包含PHP后臺(tái)源碼和微信支付寶監(jiān)聽端Java源碼。支持多賬號(hào)多客戶端運(yùn)行,源碼有詳細(xì)說明文檔。

測(cè)試地址(點(diǎn)我跳轉(zhuǎn))

目前支持如下免簽支付:

微信二維碼?、支付寶二維碼、支付寶紅包、支付寶主動(dòng)收款、支付寶銀行卡、云閃付

系統(tǒng)介紹:

使用個(gè)人支付寶或微信賬號(hào)收款,無(wú)須公司資質(zhì)接入支付寶微信平臺(tái)

基于xposed逆向支付寶微信App實(shí)現(xiàn)自動(dòng)生成指定金額二維碼,支付成功后自動(dòng)回調(diào)

系統(tǒng)包含PHP后臺(tái)和Android監(jiān)聽客戶端

支持多賬號(hào),多客戶端運(yùn)行

運(yùn)行效果

核心代碼:

hook微信二維碼生成函數(shù)

private void hookQRCreat(final ClassLoader appClassLoader, final Context context) {

? ? ? ? ? ? Class<?> clazz = XposedHelpers.findClass("com.tencent.mm.plugin.collect.b.s", appClassLoader);

? ? ? ? XposedBridge.hookAllMethods(clazz, "a", new XC_MethodHook() {

? ? ? ? ? ? @Override

? ? ? ? ? ? protected void beforeHookedMethod(MethodHookParam param)

? ? ? ? ? ? ? ? ? ? throws Throwable {

? ? ? ? ? ? }

? ? ? ? ? ? @Override

? ? ? ? ? ? protected void afterHookedMethod(MethodHookParam param) {

? ? ? ? ? ? ? ? try {

? ? ? ? ? ? ? ? ? ? LogUtils.log("hookQRCreat start:");

? ? ? ? ? ? ? ? ? ? QrBean qrBean = new QrBean();

? ? ? ? ? ? ? ? ? ? qrBean.setChannel(QrBean.WECHAT);

? ? ? ? ? ? ? ? ? ? Field moneyField = XposedHelpers.findField(param.thisObject.getClass(), "kcp");

? ? ? ? ? ? ? ? ? ? Double money = (Double) moneyField.get(param.thisObject);

? ? ? ? ? ? ? ? ? ? LogUtils.log("hookQRCreat money:"+money.toString());

? ? ? ? ? ? ? ? ? ? Field markField = XposedHelpers.findField(param.thisObject.getClass(), "desc");

? ? ? ? ? ? ? ? ? ? String mark = (String) markField.get(param.thisObject);

? ? ? ? ? ? ? ? ? ? LogUtils.log("hookQRCreat mark:"+mark);

? ? ? ? ? ? ? ? ? ? Field payurlField = XposedHelpers.findField(param.thisObject.getClass(), "kco");

? ? ? ? ? ? ? ? ? ? String payurl = (String) payurlField.get(param.thisObject);

? ? ? ? ? ? ? ? ? ? LogUtils.log("hookQRCreat payurl:"+payurl);

? ? ? ? ? ? ? ? ? ? qrBean.setMark_sell(mark);

? ? ? ? ? ? ? ? ? ? qrBean.setUrl(payurl);

? ? ? ? ? ? ? ? ? ? LogUtils.log( "com.tencent.mm.plugin.collect.b.s qrBean:"+ JSON.toJSONString(qrBean));

? ? ? ? ? ? ? ? ? ? Intent broadCastIntent = new Intent();

? ? ? ? ? ? ? ? ? ? broadCastIntent.putExtra("data", qrBean.toString());

? ? ? ? ? ? ? ? ? ? broadCastIntent.setAction(HookMain.RECEIVE_QR_WECHAT);

//? ? ? ? ? ? ? ? broadCastIntent.setComponent( new ComponentName( "com.sjk.tpay" ,

//? ? ? ? ? ? ? ? ? ? ? ? "com.sjk.tpay.ReceiverMain") );

? ? ? ? ? ? ? ? ? ? context.sendBroadcast(broadCastIntent);

? ? ? ? ? ? ? ? ? ? LogUtils.log("hookQRCreat end:"+JSON.toJSONString(param));

? ? ? ? ? ? ? ? }catch (Exception e){

? ? ? ? ? ? ? ? ? ? LogUtils.log("hookQRCreat exception:"+Log.getStackTraceString(e));

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? });

? ? }

hook支付寶二維碼生成函數(shù)

private void hookQRCreat(final ClassLoader appClassLoader, final Context context) {

? ? ? ? XposedHelpers.findAndHookMethod("com.alipay.mobile.payee.ui.PayeeQRSetMoneyActivity", appClassLoader, "a",

? ? ? ? ? ? ? ? XposedHelpers.findClass("com.alipay.transferprod.rpc.result.ConsultSetAmountRes", appClassLoader), new XC_MethodHook() {

? ? ? ? ? ? ? ? ? ? @Override

? ? ? ? ? ? ? ? ? ? protected void afterHookedMethod(MethodHookParam param) throws Throwable {

? ? ? ? ? ? ? ? ? ? ? ? Field moneyField = XposedHelpers.findField(param.thisObject.getClass(), "g");

? ? ? ? ? ? ? ? ? ? ? ? String money = (String) moneyField.get(param.thisObject);

? ? ? ? ? ? ? ? ? ? ? ? Field markField = XposedHelpers.findField(param.thisObject.getClass(), "c");

? ? ? ? ? ? ? ? ? ? ? ? Object markObject = markField.get(param.thisObject);

? ? ? ? ? ? ? ? ? ? ? ? String mark = (String) XposedHelpers.callMethod(markObject, "getUbbStr");

? ? ? ? ? ? ? ? ? ? ? ? Object consultSetAmountRes = param.args[0];

? ? ? ? ? ? ? ? ? ? ? ? Field consultField = XposedHelpers.findField(consultSetAmountRes.getClass(), "qrCodeUrl");

? ? ? ? ? ? ? ? ? ? ? ? String payurl = (String) consultField.get(consultSetAmountRes);

? ? ? ? ? ? ? ? ? ? ? ? Field consultField2 = XposedHelpers.findField(consultSetAmountRes

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? .getClass(), "printQrCodeUrl");

? ? ? ? ? ? ? ? ? ? ? ? String payurloffline = (String) consultField2.get(consultSetAmountRes);

? ? ? ? ? ? ? ? ? ? ? ? QrBean qrBean = new QrBean();

? ? ? ? ? ? ? ? ? ? ? ? qrBean.setChannel(QrBean.ALIPAY);

? ? ? ? ? ? ? ? ? ? ? ? qrBean.setMark_sell(mark);

? ? ? ? ? ? ? ? ? ? ? ? qrBean.setUrl(payurl);

? ? ? ? ? ? ? ? ? ? ? ? Intent broadCastIntent = new Intent()

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? .putExtra("data", qrBean.toString())

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? .setAction(RECEIVE_QR_ALIPAY);

? ? ? ? ? ? ? ? ? ? ? ? context.sendBroadcast(broadCastIntent);

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? });

? ? }

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容