Android微信支付爬坑

yo4520 8年前發布 | 16K 次閱讀 安卓開發 Android開發 移動開發

前言:

微信用戶越來越龐大,微信支付已經慢慢成為人們購買東西時,不可缺少的一個環節。本文是由 ywl5320授權本公眾號獨家發布, ywl5320的blog鏈接:http://blog.csdn.net/ywl5320/。話不多說,看正文

最近在做支付模塊,最常用的就是 微信 支付和支付寶支付,其中最坑的就是微信支付了!!各種問題,官方文檔也寫得不詳細。。。哎 不過最后還是成功的爬坑完成集成了微信支付。先附上一張支付成功的頁面高興高興 哈哈哈:

下面就是爬坑過程

微信支付分為以下幾個步驟:

1、首先要在微信開放平臺注冊,添加自己的APP并成功申請支付功能

2、下載微信支付的SDK并添加到自己的項目里(以上都是最基本的,問題不大)

3、現在就可以著手集成微信支付了(從下單到支付):

(1):準備好需要的資料數據,并向微信注冊當前APP

首先要在微信后臺配置當前APP打包key所生成的簽名(微信官網有簽名工具),然后還必須設置商戶的key(32位,商戶自己設置的),然后就是APP_ID這個是微信為每一個APP生成的,最后就是開通了支付功能的商戶的ID用戶我們把錢支付給商家。

然后在適當的地方注冊APP(oncreate中)

(2):調用統一下單接口(https://api.mch.weixin.qq.com/pay/unifiedorder)生成訂單,這一步是最容易出錯的(此乃大坑)。

1、首先我們設計好所要傳給微信的必要參數(OrderPayBean):

例如以下商品數據:

2、商品參數準備好了,接下來我們為之生成簽名:

簽名 算法 如下:

構造商品參數集合:

3、因為統一下單接口需要以xml格式post發送給微信,所以我們先拼接xml格式的參數:

然后是我們的異步線程請求統一下單接口:

這里從微信返回來的正確的結果為:xml格式的字符串,里面的“prepay_id”就是我們需要用在調取支付界面所要的重要參數。其中的Util.httpPost(url, str)方法可以在微信提供的demo中拷貝過來就行。(在這一步很多時候都返回的是“簽名錯誤”,就要檢查商戶key是否正確,最常見的錯誤就是“body”字段是中文,然后post發送的時候沒有轉換為“iso8859-1”編碼,導致簽名錯誤。

4、通過統一下單接口成功獲取到了“prepay_id”后,就可以調取支付接口了(如果是服務器生成訂單,可以直接從這一步開始):

使用到的工具類方法:

其中:

這里用到了把xml轉換為list的方法(用的是dom4j.jar):

5、這樣就成功的調到了支付界面 

這是剛開始解決中文亂碼是,單獨對中文轉碼后的結果,微信端沒有轉碼,就成這樣了。

這是body是英文的時候,能正常支付。

6、最后在微信回調頁面處理支付結果:

這樣微信支付爬坑結束,不容易啊。。。 哈哈哈

 

 

來自:http://mp.weixin.qq.com/s?__biz=MzI2OTQxMTM4OQ==&mid=2247484224&idx=1&sn=e856f3bae7fc8a0f9660b29eac279ccf&chksm=eae1f612dd967f04f0a72813f1f92e466b4934b7fd2dc6a0c54f40aef16e7642c540bd09370d#rd

 

 本文由用戶 yo4520 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!