<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 有調系統中都集成了哪些支付 微信支付 (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. 如下圖所示: ![](https://box.kancloud.cn/2016-04-02_56ff27a7b111b.jpg)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看