準備工作
在應用集成微信支付之前,我們在微信開放平臺必須要個開發者賬戶
1.註冊完之後創建一個移動應用,並獲取APPid等可以參考:
http://blog.csdn.net/vroymond/article/details/53422744
2.申請開通微信支付能力
- 認證開發者資格
- 開通微信支付
3.開通成功後,獲取得到商戶號並在商戶平臺配置API密鑰(生成預支付訂單號需要)
API密鑰配置流程:http://help.ecmoban.com/article-2085.html
4.在項目中導入微信提供的jar包
5.在項目包名下創建一個wxapi的包,並創建一個WXPayEntryActivity的類(微信分享以及登錄必須要求,該類繼承activity並實現IWXAPIEventHandler接口,用於拿到支付的回調結果),並在清單文件中註冊。
調起微信支付
步驟:
1.客戶端(APP)提交訂單信息給服務端,服務端根據微信接口:統一下單接口,生成預支付Id(prepay_id)返回給客戶端。
2.客戶端(APP)根據預支付Id(prepay_id)調起微信支付
如何生成預支付Id(一般在服務端生成)?
根據統一下單接口文檔的規則:
服務端需要必須提交的參數字段有以下這些:(POST格式爲XML)
- 應用ID appid 微信開放平臺審覈通過的應用APPID
- 商戶號 mch_id 微信支付分配的商戶號
- 隨機字符串nonce_str 隨機數生成算法
- 商品描述body
- 商戶訂單號out_trade_no
- 總金額total_fee
- 終端IP spbill_create_ip
- 通知地址 notify_url
- 交易類型trade_type
- 簽名sign 簽名生成算法(重要)
詳情可看:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_1
sign簽名生成:
1.把我們所需要提交的參數(除sign外),拼接成URL鍵值對的格式(即key1=value1&key2=value2…)
2.得到拼接後的字符串之後拼接在商戶平臺生成 API密鑰
3.拼接完key之後,進行MD5運算,再將得到的字符串所有字符轉換爲大寫,得到sign
提交所有參數 調起統一下單接口 獲取預支付Id
APP客戶端調起微信支付
根據微信提供的調起微信支付的規則,APP端需要提交的參數爲:
1.sign簽名生成
sign簽名生成步驟跟上面敘述的是一樣的(省略)。
2.生成完簽名,拼接所有支付參數。(PayReq,IWXAPI是微信提供jar包裏的類)
3.調起微信支付
(注意,運行的應用簽名必須跟在微信開放平臺的簽名需要一致,爲了方便調試可以讓debug使用relase簽名,配置步驟可參考:http://www.cnblogs.com/niray/p/5242985.html)
至此,調起微信支付所有步驟完成
效果圖: