微信支付宝xposed个人收款免签支付源码

源码介绍:

个人免签支付是指使用自己的微信支付宝账号作为个人网站的收款账号,网站订单支付成功后,网站能实时收到成功回调信息。

系统基于xposed逆向微信、支付宝、云闪付来实现个人收款免签支付。(tag:个人收款,免签支付,微信免签,支付宝免签,云闪付免签)

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

支付宝xposed的源码不多,个人免签这个源码还是很实用的。能自定义金额,自动出码,自动回调,支付宝能H5唤起,源码包含PHP后台源码和微信支付宝监听端Java源码。支持多账号多客户端运行,源码有详细说明文档。

测试地址(点我跳转)

目前支持如下免签支付:

微信二维码 、支付宝二维码、支付宝红包、支付宝主动收款、支付宝银行卡、云闪付

系统介绍:

使用个人支付宝或微信账号收款,无须公司资质接入支付宝微信平台

基于xposed逆向支付宝微信App实现自动生成指定金额二维码,支付成功后自动回调

系统包含PHP后台和Android监听客户端

支持多账号,多客户端运行

运行效果

核心代码:

hook微信二维码生成函数

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支付宝二维码生成函数

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);

                    }

                });

    }

你可能感兴趣的:(微信支付宝xposed个人收款免签支付源码)