支付寶支付非常簡(jiǎn)單荞怒,因?yàn)椴襟E簡(jiǎn)單耻讽,文檔寫的也比較詳細(xì)玖像。
第一步,把支付寶的jar包復(fù)制到項(xiàng)目里齐饮。
第二步捐寥,如果你看了支付寶的demo你可能會(huì)覺(jué)得很復(fù)雜,其實(shí)有很多我們都用不上祖驱∥湛遥看起來(lái)很復(fù)雜的原因是,demo把加密放到客戶端捺僻。但是乡洼,為了安全,我們實(shí)際開(kāi)發(fā)中匕坯,必須把加密這塊放到服務(wù)端束昵。下面上代碼。
private void aliPay(String requestUrl) {
Runnable payRunnable = new Runnable() {
@Override
public void run() {
PayTask alipay = new PayTask(PayActivity.this);
Map< String, String > result = alipay.payV2(requestUrl, true);
Log.i("msp", result.toString());
Message msg = new Message();
msg.what = SDK_PAY_FLAG;
msg.obj = result;
mHandler.sendMessage(msg);
}
};
Thread payThread = new Thread(payRunnable);
payThread.start();
}
這里的requestUrl是服務(wù)端集成完支付寶后葛峻,我們請(qǐng)求他接口返回的字符串锹雏。這個(gè)字符串是拼接了簽名,公鑰等參數(shù)术奖,我們不需要管礁遵,拿過(guò)來(lái)調(diào)起支付寶支付就可以了轻绞。
@SuppressLint( "HandlerLeak" )
private Handler mHandler = new Handler() {
@SuppressWarnings( "unused" )
public void handleMessage(Message msg) {
switch ( msg.what ) {
case SDK_PAY_FLAG: {
@SuppressWarnings( "unchecked" )
PayResult payResult = new PayResult((Map< String, String >) msg.obj);
/**
對(duì)于支付結(jié)果,請(qǐng)商戶依賴服務(wù)端的異步通知結(jié)果佣耐。同步通知結(jié)果政勃,僅作為結(jié)束的通知。
*/
String resultInfo = payResult.getResult();// 同步返回需要驗(yàn)證的信息
String resultStatus = payResult.getResultStatus();
// 判斷resultStatus 為9000則代表支付成功
if ( TextUtils.equals(resultStatus, "9000") ) {
// 該筆訂單是否真實(shí)支付成功兼砖,需要依賴服務(wù)端的異步通知奸远。
Toast.makeText(PayActivity.this, "支付成功", Toast.LENGTH_SHORT).show();
finish();
} else {
// 該筆訂單真實(shí)的支付結(jié)果,需要依賴服務(wù)端的異步通知讽挟。
Toast.makeText(PayActivity.this, "支付失敗", Toast.LENGTH_SHORT).show();
finish();
}
break;
}
default:
break;
}
}
;
};
第三步然走,然后是支付完成的回調(diào)了。在回調(diào)里做自己需要的業(yè)務(wù)邏輯戏挡。代碼在上面。