<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## **接口內容列表** 說明:所有的支付接口都需要開能微信支付后才能使用 **特別要求**:在使用`JSAPI`支付時,必需傳入`JSSDK`配置參數`wx.config()`,見上一個章節。 [TOC] ## **微信支付步驟** * 一、根據商戶訂單號生成預支付碼(區分支付類型) * 二、根據支付類型來處理預支付碼 > JSAPI支付,需要創建JS簽名包,然后在微信網頁上發起支付 > 掃碼支付,直接將預支付碼生成二維碼就可以了 * 三、在生成預支付碼時,需要指定接收支付通知URL,通常也在通知處理時判斷交易是否已完成 ## **生成微信預支付ID(`NATIVE`模式二與`JSAPI`通用)** 參數說明: * 參數`$openid`為支付者`openid`(`JSAPI`支付必需,`NATIVE`支付時無需填寫,給`NULL`就可以了) * 參數`$body`為交易訂單標題(注意文字編碼不要出現特殊字符) * 參數`$out_trade_no`為商戶訂單號(訂單支付成功后不可重復使用) * 參數`$total_fee`為訂單交易金額,單位為分(如支付`1`元需填寫`100`) * 參數`$trade_type`指定支付發起類型,常用類型有`JSAPI`(網頁支付)、`NATIVE`(掃碼支付)、`APP`(APP支付) ~~~ // 實例支付接口 $pay = & load_wechat('Pay'); // 獲取預支付ID $result = $pay->getPrepayId($openid, $body, $out_trade_no, $total_fee, $notify_url, $trade_type = "JSAPI"); // 處理創建結果 if($result===FALSE){ // 接口失敗的處理 return false; }else{ // 接口成功的處理 } ~~~ ## **發起微信掃碼`NATIVE`支付,模式一** * 第一步生成支付規則二維碼 ~~~ // 實例支付接口 $pay = & load_wechat('Pay'); // 獲取二維碼的內容,參數 $product_id 為商戶定義的商品id 或者訂單號 $qrc = $pay->getQrcPayUrl($product_id); // 用PHP類去生成二維碼(當然也可以用JS去生成),二維碼的內容就是 $result ~~~ * 第二步,接收微信掃碼通知,需要配置公眾平臺`掃碼支付 > 支付回調URL` ~~~ // 實例支付接口 $pay = & load_wechat('Pay'); // 獲取通知的數據 $notify = $pay->getNotify(); // 獲取通知數據結果處理 if ($notify === false) { echo $pay->errMsg; } else{ } ~~~ * 其中`Notify`返回的字段如下: ~~~ Array ( [appid] => wx60a43dd8161666d4 [openid] => o38gps3vNdCqaggFfrBRCRikwlWY [mch_id] => 1332187001 [is_subscribe] => Y [nonce_str] => ZcuirbtPMTUuYER9 [product_id] => 8888 [sign] => 3D8B5452E1C3566CA967D0B7C93A5574 ) ~~~ * 第三步,根據接收到的數據,創建`qrcPrepayid` ~~~ // @todo,創建訂單并生成訂單號 $order_no = '訂單號'; // 生成支付通知地址,需要帶上完整http及域名 $notify_url = 'http://youdomaon.com/pay/notify.html'; // 創建預支付碼,參數:用戶openid,支付內容,訂單號,支付通知地址 $prepayid = $pay->getQrcPrepayId($notify['openid'], '支付測試', $order_no, 1, $notify_url); // 失敗的處理 if($prepayid===false){ } ~~~ * 第四步,輸出`xml`結果,微信端將自動發起支付 官方參考:[https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6\_4](https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_4) ~~~ $data = array( 'return_code' => 'SUCCESS', 'return_msg' => '創建支付成功!', 'appid' => $pay->appid, 'mch_id' => $pay->mch_id, 'nonce_str' => \Wechat\Lib\Tools::createNoncestr(), 'prepay_id' => $prepayid, 'result_code' => 'SUCCESS', 'err_code_des' => 'null' ); $data['sign'] = \Wechat\Lib\Tools::getPaySign($data, $pay->partnerKey); echo \Wechat\Lib\Tools::arr2xml($data); ~~~ ## **發起微信掃碼`NATIVE`支付,模式二** * 微信掃碼支依賴于`微信預支付ID`,參考上面 * 獲取到`微信預支付ID`后,直接將`微信預支付ID`生成二維碼即可 * 在接收微信支付通知時,再來處理相關訂單的支付狀態 * 參考DEMO:[ThinkPHP 5.0 微信掃碼支付](http://www.hmoore.net/zoujingli/wechat-php-sdk/219111) ~~~ // 實例支付接口 $pay = & load_wechat('Pay'); // 獲取預支付ID $result = $pay->getPrepayId($openid, $body, $out_trade_no, $total_fee, $notify_url, $trade_type = "NATIVE"); // 處理創建結果 if($result===FALSE){ // 接口失敗的處理 return false; }else{ // 用PHP類去生成二維碼(當然也可以用JS去生成),二維碼的內容就是 $result } ~~~ ## **發起微信網頁`JSAPI`支付** * 微信網頁`JSAPI`支付相對微信掃碼`NATIVE`支付要復雜一些,需要生成`JS`簽名包 * 首先生成`微信預支付ID`,參考上面 * 然后將`微信預支付ID`及參數進行簽名并生成`JSSDK`所需要的參數 ~~~ // 實例支付接口 $pay = & load_wechat('Pay'); // 創建JSAPI簽名參數包,這里返回的是數組 $options = $pay->createMchPay($prepayid); ~~~ * 拿到`$options`簽名參數包后,附值到前端`JS`中 ~~~ // 下面是 javascript 代碼 wx.ready(function () { // 這里獲取到PHP生成簽名參數包,注意是JSON格式 var options = <{$options|json_encode}>; // 支付成功后的操作 options.success = function () { window.location.href = "支付成功后的跳轉地址,通常是訂單列表"; }; // 取消支付的操作 options.cancel = function () { pay_order = true; }; // 支付失敗的處理 options.fail = function () { pay_order = true; }; // 傳入參數,發起JSAPI支付 wx.chooseWXPay(options); }); ~~~ * 至此,微信支付就只剩下通知處理了,根據通知更新相關訂單的支付狀態 ## **通過 支付通知回調 處理訂單狀態** ~~~ // 實例支付接口 $pay = & load_wechat('Pay'); // 獲取支付通知 $notifyInfo = $pay->getNotify(); // 支付通知數據獲取失敗 if($notifyInfo===FALSE){ // 接口失敗的處理 echo $pay->errMsg; }else{ //支付通知數據獲取成功 if ($notifyInfo['result_code'] == 'SUCCESS' && $notifyInfo['return_code'] == 'SUCCESS') { // 支付狀態完全成功,可以更新訂單的支付狀態了 // @todo // 返回XML狀態,至于XML數據可以自己生成,成功狀態是必需要返回的。 // <xml> // return_code><![CDATA[SUCCESS]]></return_code> // return_msg><![CDATA[OK]]></return_msg> // </xml> return xml(['return_code' => 'SUCCESS', 'return_msg' => 'DEAL WITH SUCCESS']) } } ~~~ 其中`$notifyInfo`的數據內容為: ~~~ array ( 'appid' => 'wx3581ccf368729be3', 'bank_type' => 'CFT', 'cash_fee' => '1', 'fee_type' => 'CNY', 'is_subscribe' => 'Y', 'mch_id' => '1307539701', 'nonce_str' => 'api268huedasmkfgdjofzwitpuaqjl0c', 'openid' => 'o9j5kw-B8ZCp_FWLBmnSkrr1qHRE', 'out_trade_no' => '959947360', 'result_code' => 'SUCCESS', 'return_code' => 'SUCCESS', 'sign' => '43C91961D389D0A9FC480BC5B13592E6', 'time_end' => '20161011103317', 'total_fee' => '1', 'trade_type' => 'NATIVE', 'transaction_id' => '4008082001201610116370274372', ) ~~~ ## **微信支付訂單關閉操作** * 參數`$out_trade_no`為商戶訂單號(創建`預支付ID`時傳入的`$out_no`) ~~~ // 實例支付接口 $pay = & load_wechat('Pay'); // 調用查詢接口 $result = $pay->closeOrder($out_trade_no); // 處理查詢結果 if($result===FALSE){ // 接口失敗的處理 echo $pay->errMsg; }else{ // 接口成功的處理 } ~~~ ## **微信支付訂單操作退款** * 參數`$out_trade_no`為商戶訂單號(創建`預支付ID`時傳入的`$out_no`) * 參數`$transaction_id`為微信內部訂單號(微信支付通知里有,所有在那里需要記錄下來) * 參數`$out_refund_no`為商戶退款訂單號(需要重新生成一個退款訂單號,不能重復的) * 參數`$total_fee`為訂單交易總金額(單位為分,如1元填寫100) * 參數`$refund_fee`為需要退款的金額(單位為分,如1元填寫100,其金額不能大于交易總金額) * 參數`$op_user_id`為操作員ID,默認為商戶ID(可不填寫) * **注意:退款操作,是需要配置交易證書`cert.zip`,可以微信商戶平臺下載** ~~~ // 實例支付接口 $pay = & load_wechat('Pay'); // 調用退款接口 $result = $pay->refund($out_trade_no, $transaction_id, $out_refund_no, $total_fee, $refund_fee, $op_user_id = null); // 處理創建結果 if($result===FALSE){ // 接口失敗的處理 echo $pay->errMsg; }else{ // 接口成功的處理 } ~~~ ## **微信支付訂單詳情查詢** * 參數`$out_trade_no`為商戶訂單號(創建`預支付ID`時傳入的`$out_no`) ~~~ // 實例支付接口 $pay = & load_wechat('Pay'); // 調用查詢接口 $result = $pay->queryOrder($out_trade_no); // 處理查詢結果 if($result===FALSE){ // 接口失敗的處理 echo $pay->errMsg; }else{ // 接口成功的處理 } ~~~ ## **微信支付訂單操作退款狀態查詢** * 參數`$out_trade_no`為商戶訂單號(創建`預支付ID`時傳入的`$out_no`) ~~~ // 實例支付接口 $pay = & load_wechat('Pay'); // 調用查詢接口 $result = $pay->refundQuery($out_trade_no); // 處理查詢結果 if($result===FALSE){ // 接口失敗的處理 echo $pay->errMsg; }else{ // 接口成功的處理 } ~~~ ## **獲取微信支付對賬單** 參數`$bill_date`為對賬日期(格式:20140603) 參數`$bill_type`為賬單類型,可以不填寫,默認值 ALL。可選 ALL(返回當日所有訂單信息)、SUCCESS(返回當日成功支付的訂單)、REFUND(返回當日退款訂單) ~~~ // 實例支付接口 $pay = & load_wechat('Pay'); // 獲取對賬單 $result = $pay->getBill($bill_date, $bill_type); // 處理結果 if($result===FALSE){ // 接口失敗的處理 echo $pay->errMsg; }else{ // 接口成功的處理 } ~~~ ## **微信公眾號給粉絲發送現金紅包** * 參數`$openid`為紅包接收者Openid * 參數`$amount`為紅包金額(如1元填寫100,最少不能少于1元) * 參數`$billno`為商戶訂單號(需要自己生成,不能重復使用) * 參數`$sendname`為商戶名稱(紅包上會顯示的哦) * 參數`$wishing`為紅包的祝福語(紅包上會顯示的哦) * 參數`$actname`為活動名稱 * 參數`$remark`為活動紅包備注信息 * **注意:發送現金紅包,是需要配置交易證書`cert.zip`,可以微信商戶平臺下載** ~~~ // 實例支付接口 $pay = & load_wechat('Pay'); // 調用方法 $result = $pay->sendRedPack($openid, $amount, $billno, $sendname, $wishing, $actname, $remark); // 處理結果 if($result === FALSE){ // 返回失敗的處理結果 echo $pay->errMsg; }else{ // 返回成功的處理結果 } ~~~ ## **微信現金紅包狀態查詢** * 參數`$billno`為商戶訂單號(發送紅包時傳入的`$billno`) ~~~ // 實例支付接口 $pay = & load_wechat('Pay'); // 調用查詢接口 $result = $pay->queryRedPack($billno); // 處理查詢結果 if($result===FALSE){ // 接口失敗的處理 echo $pay->errMsg; }else{ // 接口成功的處理 } ~~~ ## **微信公眾號使用企業打款給個人** * 參數`$openid`為款項接收者Openid * 參數`$amount`為款項金額(如1元填寫100,最少不能少于1元) * 參數`$billno`為商戶訂單號(需要自己生成,不能重復使用) * 參數`$desc`為活動紅包備注信息(支付信息上會顯示的哦) * **注意:企業打款給個人,是需要配置交易證書`cert.zip`,可以微信商戶平臺下載** ~~~ // 實例化支付接口 $pay = & load_wechat('Pay'); // 調用方法 $result = $pay->transfers($openid,$amount,$billno, $desc); // 處理結果 if($result === FALSE){ // 返回失敗的處理結果 echo $pay->errMsg; }else{ // 返回成功的處理結果 } ~~~ ## **微信企業打款狀態查詢** * 參數`$billno`為商戶訂單號(企業打款時傳入的`$billno`) ~~~ // 實例支付接口 $pay = & load_wechat('Pay'); // 調用查詢接口 $result = $pay->queryTransfers($billno); // 處理查詢結果 if($result===FALSE){ // 接口失敗的處理 echo $pay->errMsg; }else{ // 接口成功的處理 } ~~~
                  <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>

                              哎呀哎呀视频在线观看