解決辦法
1. 商家參數格式有誤,請聯系商家解決
a.對於前后端分離的開發模式 前端發起請求 服務端請求微信h5支付統一下單接口 返回參數mweb_url 給前端 然后前端調起微信h5支付
b.注意的是 微信商戶平台 開發配置 H5支付授權域名是一級域名 例:一級域名 mark.com
c. 前端的二級域名:web.mark.com 確保前端調用mweb_url時的 前端url地址 和 H5支付授權域名是同一個域名地址下的
d. 哈哈哈 微信h5文檔說的是缺少referer 找了好久 這個家伙 原來是調起支付的二級域名錯了 前端應該有個二級域名去調支付才行 后台是提供接口的 只有M層和C層 V層的家伙還是要前端去搞吧
微信h5支付新版詳細的介紹可以看: https://www.cnblogs.com/txw1958/p/wxpayv3_h5.html
擴展 refer的解釋: https://www.sojson.com/blog/58.html
2.微信支付回調地址的控制器打印數據為空的話 就應該是打印數據的位置不對 一般應該在NotifyProcess這個方法里打印$data數據 這樣就有數據了
3.微信支付返回
a.這個時候 打印下 mweb_url 看看是不 prepay_id 為空值
b. 然后我們看微信H5支付文檔 https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=9_20&index=1
c. 預支付交易會話標識 prepay_id 的解釋:
微信生成的預支付回話標識,用於后續接口調用中使用,該值有效期為2小時,針對H5支付此參數無特殊用途
d.解決辦法
1.這個prepay_id 說的是第一次生成 然后兩小時之內有效 可以在兩個小時內生成 這個 prepay_id 兩小時之后 這個訂單號無法生成prepay_id的值 再調用 就會出現 支付失效請重新下單
2.操作場景一般是 用戶調起微信支付 就已經生成一個prepay_id 但是沒有支付的話 兩個小時之后 這個訂單號 就會失效
3.業務處理的話 建一個偽訂單表 和 自己的真訂單號的 id 綁定 如果鏈接的prepay_id為空的話 就給偽訂單表里 加一條數據 然后通過偽訂單號 進行調起訂單 回調的時候 先判斷有沒有在偽訂單表里 有的話 就去取真訂單表的訂單號 然后完成狀態更改