? Thinkphp5.0整合支付寶在線下單 - 素材火
頭像

Thinkphp5.0整合支付寶在線下單【原創

來源:https://www./php/3218.html 18***38 2017-11-17 16:02瀏覽(2835) 收藏

thinkphp5.0支付寶在線支付下單整個流程,包括創建訂單、支付成功回調更新訂單狀態、最終跳轉到商戶訂單詳情頁
Thinkphp5.0整合支付寶在線下單
分類:PHP > Thinkphp 難易:中級

程序員,你不是一個人;網站開發QQ群:35248186,在線充值,或聯系QQ2589223951直接充值

查看演示 下載資源: 15 下載資源 下載積分: 998 積分

支付寶在線支付控制器代碼

public function alipay() {//發起支付寶支付
         $order_no = date("YmdHis") . rand(100000, 999999);
        if (request()->isPost()) { //支付表單提交,并喚起支付寶在線支付
            //調用 application\index\model\Pay.php
            $Pay = new Pay;
            $result = $Pay->alipay([
                'notify_url' => request()->domain() . url('/php/index/index/alipay_notify/index.html'),
                'return_url' => request()->domain() . url('/php/index/index/alipay_return/index.html')."?order_no=".$order_no."&",
                'out_trade_no' => input('post.orderid/s', '', 'trim,strip_tags'),
                'subject' => input('post.subject/s', '', 'trim,strip_tags'),
                'total_fee' => input('post.total_fee/f'), //訂單金額,單位為元
                'body' => input('post.body/s', '', 'trim,strip_tags'),
            ]);
            if (!$result['code']) {
                return $this->error($result['msg']);
            }
            return $result['msg'];
        }
        //創建訂單
        db('order_sucaihuo')->insert(array(
            'order_no' => $order_no,
            'order_money' => 0.1, //訂單金額
            'state' => 0, //支付狀態 0 未支付, 1已支付
            'uid' => 1, //用戶uid
            'addtime' => time(), //下單時間
            'update_time' => 0 //支付時間
        ));
        $this->view->orderid = $order_no;
        return $this->fetch();
    }
    //支付寶客戶端會每隔一段時間請求一次
    public function alipay_notify() {//異步訂單通知
        $Pay = new Pay;
        $result = $Pay->notify_alipay();
        if ($result == 'success') {

            $pay_info = $_REQUEST;
            $order_no = $pay_info['out_trade_no'];
            $order_info = db('order_sucaihuo')->where('order_no', $order_no)->find();
            //若是未付款則更新
            if ($order_info['state'] == 0) {
                $data['trade_no'] = $pay_info['trade_no'];
                $data['state'] = 1;
                $data['update_time'] = time();
                db('order_sucaihuo')->where("order_no", $order_no)->update($data);
            }
        }
        //測試支付回調,linux記得開啟777寫入權限
        file_put_contents("notify.txt", $result);
        file_put_contents("request.txt", json_encode($_REQUEST));
   }

壓縮包有訂單表

CREATE TABLE IF NOT EXISTS `order_sucaihuo` (
  `id` int(11) unsigned NOT NULL,
  `uid` int(11) NOT NULL,
  `order_no` varchar(30) NOT NULL,
  `trade_no` varchar(150) DEFAULT NULL COMMENT '交易號',
  `order_money` decimal(10,2) DEFAULT '0.00',
  `state` int(2) NOT NULL DEFAULT '0',
  `addtime` int(10) NOT NULL,
  `update_time` int(10) DEFAULT '0'
) ENGINE=MyISAM AUTO_INCREMENT=6718 DEFAULT CHARSET=utf8;
標簽: 支付支付寶
聲明:本文為原創文章,如需轉載,請注明來源并保留原文鏈接:https://www./php/3218.html
最新交易
評論25
頭像

系統已開啟自動識別垃圾評論機制,識別到的自動封號,下載出錯或者資源有問題請聯系全棧客服QQ 2589223951

  • 頭像 24樓
    05-07 23:58
    to***ki
    這個必須要下載來學習
  • 頭像 23樓
    04-03 07:02
    vi***ng
    感謝分享,不錯的功能,很實用的源碼
  • 頭像 22樓
    03-28 08:26
    yu***t赫
    感謝分享,,,,tp5的這個很實用
  • 頭像 21樓
    03-16 15:29
    謝***雄
    tp5的這個框架加上支付寶的接口 還是很好的 現在很多都用這個
  • 頭像 20樓
    03-08 16:37
    真***年
    tp5的這個很實用,感謝分享。
  • 頭像 19樓
    02-05 23:53
    ***
    這個還是要學習下哦 可以不錯
  • 頭像 18樓
    02-02 09:27
    11***om
    這個支付寶很實用,下載來看看
  • 頭像 17樓
    01-25 11:38
    緣***分
    不錯,有項目可以馬上用了好東西解決支付了。需要參考借鑒
  • 頭像 16樓
    01-24 13:11
    xu***un
    差不多都是這樣處理的
  • 頭像 15樓
    01-17 11:14
    小***蕁
    謝謝 正在對接支付寶相關接口,需要參考借鑒
1 2