## 支付寶支付(即時到賬)
### 說明
使用支付寶支付插件可以快速對程序進行集成支付寶支付功能。使用簡單方便,不用進行復雜的代碼操作,只需簡單的設置即可實現支付寶即時到賬功能。
>[info] 支付寶插件地址:http://www.eacoo123.com/appstore_plugin/alipayWap
### 應用場景
1.手機端支付寶支付
### 實現過程
1.安裝支付寶插件,并在后臺配置信息。

2.在控制器中需要調用支付寶支付的位置添加代碼:
~~~
/**
* 支付寶
* @param string $out_trade_no 訂單號,自己生成
* @param integer $total_fee 支付金額,以元為單位。$total_fee='100'代表100元
* @param string $subject 商品名稱,不要使用充值、支付寶等字眼,會報錯。
* @param string $body 商品描述
* @return [type] [description]
*/
public function pay($out_trade_no = '', $total_fee = 0, $subject = '',$body = '')
{
header('Content-type:text/html;charset=utf-8');
$openid = '';
$notify_url = request()->domain().'/alipayNotify';
$total_fee = 0.01;
$parameter = [
"out_trade_no" => $out_trade_no,
"subject" => $subject,
"total_fee" => $total_fee,
"body" => $body,
"notify_url" => $notify_url,
];
$result = hook('alipay',$parameter,true);
return $result;
}
~~~
3.異步通知代碼如下:
~~~
/**
* 支付寶支付異步通知
* @return [type] [description]
* @author 心云間、凝聽 <981248356@qq.com>
*/
public function notify()
{
$plugin_class = get_plugin_class('alipayWap');
if (!class_exists($plugin_class)) {
echo 'fail';
exit;
}
$plugin_obj = new $plugin_class;
$verify_result = $plugin_obj->verifyNotify();
if($verify_result) {//驗證成功
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//請在這里加上商戶的業務邏輯程序代
//——請根據您的業務邏輯來編寫程序(以下代碼僅作參考)——
//獲取支付寶的通知返回參數,可參考技術文檔中服務器異步通知參數列表
//商戶訂單號
$out_trade_no = $_POST['out_trade_no'];
//支付寶交易號
$trade_no = $_POST['trade_no'];
//交易狀態
$trade_status = $_POST['trade_status'];
if($_POST['trade_status'] == 'TRADE_FINISHED') {
//判斷該筆訂單是否在商戶網站中已經做過處理
//如果沒有做過處理,根據訂單號(out_trade_no)在商戶網站的訂單系統中查到該筆訂單的詳細,并執行商戶的業務程序
//請務必判斷請求時的total_fee、seller_id與通知時獲取的total_fee、seller_id為一致的
//如果有做過處理,不執行商戶的業務程序
//注意:
//退款日期超過可退款期限后(如三個月可退款),支付寶系統發送該交易狀態通知
//調試用,寫文本函數記錄程序運行情況是否正常
//logResult("這里寫入想要調試的代碼變量值,或其他運行的結果記錄");
} else if ($_POST['trade_status'] == 'TRADE_SUCCESS') {
//判斷該筆訂單是否在商戶網站中已經做過處理
//如果沒有做過處理,根據訂單號(out_trade_no)在商戶網站的訂單系統中查到該筆訂單的詳細,并執行商戶的業務程序
//請務必判斷請求時的total_fee、seller_id與通知時獲取的total_fee、seller_id為一致的
//如果有做過處理,不執行商戶的業務程序
//注意:
//付款完成后,支付寶系統發送該交易狀態通知
//調試用,寫文本函數記錄程序運行情況是否正常
//logResult("這里寫入想要調試的代碼變量值,或其他運行的結果記錄");
}
//file_put_contents('./alipay_notify_data.txt',json_encode($_POST));
//——請根據您的業務邏輯來編寫程序(以上代碼僅作參考)——
echo "success"; //請不要修改或刪除
} else {
//驗證失敗
echo "fail";
//調試用,寫文本函數記錄程序運行情況是否正常
//logResult("這里寫入想要調試的代碼變量值,或其他運行的結果記錄");
}
}
~~~
## 最后
插件中附帶demo,僅供參考
- 前言
- 基礎
- 安裝
- 規范
- 數據庫設計
- 命名規范
- 建議參考
- 架構
- 架構總覽
- 目錄結構
- 生命周期
- 入口文件
- 模塊設計
- 插件設計
- 主題設計
- API設計
- 容器和依賴注入
- 驗證器設計
- 鉤子和行為設計
- 介紹
- 后臺介紹
- 儀表盤
- 系統設置
- 系統設置
- 網站設置
- 前臺導航菜單
- 后臺導航菜單
- 配置管理
- 用戶管理
- 權限管理
- 角色組
- 節點管理
- 附件管理
- 工具
- 擴展中心
- 模塊
- 插件
- 主題
- 前臺介紹
- API接口
- 模型層
- 定義
- 邏輯層
- 定義
- 邏輯初始化
- 服務層
- 定義
- 二次開發
- 模塊開發
- 介紹
- 1.結構目錄
- 2.install安裝目錄文件
- info.json
- options.php
- menus.php
- unstall.sql
- install.sql
- 3.安裝模塊
- 模塊函數與全局函數
- 其他
- 插件開發
- 介紹
- 定義入口文件
- 1.結構目錄
- 2.install安裝目錄文件
- info.json
- options.php
- menus.php
- install.sql
- unstall.sql
- 3.實現鉤子方法
- 4.安裝插件
- 開發使用
- 插件控制器Controller
- 插件模型Model
- 插件邏輯層Logic
- 開發總結
- 主題開發
- 介紹
- 結構目錄
- install安裝目錄
- info.json
- 主題變量
- 模塊主題化
- 插件主題化
- CSS、JS靜態資源引入
- 創建模版文件
- API開發
- 通用組件
- wangeditor編輯器
- 上傳
- 實戰開發
- 控制器
- 驗證器
- 接口
- 創建自定義模版
- 數據庫操作
- 通過接口上傳文件
- 構建器Builder(重要)
- 表單Form
- 設置頁面標題
- 表單項(調用方式)
- 文本框text
- 隱藏域hidden
- 文本區textarea
- 時間選擇器datetime
- 圖片選擇器picture
- 多圖片選擇器pictures
- 圖片上傳image
- 文件上傳file
- wang編輯器wangeditor
- 百度富文本編輯器ueditor
- 選擇項
- 添加標簽欄Tab
- 自定義頭部工具欄
- 表單提交處理
- 列表List
- 設置頁面標題
- 添加標簽欄Tab
- 高級查詢
- 查詢構造器
- 添加列表搜索功能
- 添加批量操作
- 自定義頭部工具
- 頂部新增按鈕
- 頂部批量啟用
- 頂部批量禁用
- 排序Sort
- 表單驗證
- 插件-Builder構建器
- 命令行
- 配置
- 擴展專題
- 輕松識別客戶端信息User Agent
- 字符串
- 數組
- 鉤子、插件、模塊相關方法
- 時間
- 請求(request)
- 附件
- 用戶信息
- 前臺用戶
- 后臺用戶
- 微信(wechat模塊)
- 專題
- 插件專題
- 微信支付
- 支付寶(即時到賬)
- 微信小程序專題
- 微信模塊
- 日志
- 后臺行為日志
- 框架日志
- 自定義日志
- 常見問題集
- 附錄
- 配置參考
- 常量參考
- 變量參考
- 更新日志
- 升級指導
- 關于
- 進階
- 分布式數據庫
- 分布式緩存
- 負載均衡
- Redis
- 分庫分表