<pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

          <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

          <p id="bbfd9"></p>

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

            <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

            <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
            <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>

            PHP后臺微信支付使用方法

            時間:2025-11-15 18:01:26 php語言

            PHP后臺微信支付使用方法

              主要為大家詳細介紹了PHP后臺微信支付和支付寶支付開發的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下.

              微信支付

              項目前提:本人用的是tp框架,PHP語言

              下載到微信平臺提供的微信支付接口文件,放在了tp第三方類庫vendor,命名為WxpayAPI

              WxpayAPI/lib/WxPay.Api.php 接口訪問類;

              WxpayAPI/lib/WxPay.Config.php 配置賬號信息;

              WxpayAPI/lib/WxPay.Data.php 數據對象基礎類;

              WxpayAPI/lib/WxPay.Exception.php 微信支付API異常類;

              WxpayAPI/lib/WxPay.Notify.php 回調基礎類

              WxpayAPI/example/WxPay.JsApiPay.php JSAPI支付實現類

              1.對源碼進行了部分修改

              (1)WxPay.Api.php 里注釋掉

              /pic/p>

              /pic/p>

              /pic/p>

              (2)WxPay.Config.php里

              需要根據商戶信息對APPID , MCHID ,KEY , APPSECRET 進行配置。

              (3)WxPay.Data.php 里注釋掉

              /pic/p>

              /pic/p>

              (4)WxPay.JsApiPay.php 里注釋掉

              /pic/lib/WxPay.Api.php";

              配置好這些,接下來就是我們的重點部分了。

              2.在訂單控制器GoodsController.class.php有訂單函數sure()和回調信息函數 Callback_url()

              /**

              * 提交訂單函數

              */

              public function sure() {

              $o_model = D("Wine/Orders");

              if (IS_AJAX) {

              $data = I("post.");

              if ($o_model->create($data)) {

              if (!sp_check_verify_code()) {

              $this->error("驗證碼錯誤!");

              }

              #生成隨機訂單號

              $order_code = 'O' . date('YmdHis') . $o_model->get_order_code(4);

              while ($o_model->findone(array("order_code" => $order_code))) {

              $order_code = 'O' . date('YmdHis') . $o_model->get_order_code(4);

              }

              $data['order_code'] = $order_code;

              $addr[0] = $_POST['prov'];

              $addr[1] = $_POST['city'];

              $addr[2] = $_POST['dist'];

              $addr[3] = $_POST['area'];

              $data['area'] = serialize($addr);

              $data['create_time'] = time();

              $data['update_time'] = time();

              if ($data['pay_id'] == 1) {

              $data['order_status'] = 11; /pic/p>

              $data['status'] = '1';

              } else {

              $data['order_status'] = 10; /pic/p>

              $data['status'] = '1';

              }

              /pic/p>

              $this->Callback_url($data);

              } else {

              $this->error($o_model->getError());

              }

              } else {

              $this->error($o_model->getError());

              }

              }

              /**

              * 回調信息函數

              * @param type $data

              */

              public function Callback_url($data) {

              $o_model = D("Wine/Orders");

              $add_id = $o_model->add($data);

              if (!$add_id) {

              $this->error("訂單提交失敗,請稍后重試!");

              }

              if ('4' == $data['pay_id']) {

              if ('4' == $data['pay_id']) {

              /pic/p>

              $msg = '正在為您跳轉到微信支付頁面,請等待……';

              $url = "/index.php/wine/wxpay/index/?o_id=$add_id";

              }

              $this->success("訂單提交成功!" . $msg, $url);

              }

              3.[重點!!!] WxpayController .class.php微信支付控制器,實現對微信接口的調用

              ?

              1

              2

              3

              4

              5

              6

              7

              8

              9

              10

              11

              12

              13

              14

              15

              16

              17

              18

              19

              20

              21

              22

              23

              24

              25

              26

              27

              28

              29

              30

              31

              32

              33

              34

              35

              36

              37

              38

              39

              40

              41

              42

              43

              44

              45

              46

              47

              48

              49

              50

              51

              52

              53

              54

              55

              56

              57

              58

              59

              60

              61

              62

              63

              64

              65

              66

              67

              68

              69

              70

              71

              72

              73

              74

              75

              76

              77

              78

              79

              80

              81

              82

              83

              84

              85

              86

              87

              88

              89

              90

              91

              92

              93

              94

              95

              96

              97

              98

              99

              100

              101

              102

              103

              104

              105

              106

              107

              108

              109

              110

              111

              112

              113

              114

              115

              116

              117

              118

              119

              120

              121

              122

              123

              124

              125

              126

              127

              128

              129

              130

              131

              132

              133

              134

              135

              136

              137

              138

              139

              140

              141

              142

              143

              144

              145

              146

              147

              148

              149

              <?php

              /**

              * 微信支付接口調用

              */

              namespace Wine\Controller;

              use Common\Controller\HomebaseController;

              class WxpayController extends HomebaseController {

              public function _initialize() {

              parent::_initialize();

              Vendor("WxpayAPI/example/log");/pic/p>

              /pic/p>

              Vendor("WxpayAPI/example/WxPay#JsApiPay");

              Vendor("WxpayAPI/lib/WxPay#Config");

              Vendor("WxpayAPI/lib/WxPay#Data");

              Vendor("WxpayAPI/lib/WxPay#Exception");

              Vendor("WxpayAPI/lib/WxPay#Notify");

              Vendor("WxpayAPI/lib/WxPay#Api");

              /pic/p>

              $logHandler = new \CLogFileHandler("/projects/wine.huishuocs.com/data/pay_log/" . date('Y-m-d') . '.log');

              $log = \Log::Init($logHandler, 15);

              $this->model = D("Wine/Orders");

              $this->url = MODULE_NAME . '/' . CONTROLLER_NAME . '/index';

              }

              /**

              * 顯示支付頁面

              *

              */

              public function index() {

              /pic/p>

              $orderid = I("get.o_id", 0, "intval");

              $orderid || $this->error("非法操作!");

              $this->assign('orderid',$orderid);

              $info = $this->model->findone(array("a.id" => $orderid, 'a.status' => array('neq', '-1')));

              $info || $this->error("暫未查詢到該訂單!");

              /pic/p>

              if ($info['order_status'] != 10) {

              $this->error("訂單已支付!");

              }

              /pic/p>

              $tools = new \JsApiPay();

              $openId = $tools->GetOpenid(); #無法使用

              /pic/p>

              \Log::INFO('訂單' . var_export($info, true));

              $out_trade_no = \WxPayConfig::MCHID . date("YmdHis");

              $this->model->where(array("id" => $orderid))->save(array('out_trade_no' => $out_trade_no));

              /pic/p>

              /pic/p>

              $input = new \WxPayUnifiedOrder();

              $input->SetBody($info['mode_name']);

              $input->SetAttach($orderid);

              $input->SetOut_trade_no($out_trade_no);

              /pic/p>

              $input->SetTotal_fee($info['pay_price']*100); /pic/p>

              $this->assign('pay_price',$info['pay_price']);

              $input->SetTime_start(date("YmdHis"));

              $input->SetTime_expire(date("YmdHis", time() + 600));

              /pic/p>

              $input->SetNotify_url('/pic/index.php/Wine/Wxpay/callback"); /pic/p>

              $input->SetTrade_type("JSAPI");

              $input->SetOpenid($openId);

              $order = \WxPayApi::unifiedOrder($input);

              /pic/b></font><br/>';

              /pic/pic/p>

              $this->assign('o_id',$orderid);

              $this->assign('jsApiParameters', $tools->GetJsApiParameters($order));

              /pic/p>

              /pic/p>

              $this->display('wxpay');

              exit;

              }

              /**

              * 打印輸出數組信息

              * @param type $data

              */

              public function printf_info($data) {

              foreach ($data as $key => $value) {

              echo "<font color='#00ff55;'>$key</font> : $value <br/>";

              }

              }

              /* 支付成功回調函數 */

              public function callback() {

              /* 返回給微信服務器 */

              /pic/p>

              /pic/p>

              /pic/p>

              /pic/p>

              /pic/p>

              $logHandler = new \CLogFileHandler("/projects/wine.huishuocs.com/data/pay_log/" . date('Y-m-d') . '.log');

              $log = \Log::Init($logHandler, 15);

              /pic/p>

              $streamData = file_get_contents('php:/pic/p>

              if ($streamData != '') {

              $arr = $this->xmlToArray($streamData);

              \Log::INFO('支付' . var_export($arr, true));

              } else {

              $ret = false;

              }

              /pic/p>

              if (!empty($arr)) {

              # 數據

              \Log::INFO('數據1' . var_export($arr, true));

              #修改訂單狀態

              $out_trade_no = $arr['out_trade_no'];

              $newArr = array('order_status' => 11,'status'=>1);

              $this->model->where(array("out_trade_no" => $out_trade_no))->save($newArr);

              $info = $this->model->findone(array("a.out_trade_no" => $out_trade_no, 'a.status' => array('neq', '-1')));

              $sql = $this->model->getLastSql();

              \Log::INFO('數據2' . $sql);

              #添加支付記錄pay

              $pay = array(

              'payment_code' => 'wxpay',

              'trade_no'=>$info['order_code'],

              'out_trade_no'=>$out_trade_no,

              'order_id'=>$info['id'],

              'create_time'=>time()

              );

              M('payment_record')->add($pay);

              }

              /* 返回給微信服務器 */

              $mes = array(

              'return_code' => 'SUCCESS',

              'return_msg' => 'OK'

              );

              $this->ajaxReturn($mes, 'XML');

              }

              /pic/p>

              public function xmlToArray($xml) {

              /pic/p>

              libxml_disable_entity_loader(true);

              $values = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);

              return $values;

              }

              }

              ?>

              4.前端微信支付頁面wxpay.html

              ?

              1

              2

              3

              4

              5

              6

              7

              8

              9

              10

              11

              12

              13

              14

              15

              16

              17

              18

              19

              20

              21

              22

              23

              24

              25

              26

              27

              28

              29

              30

              31

              32

              33

              34

              35

              36

              37

              38

              39

              40

              41

              42

              43

              44

              45

              46

              47

              48

              49

              50

              51

              52

              53

              54

              55

              56

              57

              58

              59

              60

              61

              62

              63

              64

              65

              <html>

              <head>

              <meta http-equiv="content-type" content="text/html;charset=utf-8"/>

              <meta name="viewport" content="width=device-width, initial-scale=1"/>

              <link href="__TMPL__Public/css/weui.css" rel="external nofollow" type="text/css" rel="stylesheet"/>

              <title>微信訂單支付</title>

              <script type="text/javascript">

              /pic/p>

              function jsApiCall()

              {

              WeixinJSBridge.invoke(

              'getBrandWCPayRequest',

              <php> echo $jsApiParameters; </php>,

              function(res) {

              WeixinJSBridge.log(res.err_msg);

              if (res.err_msg == "get_brand_wcpay_request:ok") {

              /pic/p>

              /pic/p>

              window.location.href = '{:U("Orders/pay_ok",array("o_id"=>$o_id))}';

              } else {

              /pic/p>

              }

              }

              );

              }

              function callpay()

              {

              if (typeof WeixinJSBridge == "undefined") {

              if (document.addEventListener) {

              document.addEventListener('WeixinJSBridgeReady', jsApiCall, false);

              } else if (document.attachEvent) {

              document.attachEvent('WeixinJSBridgeReady', jsApiCall);

              document.attachEvent('onWeixinJSBridgeReady', jsApiCall);

              }

              } else {

              jsApiCall();

              }

              }

              </script>

              </head>

              <body>

              <br/>

              <p class="container" id="container"><p class="msg">

              <p class="weui_msg">

              <p class="weui_icon_area"><i class="weui_icon_success weui_icon_msg"></i></p>

              <p class="weui_text_area">

              <h2 class="weui_msg_title">訂單已生成</h2>

              <p class="weui_msg_desc">該筆訂單支付金額為:<php> echo $pay_price;</php></p>

              </p>

              <p class="weui_opr_area">

              <p class="weui_btn_area">

              <a href="javascript:;" rel="external nofollow" class="weui_btn weui_btn_primary" onclick="callpay()">立即支付</a>

              <!--<a href="{:U('Order/pay_ok',array('o_id'=>$_GET['o_id']))}" rel="external nofollow" class="weui_btn weui_btn_default">取消支付</a>-->

              </p>

              </p>

              <!--     <p class="weui_extra_area">

              <a href="/wap/order/order_det/<?php echo $order['id']?>.html" rel="external nofollow" >查看詳情</a>

              </p>-->

              </p>

              </p>

              </p>

              </body>

              </html>

              5.支付成功跳轉到OrderController.class.php ,訂單支付完成

              ?

              1

              2

              3

              4

              5

              6

              7

              8

              9

              10

              11

              12

              13

              14

              15

              16

              17

              18

              19

              20

              21

              22

              23

              24

              /**

              * 支付頁面

              */

              public function pay_ok() {

              $o_id = I("get.o_id", 0, "intval");

              $info = $this->model->findone(array("a.id" => $o_id, 'a.status' => array('neq', '-1')));

              if (empty($info)) {

              # 獲取最新可用的商品編號

              $goods = D('Goods')->where(array('status' => '1'))->order('id desc')->find();

              $this->error("該訂單不存在,請重新正確進入", U('Goods/sale', array('id' => $goods['id'])));

              }

              $this->assign('imgurl', "/wine/img/ok.png");

              $this->assign('tips', "訂購成功");

              if ('4' == $info['pay_id']) {

              /pic/p>

              $this->assign($info);

              $this->display();

              } else {

              $this->assign($info);

              $this->assign('tips', "訂購失敗");

              $this->assign('imgurl', "/wine/img/nook.png");

              $this->display();

              }

              }

            【PHP后臺微信支付使用方法】相關文章:

            PHP開發微信支付實例代碼12-19

            php微信支付之APP支付方法10-09

            PHP中trait的使用方法12-26

            php中cookie的使用方法11-05

            PHP autoload函數的使用方法01-02

            PHP微信jssdk配置12-22

            PHP如何開發paypal支付插件03-09

            PHP中魔術方法的使用方法12-03

            PHP中trait使用方法介紹03-04

                    <pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

                    <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

                    <p id="bbfd9"></p>

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

                      <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

                      <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
                      <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
                      飘沙影院