1、准備
1.1、公眾號為服務號,開通微信支付功能
1.2、為了方便調試微信后台的回調URL(必須為外網),我用了nat123軟件來做一個映射
1.3、官方微信開發的示例WxPayApi(.net版本)
2、業務流程圖
3、步驟
3.1、用戶訪問商戶的鏈接,商戶鏈接地址調用【網頁授權獲取用戶信息】接口獲取用戶的openid和access_token
參考:
網頁授權獲取用戶基本信息
3.1.1、第一步,用戶同意授權,獲取code,調用接口如下
如:redirect_uri填:http://edoec.com/EdoecPayWeb/Views/WxPay/ProductPage.aspx,redirect_uri網址的域名(這里是edoec.com)要先在公眾號的“網頁授權獲取用名基本信息”的“授權回調域名地址”里設置好,如下圖:
這個接口要調用成功的條件是要在公眾號的“網頁授權獲取用戶基本信息”填寫“授權回調頁面域名”
否則微信公眾號支付jsapi,打開網頁后,出錯如下錯誤:redirect_uri錯誤
授權回調頁面的域名是上面:redirect_uri的域名,即:edoec.com

3.1.2、第二步,通過回調地址redirect_uri收到code值,通過code換取網頁授權access_token和openid
請求格式如:
在WxPayApi示例里第二步出錯:
請求格式:
出錯如下:
原因:在HttpService.cs的get方法里用了代理,我代理里的ip寫成了空,不要用代理
3.2、用3.1中獲取到openid調用統一下單api,代碼如下

通過調用url:https://api.mch.weixin.qq.com/pay/unifiedorder,來在微信支付系統下單,生成賬單,這里會返回生成賬單的賬單號prepay_id
3.3、最終在HTML5界面調用支付JSAPI(對應業務流程圖的“JSAPI接口請求支付”流程):
需要:
1、在3.2步驟里微信支付系統通過統一下單已經產生的單號:prepay_id,和paySign
2、
發起支付的HTML5界面必須在微信公眾號——>微信支付——〉開發配置——〉支付授權目錄里,如下圖
格式如下:
"{\"appId\":\"wxa842e8005c427e2d\",\"nonceStr\":\"1f2f9eda959b468e8c98c100e5e3b755\",\"package\":\"prepay_id=wx201602291402363c9dbefb210900648129\",\"paySign\":\"94AB6A4E818266C0338A4A28E08D016C\",\"signType\":\"MD5\",\"timeStamp\":\"1456725741\"}"
