ソース導入しました:
個々のビザなし支払いは売掛金の個人的なウェブサイトなど、独自のマイクロチャネルAlipayのアカウントの使用を指し、支払指図書は、サイトの成功の後に、サイトには、リアルタイムでの成功コールバック情報を受け取ることができます。
システムは、xposed逆マイクロ手紙にアリペイ、ビザなしの個人的なコレクションを支払うことを達成するために、クラウド雷賃金をベースにしています。(タグ:個人的なコレクション、支払いビザ、ビザなしマイクロチャネル、Alipayのビザ、クラウド雷有料ビザ)
ソースアドレスします。https://github.com/cinser/weixin-alipay-yunshanfu-xposed-pay
ビザ免除プログラムは現在、次の支払いをサポートしています。
- マイクロチャネルの2次元コード、2次元コードアリペイ、Alipayの赤い封筒、イニシアチブのアリペイの支払い、Alipayの銀行カード、クラウド雷有料
システムの説明:
- アクセス資格のマイクロチャネル・プラットフォーム・アリペイのないアリペイや個人的な使用のマイクロチャネル売掛金
- 指定された量は、自動的に2次元コードを生成した後、アリペイのAppマイクロチャンネル自動コールバックを逆xposed基づき、支払い成功
- Androidシステムは、PHPの背景が含まれており、クライアントのために聞きます
- 複数のアカウントのサポート、マルチクライアント操作
業績:
コアコード:
マイクロチャネルの二次元コード生成関数をフック
プライベートボイドhookQRCreat(最終のClassLoader appClassLoader、最終的なコンテキストコンテキスト){ <?>クラスclazz = XposedHelpers.findClass( "com.tencent.mm.plugin.collect.bs"、appClassLoader)。 XposedBridge.hookAllMethods(clazz、 ""、新しいXC_MethodHook(){ @オーバーライド 保護された無効beforeHookedMethod(MethodHookParamのparam) スローのThrowable { } @オーバーライド 保護されたボイドafterHookedMethod(MethodHookParam PARAM){ {試します LogUtils.log( "hookQRCreat開始:"); QrBean qrBean =新しいQrBean(); qrBean.setChannel(QrBean.WECHAT)。 フィールドmoneyField = XposedHelpers.findField(param.thisObject.getClass()、 "KCP")。 ダブルお金=(ダブル)moneyField.get(param.thisObject)。 LogUtils.log( "hookQRCreat金:" + money.toString()); フィールドマークフィールド= XposedHelpers.findField(param.thisObject.getClass()、 "DESC"); 文字列マーク=(文字列)markField.get(param.thisObject)。 LogUtils.log( "hookQRCreatマーク:" +マーク)。 フィールドpayurlField = XposedHelpers.findField(param.thisObject.getClass()、 "KCO")。 ストリングpayurl =(文字列)payurlField.get(param.thisObject)。 LogUtils.log( "hookQRCreat payurl:" + payurl)。 qrBean.setMark_sell(マーク)。 qrBean.setUrl(payurl)。 LogUtils.log( "qrBeanをcom.tencent.mm.plugin.collect.bs:" + JSON.toJSONString(qrBean)); テントbroadCastIntent =(新しいインテント)。 broadCastIntent.putExtra( "データ"、qrBean.toString())。 broadCastIntent.setAction(HookMain.RECEIVE_QR_WECHAT)。 // broadCastIntent.setComponent(新しいコンポーネント名( "com.sjk.tpay"、 // "com.sjk.tpay.ReceiverMain")); context.sendBroadcast(broadCastIntent)。 LogUtils.log( "hookQRCreatエンド:" + JSON.toJSONString(パラメータ)); }キャッチ(例外e){ LogUtils.log( "hookQRCreat例外:" + Log.getStackTraceString(e)参照)。 } } }); }
Alipayの二次元コード生成関数をフック
プライベートボイドhookQRCreat(最終のClassLoader appClassLoader、最終的なコンテキストコンテキスト){ XposedHelpers.findAndHookMethod( "com.alipay.mobile.payee.ui.PayeeQRSetMoneyActivity"、appClassLoader、 ""、 XposedHelpers.findClass( "com.alipay.transferprod.rpc.result.ConsultSetAmountRes"、appClassLoader)、新しいXC_MethodHook(){ @オーバーライド 保護されたボイドafterHookedMethodは(MethodHookParam PARAM)のThrowableを{スロー フィールドmoneyField = XposedHelpers.findField(param.thisObject.getClass()、 "G")。 文字列のお金=(String)をmoneyField.get(param.thisObject)。 フィールドマークフィールド= XposedHelpers.findField(param.thisObject.getClass()、 "C")。 オブジェクトmarkObject = markField.get(param.thisObject)。 文字列マーク=(文字列)XposedHelpers.callMethod(markObject、 "getUbbStr")。 オブジェクトconsultSetAmountRes = param.args [0]。 フィールドconsultField = XposedHelpers.findField(consultSetAmountRes.getClass()、 "qrCodeUrl")。 ストリングpayurl =(文字列)consultField.get(consultSetAmountRes)。 フィールドconsultField2 = XposedHelpers.findField(consultSetAmountRes .getClass()、 "printQrCodeUrl")。 文字列payurloffline =(文字列)consultField2.get(consultSetAmountRes)。 QrBean qrBean =新しいQrBean(); qrBean.setChannel(QrBean.ALIPAY)。 qrBean.setMark_sell(マーク)。 qrBean.setUrl(payurl)。 テントbroadCastIntent =(新しいテント) .putExtra( "データ"、qrBean.toString()) .setAction(RECEIVE_QR_ALIPAY)。 context.sendBroadcast(broadCastIntent)。 } }); }