# 有調系統中都集成了哪些支付
微信支付 (https://pay.weixin.qq.com)
百度錢包 (http://b.baifubao.com)
銀聯支付 (http://mobile.unionpay.com/preference)
支付寶 (https://e.alipay.com/index.htm)
如何發起一個支付?
在微擎系統中,發起一個支付功能很簡單,只需要調用父類的$this→pay();方法即可,在發起支付時,請先確保你需要的數據包括用戶身份等信息已經提先入庫,支付成功通知不包含此類信息,只是負責通知支付成功或是失敗
具體請看下方例子:
//該代碼片斷在/framework/builtin/recharge/site.php中
~~~
public function doMobilePay() {
//獲取用戶要充值的金額數
$fee = floatval($_GPC['money']);
if($fee <= 0) {
message('支付錯誤, 金額小于0');
}
// 一些業務代碼。
//構造支付請求中的參數
$params = array(
'tid' => $chargerecord['tid'], //充值模塊中的訂單號,此號碼用于業務模塊中區分訂單,交易的識別碼
'ordersn' => $chargerecord['tid'], //收銀臺中顯示的訂單號
'title' => '系統充值余額', //收銀臺中顯示的標題
'fee' => $chargerecord['fee'], //收銀臺中顯示需要支付的金額,只能大于 0
'user' => $_W['member']['uid'], //付款用戶, 付款的用戶名(選填項)
);
//調用pay方法
$this->pay($params);
}
~~~
調用$this→pay($params);方法后,用戶會跳轉到收銀臺中。
如果不使用系統的 $this→pay($params); 方法,則需要手動添加記錄到系統訂單表,如下:
~~~
global $_W;
//構造支付請求中的參數
$params = array(
'tid' => $chargerecord['tid'], //充值模塊中的訂單號,此號碼用于業務模塊中區分訂單,交易的識別碼
'ordersn' => $chargerecord['tid'], //收銀臺中顯示的訂單號
'title' => '系統充值余額', //收銀臺中顯示的標題
'fee' => $chargerecord['fee'], //收銀臺中顯示需要支付的金額,只能大于 0
'user' => $_W['member']['uid'], //付款用戶, 付款的用戶名(選填項)
);
$log = pdo_get('core_paylog', array('uniacid' => $_W['uniacid'], 'module' => $params['module'], 'tid' => $params['tid']));
//在pay方法中,要檢測是否已經生成了paylog訂單記錄,如果沒有需要插入一條訂單數據
//未調用系統pay方法的,可以將此代碼放至自己的pay方法中,進行漏洞修復
if (empty($log)) {
$log = array(
'uniacid' => $_W['uniacid'],
'acid' => $_W['acid'],
'openid' => $_W['member']['uid'],
'module' => $this->module['name'], //模塊名稱,請保證$this可用
'tid' => $params['tid'],
'fee' => $params['fee'],
'card_fee' => $params['fee'],
'status' => '0',
'is_usecard' => '0',
);
pdo_insert('core_paylog', $log);
}
//執行自己的收銀臺或是直接跳轉至支付地址
~~~
如何判斷用戶是否支付成功?
當用戶支付完成后,系統會調用模塊中的$this→payResult($params);方法來通知支付是否成功,此方法為支付接口方(微信,支付寶,百度錢包等)調用,請避免使用checkauth()或是其它身份判斷
在進行狀態修改時,也請再次判斷一下用戶支付的金額是否與訂單的金額一致,確保支付安全,具體如下:
~~~
//該代碼片斷在/framework/builtin/recharge/site.php中
public function payResult($params) {
//一些業務代碼
//根據參數params中的result來判斷支付是否成功
if ($params['result'] == 'success' && $params['from'] == 'notify') {
//此處會處理一些支付成功的業務代碼
//此處再次判斷用戶支付的金額是否與其生成訂單的金額相符,二次驗證支付安全
if ($params['fee'] != $order['fee']) {
exit('用戶支付的金額與訂單金額不符合');
}
}
if (empty($params['result']) || $params['result'] != 'success') {
//此處會處理一些支付失敗的業務代碼
}
//因為支付完成通知有兩種方式 notify,return,notify為后臺通知,return為前臺通知,需要給用戶展示提示信息
//return做為通知是不穩定的,用戶很可能直接關閉頁面,所以狀態變更以notify為準
//如果消息是用戶直接返回(非通知),則提示一個付款成功
if ($params['from'] == 'return') {
if ($params['result'] == 'success') {
message('支付成功!', '../../app/' . url('mc/home'), 'success');
} else {
message('支付失敗!', '../../app/' . url('mc/home'), 'error');
}
}
}
~~~
支付的工作流程是什么?
1. 用戶在使用模塊功能需要支付時,模塊調用父類的$this→pay($params);方法來調用系統收銀臺功能。
2. 系統收銀臺接到模塊調用請求,生成支付界面(金額,商品信息等)。
3. 用戶在收銀臺中選擇支付手段,如微信支付,支付寶支持等。
4. 收銀臺根據用戶選擇的支付手段,請求到相應的支付接口上,用戶完成支付。
5. 完成支付后,系統會調用模塊中的 $this→payResult($params); 方法來通知支付狀態(成功或是失敗)。
6. 如下圖所示:

- 有調使用需知
- 有調商城使用條件
- 有調商城新手快速入門
- 公眾平臺綁定
- 網頁授權獲取信息
- 回調域名與JS接口
- 【七牛存儲】設置功能說明
- 如何設置商城權限管理
- 【分類層級】功能說明
- 【設置入口】功能說明
- 【會員設置】功能說明
- 【模板消息庫】功能說明
- 【消息提醒】功能說明
- 【支付方式】功能說明
- 【商城交易設置】功能說明
- 【商城關閉設置】功能說明
- 【商城關注及分享】功能說明
- 【商城基礎設置】功能說明
- 【自定義表單】功能說明
- 【快遞助手】功能說明
- 【淘寶助手】功能說明
- 【活動海報】功能說明
- 【超級海報】功能說明
- 【分銷樣式/文字】功能說明
- 【分銷—小店】功能說明
- 分銷中心功能說明
- 分銷商升級功能說明
- 【分銷—結算】功能說明
- 【分銷—上下線關系及分銷資格】功能說明
- 【分銷—基礎基本設置】功能說明
- 【分銷—入口設置】功能說明
- 分銷—排行榜設置功能說明
- 【分銷—無效的】功能說明
- 【分銷—已打款的】功能說明
- 【分銷 —待打款的】功能說明
- 【分銷— 待審核的】功能說明
- 【分銷—分銷商等級】功能說明
- 【分銷—分銷商增長趨勢統計】功能說明
- 【分銷—分銷商管理】功能說明
- 【數據會員統計】功能說明
- 【數據商品統計】功能說明
- 【數據銷售統計】功能說明
- 【財務下載對賬單】功能說明
- 【財務提現申請】功能說明
- 【財務充值記錄】功能說明
- 【營銷—優惠券設置】功能說明
- 【營銷—優惠券發放記錄】功能說明
- 【營銷—優惠券分類】功能說明
- 【營銷—優惠券管理】功能說明
- 【營銷—充值優惠】功能說明
- 【營銷—滿額包郵】功能說明
- 【營銷—滿額立減】功能說明
- 【營銷—抵扣設置】功能說明
- 【訂單批量發貨】功能說明
- 【訂單自定義導出】功能說明
- 【訂單維權】功能說明
- 【全部訂單】功能說明
- 【訂單已關閉】功能說明
- 【訂單已完成】功能說明
- 【訂單待付款】功能說明
- 【訂單待收貨】功能說明
- 【虛擬卡管理】功能說明
- 【訂單待發貨】功能說明
- 【訂單列表】概述功能說明
- 【會員消息】群發功能說明
- 【會員排行榜】功能說明
- 【會員分組】功能說明
- 【會員等級】功能說明
- 【會員管理】功能說明
- 【商品添加】功能說明
- 【商品管理】功能說明
- 【O2O插件】功能說明
- 【首頁管理】功能說明
- 【商城管理】功能說明
- 文章營銷】功能說明
- 有調商城常見問題
- 客服消息推送以及模板消息推送的區別
- 快遞助手使用手冊
- 模板消息行業選擇
- 分銷中心分銷通知設置店長稿
- 微信支付提示:wxpay:faild
- 微信支付提示簽名錯誤解決方法
- 微信支付提示:“URL未注冊”
- 有調商城【會員等級】與【分銷商等級】的區別
- 微信提示“請在微信客戶端內打開”“該鏈接無法訪問"
- 模板消息(高級模式)使用說明
- 新增快速導入批量發貨功能
- 關于OAuth2.0授權方式的調整
- 有調商城系統設置
- 商城各入口的設置
- 商品價格為0的修復
- 商城會員等級升級依據和商品分類層級設置
- 系統消息提醒和模板消息庫的設置
- 選擇開啟商城支付方式
- 商城交易設置
- 商城基礎、關注分享及關閉設置
- 商城管理
- 商城商品組的使用
- 如何添加虛擬卡?
- 如何設置商品自定義表單
- 如何設置商品線下核銷
- 如何設置商品分銷
- 如何設置下單通知
- 如何設置購買商品強制關注
- 如何設置商品購買權限
- 如何設置商品詳情
- 如何設置商品參數
- 如何設置商品庫存/規格
- 如何設置商品基本信息
- 商城—商品管理
- 如何設置商品分類
- o2o插件操作說明
- 商城退貨地址管理操作說明
- 商城評價管理操作說明
- 商城配送方式操作說明
- 分銷管理
- 傭金的計算方式
- 結算后的傭金怎樣打款?
- 如何審核處理申請成為分銷商?
- 如何添加分銷商等級,設置分銷商傭金比例?
- 如何審核分銷商的傭金提現申請?
- 如何設置分銷商的傭金排名?
- 如何設置成為分銷商、新增下線等通知信息?
- 如何設置分銷中心的關鍵詞?
- 如何設置分銷商層級關系及升級條件?
- 怎樣設置分銷商獲取傭金?
- 如何設置傭金結算方式?
- 如何設置分銷商升級等級依據?
- 分銷中心傭金明細如何設置查看購買者詳情及購買商品詳情?
- 如何設置分銷商自己的店鋪?
- 如何修改商城分銷中心的樣式/文字?
- 設置手機前臺推廣二維碼
- 區域代理
- 關于區域代理
- 區域代理中心的入口設置
- 成為代理商及發放分紅的通知設置
- 商城代理商分紅發放流程
- 成為代理商開啟分紅的基本設置
- 有調商城全網通
- 全網通說明
- 全網通設置詳細功能設置
- 邏輯關系說明
- 微官網管理
- 如何建立一個微官網
- 如果添加官網輪播圖
- 如何添加欄目以及欄目內容
- 如何增加導航菜單和圖標
- 如何增加微官網的自定義菜單
- 微站管理中的其它內容
- 專題頁面
- 系統概述技術文檔
- 結構概述
- 入口腳本
- 有調MVC
- URL路由&創建
- 全局變量
- 加載器
- 錯誤處理
- 前端資源
- 目錄結構
- 支付流程
- 系統模板技術文檔
- 模板標簽
- 數據調用
- 常用變量
- 系統數據庫技術文檔
- 參數綁定
- 數據操作
- 主從配置
- 連接其它數據庫
- 微信API技術文檔
- 公眾號AccessToken
- 共享收貨地址