流程
- 申請APP的微信支付
- 申請成功之后得到APPID 商戶號 以及自己設置商戶號的支付密碼
- 這時就可以開發接口了
微信APP支付API:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_1
微信APP開發SDK:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=11_1
接口開發
1、就說三個接口吧主要這三個接口是必須用的(如圖),使用的方法SDK里面應該有(因為之前先開發的jsapi支付,所以我直接使用的是jsapi的dome方法)
2、調用統一下單。
照着參數列表把必須傳的參數賦值就可以了(非必傳的看你自己的業務需要了),然后發送給微信,得到返回的結果是xml,如果你用的是微信的dome,那么下單的方法是給你返回的 WxPayData 類型
注意:下單的時候會有一個參數 notify_url 這個參數是用來微信支付成功之后用來通知你的支付結果,用來你處理自己的邏輯,微信給的說明只是說能直接訪問、不帶參數就可以了,
但是沒說他結果是post回來的,如果你用的是mvc的話千萬不能把回調頁面寫成httpget的,這樣你會收不到微信的通知的
3、調起支付接口
需要的是7個參數,如下
應用ID(appid)、商戶號(partnerid)、預支付交易會話ID(prepayid)、擴展字段(package)、隨機字符串(noncestr)、時間戳(timestamp)、簽名(sign)
其中 應用ID(appid)、商戶號(partnerid)、擴展字段(package)這三個值是可以讓APP寫死的就不用傳值了,但擴展字段(package)參數微信只是暫填寫固定值Sign=WXPay,
所以以后他要變得話,還得重新讓APP打包,尤其iOS還得審核,特別麻煩,所以建議由參數方式傳值獲取,prepayid就是上邊統一下單接口返回的結果(當然上邊的接口得調用無誤),
需要注意的是:簽名(sign)並不是統一下單接口返回的那個簽名,而是需要用同樣的簽名方式把前六個參數在簽名一邊,獲取到的簽名才是APP需要的那個簽名。得到這些參數就可以傳給APP開發了。
如果不知道是不是簽名正確可以用微信提供的簽名在線驗證方法:https://pay.weixin.qq.com/wiki/tools/signverify/。看看同樣的參數你生成的簽名和微信的一樣不,一樣說明對了,不一樣就錯了。
4、支付結果通知
用的就是統一下單接口發送給微信的那個回調URL(notify_url),處理自己的邏輯業務