要實現公眾號支付功能,前提已經完成了[微信平臺支付配置](微信平臺支付配置.md)
## 第一步:生成訂單
傳遞商品信息,自動生成訂單相關參數
~~~
$appid = '你的公眾號appid';
$product = [
'openid'=>'微信用戶在商戶對應appid下的唯一標識',
'body'=>'商品簡單描述',
'out_trade_no'=>'商戶系統內部訂單號,要求32個字符內、且在同一個商戶號下唯一',
'total_fee'=>'訂單總金額,單位為元'
];
$callback = '支付成功后的異步回調地址';
$pay = D('Common/Payment')->jsapi_pay($appid, $product, $callback);
if ($pay['status'] == 0) {
$this->error($pay['msg']);
}
$this->assign('pay', $pay);
//支付成功后頁面跳轉的地址
$this->assign('jump_url', U('show_success'));
~~~
prodect數組是傳遞最基本的商品參數,同時也支持傳遞更多微信支付里的[統一下單](https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1)接口里的參數
參數body請按照規范傳遞,具體請見[參數規則](https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=4_2)
其中callback回調地址的格式:應用名/model類名/方法名,如:weixin/Service/payok
而jump_url是支付成功后頁面跳轉的地址,一般是提示成功的界面
>[info] callback與jump_url是區別是:callback是用來接收微信異步提交的支付結果,可用于判斷是否成功支付;而jump_url僅用于頁面跳轉,不可用于判斷支付成功與否
## 第二步:前端顯示支付按鈕
在前端顯示支付按鈕,用戶點擊此按鈕就可以進入支付流程
~~~
<a href="javascript:void(0)" class="btn" onclick="doPay()">確認結算</a>
<script type="text/javascript">
function jsApiCall(){
WeixinJSBridge.invoke(
'getBrandWCPayRequest', {
"appId":"{$pay.appId}", //公眾號名稱,由商戶傳入
"timeStamp":"{$pay.timeStamp}", //時間戳,自1970年以來的秒數
"nonceStr":"{$pay.nonceStr}", //隨機串
"package":"{$pay.package}",
"signType":"{$pay.signType}", //微信簽名方式:
"paySign":"{$pay.paySign}" //微信簽名
},
function(res){
if(res.err_msg == "get_brand_wcpay_request:ok" ) {
window.location.href = "{$jump_url}";
}
}
);
}
function doPay(){
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>
~~~
## 第三步:異步接收支付結果
參考 [異步接收支付結果](異步接收支付結果.md)
# 常見問題
## 支付驗證簽名失敗

正常情況下,WeiPHP系統的支付功能都已經驗證測試過,如果出現此問題基本是API密鑰不對的原因
## 當前頁面的url未注冊
微信公眾平臺里的支付配置中的支付目錄設置為:http://您的網址/ (如http://www.weiphp.cn/)
原因1:URL的路由模式不對,如以下兩個網址都可以正常訪問,微信支付會誤認為第一個網址的目錄應該到jsapi
http://您的網址/index.php/weixin/payment/jsapi (錯誤的地址)
http://您的網址/index.php?s=/weixin/payment/jsapi (正確的地址)
原因2:當前頁面對應的目錄確實沒有支付目錄中配置,需要按照前面章節 [微信平臺支付配置](微信平臺支付配置.md) 進行配置
- 序言
- 基礎
- 安裝WeiPHP
- 目錄結構
- 錯誤碼分配
- 錯誤碼問答系統
- 入答疑群方法
- 快速入門
- 談談開發目標
- 前期準備
- 增加應用
- 編寫微信響應代碼
- 激動的時刻_體驗測試
- 用戶
- 用戶體系
- 超級管理員
- 運營人員
- 粉絲
- 掃碼登錄
- 公眾號
- 手工綁定
- 一鍵綁定
- 自定義菜單
- 微信支付
- 微信平臺支付配置
- 公眾號支付
- 原生掃碼支付
- 異步接收支付結果
- 現金紅包
- 發放普通紅包
- 查詢紅包記錄
- 紅包記錄數據結構
- 現金支付
- 下發支付
- 查詢支付記錄
- 現金支付數據結構
- 刷卡支付
- 提交刷卡支付
- 查詢刷卡支付記錄
- 撤銷刷卡支付
- 支付記錄數據結構
- API服務
- oauth2.0安全驗證
- 后臺配置API
- 小程序
- HTTPS部署
- 騰訊云服務器部署
- 阿里云HTTPS部署
- 自發證書HTTPS部署
- openssl升級到1.02
- 自動登錄注冊
- 短信驗證碼
- 網絡請求
- 上傳圖片
- 生成事件二維碼
- 小程序支付
- 小程序微信支付配置
- 小程序調用支付功能
- 模板消息
- 消息模板配置
- 支付后發模板消息
- 提交表單后發模板消息
- 卡券(會員卡、優惠券)
- 客服
- 與公眾號互通
- 微信開放平臺
- 一鍵綁定公眾號
- 積分等級
- 積分規則
- 積分操作
- 積分等級數據結構
- 日志
- 后臺日志
- 運營日志
- 接口日志
- 調試日志
- 錯誤日志
- 日志數據結構
- 應用管理
- 應用管理列表
- 新增應用
- 應用開發
- 安裝應用
- 模型
- 模型介紹
- 模型管理
- 新增加模型
- 新增加字段
- 列表定義
- 通用視圖模板
- 定時任務
- 定時任務介紹
- 配置定時任務
- 開啟定時器
- 系統自觸發
- window定時器
- Linux定時器
- Mac定時器
- 定時任務數據結構
- 商業應用
- 分銷商城
- 教育培訓
- 搖紅包
- 夢云社區
- 婚慶派
- 部署
- Linux服務器一鍵安裝包部署
- Window集成包部署