添加客服咨詢詳情
咨詢熱線:15918671994
多用戶
商城系統(tǒng)
訂單
管理系統(tǒng)
訂貨
管理系統(tǒng)
多語言
商城系統(tǒng)
發(fā)表于 2017-11-17 17:50:02 瀏覽:2602
WSTMart三級分銷系統(tǒng)為例分享支付寶支付是如何接入thinkphp5框架的
做電商網(wǎng)站的朋友都知道在線支付功能是必不可少的,作為現(xiàn)在線上支付巨頭“支付寶支付”,“微信支付”是一個電商網(wǎng)站的標(biāo)配。今天我們就來一起學(xué)習(xí)一下在thinkphp5 中“支付寶即時(shí)支付”是如何實(shí)現(xiàn)。這里我們以WSTMart三級分銷系統(tǒng)為例來講解一下:
1. 首先你在支付寶開通支付寶商戶號,
2. 登錄螞蟻金服開發(fā)平臺創(chuàng)建應(yīng)用,并簽約電腦網(wǎng)站支付
3. 將商戶信息配置到系統(tǒng)中
以上準(zhǔn)備工作做好了,我們來看看WSTMart三級分銷系統(tǒng)代碼是如何實(shí)現(xiàn)的:
在wstmart\home\controller\Alipays.php 支付寶控制器中,首生會初始化獲取到配置信息
/**
* 初始化
*/
private $aliPayConfig;
public function _initialize() {
$this->aliPayConfig = array();
$m = new M();
$this->aliPayConfig = $m->getPayment("alipays");
}
接下來會通過WSTMart三級分銷系統(tǒng)的getAlipaysUrl()方法來是組建調(diào)起支付寶所需要的參數(shù),并通過返回一個json數(shù)組將數(shù)據(jù)傳到頁面,然后跳轉(zhuǎn)url,調(diào)起支付寶進(jìn)行支付。
/**
* 生成支付代碼
*/
function getAlipaysUrl(){
這里代碼省略…
if($data["status"]==1){
$return_url = url("home/alipays/response","",true,true);
$notify_url = url("home/alipays/aliNotify","",true,true);
$parameter = array(
'extra_common_param'=> $extra_common_param,//擴(kuò)展參數(shù)
'service' => 'create_direct_pay_by_user',
'partner' => $this->aliPayConfig['parterID'],
'_input_charset' => "utf-8",
'notify_url' => $notify_url,
'return_url' => $return_url,
/* 業(yè)務(wù)參數(shù) */
'subject' => $subject,
'body' => $body,
'out_trade_no' => $out_trade_no,
'total_fee' => $orderAmount,
'quantity' => 1,
'payment_type' => 1,
/* 物流參數(shù) */
'logistics_type' => 'EXPRESS',
'logistics_fee' => 0,
'logistics_payment' => 'BUYER_PAY_AFTER_RECEIVE',
/* 買賣雙方信息 */
'seller_email' => $this->aliPayConfig['payAccount']
);
ksort($parameter);
reset($parameter);
$param = '';
$sign = '';
foreach ($parameter AS $key => $val){
$param .= "$key=" .urlencode($val). "&";
$sign .= "$key=$val&";
}
$param = substr($param, 0, -1);
$sign = substr($sign, 0, -1). $this->aliPayConfig['parterKey'];
$url = 'https://mapi.alipay.com/gateway.do?'.$param. '&sign='.md5($sign).'&sign_type=MD5';
$data["url"] = $url;
}
return $data;
}
當(dāng)用戶支付完成后,支付寶會異步調(diào)用商戶網(wǎng)站回調(diào)地址,WSTMart三級分銷系統(tǒng)的回調(diào)地址文件目錄是“home/alipays/aliNotify”,在aliNotify中會通過notify方法對支付寶進(jìn)行簽名驗(yàn)證,驗(yàn)證通過后再對訂單狀態(tài)進(jìn)行改變?!咀ⅲ夯卣{(diào)地址中不能出現(xiàn)“xxx?xx=1”這樣的帶參url】
/**
* 支付回調(diào)驗(yàn)證接口
*/
function notify($request){
$returnRes = array('info'=>'','status'=>false);
$request = $this->argSort($request);
// 檢查數(shù)字簽名是否正確
$isSign = $this->getSignVeryfy($request);
if (!$isSign){//簽名驗(yàn)證失敗
$returnRes['info'] = '簽名驗(yàn)證失敗';
return $returnRes;
}
if ($request['trade_status'] == 'TRADE_SUCCESS' || $request['trade_status'] == 'TRADE_FINISHED'){
$returnRes['status'] = true;
}
return $returnRes;
}
驗(yàn)證成功后就是商戶網(wǎng)站對訂單邏輯的處理了,WSTMart三級分銷系統(tǒng)在這里就不多說了,希望對大家有所幫助?。?/span>
獲取體驗(yàn)賬號 最新優(yōu)惠及電商資訊