一、開發準備
1、注冊微信公眾號
2、注冊開發者賬號(微信開放平臺)
3、在開發者賬號內綁定自己的微信公眾號
4、申請測試公眾號
二、在微信公眾號平臺獲取基本參數(保存在配置文件里)
token
test_token
appid
appsecret
mch_id //支付
test_appid
test_appsecret
server_notify
key
三、服務器在獲取基本參數
1、驗證服務器(80 443端口,接受GET請求,驗證簽名)
2、獲取ACESS_TOKEN(用獨立服務刷新),可以保存在文件里,也可以保存在redis里,建議獨立進程去刷新,有失敗重試和報警
3、配置JSSDK,調用微信JSSDK接口時需要用到
4、獲取 openid(oauth2.0),獲取微信用戶信息綁定自己的數據庫用戶時需要用到
四、微信開發
1、微信菜單 把JSON對象傳給微信服務器,建議做成單獨的功能,不要和其他功能
2、微信支付
1)注入JSSDK config(其實不用注入也可以成功)
2)注入成功之后要驗證 Agent是否支持微信支付
3)客戶端輸入信息完畢之后,點擊支付后
4)服務器進行輸入校驗后,保存訂單和用戶信息,然后通過統一下單接口生成訂單, 并發送給客戶端
5)不要使用JSSDK網頁上的微信支付接口,使用微信支付詳情頁面示例的微信支付接口進行支付
6)支付成功后,用wx.closeWindow()接口關閉頁面
7)微信會給服務器一個回調,然后服務器更改訂單狀態,并通過客服消息接口給客戶發個信息反饋(注意重復驗證)
2、微信客服消息
1)接受回調, 驗證簽名和隨機字符串是否正確
2)正確之后發布客服消息
3、微信事件通知及被動消息回復
1)在開發者配置里,把服務器回調網址配置好
2)當微信接到用戶特定動作時時,會給服務器發送事件通知(POST),然后開發者直接回復 xml 或者 '' 即可
五、注意要點
1、微信的SessionID會一直變化, 所以不能用Session去存openid,可以采用的是cookies localStorage存儲
2、微信支付的支付頁面,強匹配網址(http://www.seoimc.net 和http://www.seoimc.net/)都不一樣,有一點網址不一樣都不行
3、微信支付的支付 sdk 舊的和新的在微信支付頁面沒有標明,(JSSDK說明文檔上的支付API是舊的),千萬不要用舊的了, 用新的即可
4、微信API上充斥著各種風格的變量名(noncestr nonce_str nonceStr 以及 timestamp timeStamp)千萬要小心
5、微信開發, 本質是web移動端開發,只是有時候需要調用JSSDK接口,有時候需要與微信服務器通信讓微信服務器發送指令給用戶,開發過微信支付之后,基本上就沒什么難點了...
6、微信有php示例代碼,開發的時候可以參考一下,語言都是通用的