支付寶
image
https://docs.open.alipay.com/204/105296/
-
xml
<activity android:name="com.alipay.sdk.app.H5PayActivity" android:configChanges="orientation|keyboardHidden|navigation" android:exported="false" android:screenOrientation="behind"/> <activity android:name="com.alipay.sdk.auth.AuthActivity" android:configChanges="orientation|keyboardHidden|navigation" android:exported="false" android:screenOrientation="behind"/>
-
公司后臺(tái)預(yù)支付返回訂單信息
private void executeAlipay(final String payInfo) { new Thread() { public void run() { // 構(gòu)造PayTask 對(duì)象 PayTask alipay = new PayTask(PayConfirmActivity.this); // 調(diào)用支付接口 String payResult = alipay.pay(payInfo); Message msg = new Message(); msg.what = SDK_PAY_FLAG; msg.obj = payResult; mHandler.sendMessage(msg); } }.start(); }
-
用戶使用h5支付寶頁(yè)面或者支付寶app進(jìn)行支付后衰琐,結(jié)果同步返回到本app
private Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { // 支付寶支付 case SDK_PAY_FLAG: Result resultObj = new Result((String) msg.obj); String resultStatus = resultObj.resultStatus; // 判斷resultStatus 為“9000”則代表支付成功旧困,具體狀態(tài)碼代表含義可參考接口文檔 if (TextUtils.equals(resultStatus, "9000")) { showToast("支付成功"); // 跳轉(zhuǎn)到支付成功頁(yè)面 goToSuccessActivity(); } else { // 判斷resultStatus 為非“9000”則代表可能支付失敗 // “8000” 代表支付結(jié)果因?yàn)橹Ц肚涝蚧蛘呦到y(tǒng)原因還在等待支付結(jié)果確認(rèn)狱窘,最終交易是否成功以服務(wù)端異步通知為準(zhǔn)(小概率狀態(tài)) if (TextUtils.equals(resultStatus, "8000")) { showToast("支付結(jié)果確認(rèn)中"); } else { showToast("支付失敗"); } } break; } }
};
-
混淆
-keep class com.alipay.android.app.IAlixPay{*;} -keep class com.alipay.android.app.IAlixPay$Stub{*;} -keep class com.alipay.android.app.IRemoteServiceCallback{*;} -keep class com.alipay.android.app.IRemoteServiceCallback$Stub{*;} -keep class com.alipay.sdk.app.PayTask{ public *;} -keep class com.alipay.sdk.app.AuthTask{ public *;} -keep class com.alipay.sdk.app.H5PayCallback { <fields>; <methods>; } -keep class com.alipay.android.phone.mrpc.core.** { *; } -keep class com.alipay.apmobilesecuritysdk.** { *; } -keep class com.alipay.mobile.framework.service.annotation.** { *; } -keep class com.alipay.mobilesecuritysdk.face.** { *; } -keep class com.alipay.tscenter.biz.rpc.** { *; } -keep class org.json.alipay.** { *; } -keep class com.alipay.tscenter.** { *; } -keep class com.ta.utdid2.** { *;} -keep class com.ut.device.** { *;}
商家后臺(tái)服務(wù)器程序執(zhí)行完后必須打印輸出“success”(不包含引號(hào))。如果商戶反饋給支付寶的字符不是success這7個(gè)字符狼牺,支付寶服務(wù)器會(huì)不斷重發(fā)通知笤喳,直到超過(guò)24小時(shí)22分鐘底循。一般情況下踱卵,25小時(shí)以內(nèi)完成8次通知(通知的間隔頻率一般是:4m,10m,10m,1h,2h,6h,15h);
微信
image
https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5
-
xml
<activity android:name=".wxapi.WXPayEntryActivity" android:exported="true" android:launchMode="singleTop"/>
-
公司后臺(tái)預(yù)支付返回訂單信息(含預(yù)支付id)
PayReq mPayReq = (PayReq) response; wxApi.registerApp(Contants.WX_APPID); wxApi.sendReq(mPayReq);
-
用戶使用微信app進(jìn)行支付后郑临,結(jié)果同步返回到本app的WXPayEntryActivity
public class WXPayEntryActivity extends BaseActivity implements IWXAPIEventHandler { private IWXAPI api; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.pay_result); String appid = "xxxxxxxxxxxxxxxxxxxxx"; api = WXAPIFactory.createWXAPI(this, appid); api.handleIntent(getIntent(), this); } @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); setIntent(intent); api.handleIntent(intent, this); } @Override public void onReq(BaseReq req) { } @Override public void onResp(BaseResp resp) { switch (resp.errCode) { case BaseResp.ErrCode.ERR_OK: paySuccess(); ToastUtil.show(this, "支付成功"); return; case BaseResp.ErrCode.ERR_USER_CANCEL: ToastUtil.show(this, "支付取消"); break; case BaseResp.ErrCode.ERR_AUTH_DENIED: ToastUtil.show(this, "支付失敗!"); break; default: break; } finish(); } private void paySuccess() { Intent intent = new Intent(this, OrderSubmitSuccessActivity.class); startActivity(intent); if (AppManager.getInstance().hasActivity(PayConfirmActivity.class)) { AppManager.getInstance().finishActivity(PayConfirmActivity.class); } finish(); } }
對(duì)后臺(tái)通知交互時(shí)栖博,如果微信收到商戶的應(yīng)答不是成功“success”或超時(shí),微信認(rèn)為通知失敗厢洞,微信會(huì)通過(guò)一定的策略定期重新發(fā)起通知仇让,盡可能提高通知的成功率典奉,但微信不保證通知最終能成功。 (通知頻率為15/15/30/180/1800/1800/1800/1800/3600丧叽,單位:秒)