開(kāi)源中國(guó)連接http://www.oschina.net/question/565065_68123
本文檔因?yàn)闆](méi)有信用卡和網(wǎng)銀丘跌,所以沒(méi)測(cè)試狗唉,但是基本思路實(shí)現(xiàn)了,可以參考下义桂,支付寶用燕十八老師視頻里面的畴栖。
路由如下:
Route::get('pay',function(){
//$row為用戶提交過(guò)來(lái)的內(nèi)容
$row=[];
$row['v_amount'] = '0.01';//用戶提交的金額
$row['v_moneytype'] = 'CNY';//人民幣
$row['v_oid'] = '201608221111'.rand(1000,9999);//訂單編號(hào)
$row['v_mid'] = '20272562';//商戶編號(hào)随静,需要和第三方申請(qǐng)的
$row['v_url'] = 'yzj.com/finishpay';//支付完成跳轉(zhuǎn)到該url
$row['key'] = '%()#QOKFDLS:1*&U';//與第三方申請(qǐng)返回的salt,一般放在.env文件中
//校驗(yàn)串加密算法吗讶,將訂單中的v_amount,v_moneytype,v_oid,v_mid,v_url,key,拼接成無(wú)間隔字符串
//順序不變燎猛,md5加密,在轉(zhuǎn)換成大寫(xiě)
$row['v_md5info'] = strtoupper(md5(implode('',$row)));
return view('pay',$row);
});
//支付完成跳轉(zhuǎn)路由照皆,這里面需要做些判斷重绷,支付成功需要修改訂單狀態(tài),如果第一次第三方提交過(guò)來(lái)信息服務(wù)器沒(méi)有接受到膜毁,
//這種情況下不用擔(dān)心昭卓,因?yàn)榈谌狡脚_(tái)會(huì)隔斷時(shí)間繼續(xù)發(fā)送信息再次訪問(wèn),知道成功
Route::post('finishpay',function(){
//在接受之前要修改下全局中間件csrftoken瘟滨,設(shè)置當(dāng)前路由除外
//在Middleware/VerifyCsrfToken.php,設(shè)置$except=['finishpay']
//檢測(cè)是否成功(可以使用Request對(duì)象),按下列順序進(jìn)行拼加密轉(zhuǎn)成大寫(xiě)
$md5 = $_POST['v_oid'].$_POST['v_pstatus'].$_POST['v_amount'].$_POST['moneytype'].'%()#QOKFDLS:1*&U';
$md5 = strtoupper( md5($md5) );
if($md5 == $_POST['v_md5str']){
return view('finishpay',['msg' => '支付成功']);
}else{
return view('finishpay',['msg' => '支付失敗']);
}
});
blade模板demo:
#pay.blade.php
#商戶>>>>>>網(wǎng)銀在線支付:
<form method=post action="https://pay3.chinabank.com.cn/PayGate">//提交第三方京東錢(qián)包支付接口
<input type=hidden name=v_mid value="{{$v_mid}}">//商戶編號(hào)
<input type=hidden name=v_oid value="{{$v_oid}}">//訂單號(hào)
<input type=hidden name=v_amount value="{{$v_amount}}">//訂單金額
<input type=hidden name=v_moneytype value="{{$v_moneytype}}">//金額種類(lèi)
<input type=hidden name=v_url value="{{$v_url}}">//返回的路徑
支付動(dòng)作完成后返回到該url候醒,支付結(jié)果以POST方式發(fā)送
<input type=hidden name=v_md5info value="{{$v_md5info}}">//加密字符串
<input type="submit" value="提交訂單">
</form>
#finishpay.blade.php
<h1>{{$msg}}</h1>