1. 程式人生 > >android中微信支付!! 其實沒那麼難

android中微信支付!! 其實沒那麼難

最近這段時間在做微信支付,把一些開發的流程及遇到的一些問題記錄下來,以後遇到的話也能做個參考!畢竟剛接觸這個支付的時候也是走了好多彎路。

首先第一步肯定是要去申請你的公眾號,服務號各種的。。。

如果一切順利的話,就可以拿到以下東西,也是開發時所需要的

①java的證書(在退款,企業轉賬時用的上)

②AppID:微信分配的公眾賬號ID

③AppSecret:獲取token有用

④Mchid:微信支付分配的商戶號

上面這些都準備好後,需要登入到商戶平臺去設定一些開發環境:就是設定應用debug簽名(SHA1的值,注意是不需要冒號的,如果是正式釋出的版本需要用正式簽名的debug),和包名;

這一部做好了以後應該就能跑通官網下載的demo了,這部簽名和包名一定要正確,不然demo跑不通,LZ就是因為這個弄了好久。

不出意外的話應該就能調出微信的支付介面了。

下面我提供了兩個demo 一個是以前官網的,一個是現在在官網下載的。

 前一個有一個自帶的debug的簽名的,只需要通過eclipse的windows --> preferences -- > android -->build 點選browse 找到那個DEMO中自帶的debug簽名,這樣就不需要到後臺去配置簽名那一步了。 後面這種就需要到商戶平臺去配置下簽名,如果是整合到自己的應用中,只需要改下簽名和包名就可以了。支付完成,按照支付寶的流程,支付完成應該有個回撥的,來通知我已經支付完成了。可是沒有回撥成功,去查了下資料。微信開放平臺有個 不成文的規定(文件裡沒有說明),就是回撥的Activity必須是:你的包名(微信demo裡是:net.sourceforge.simcpux)+.wxapi.WXPayEntryActivity.java,走起。。。。。可是還是沒去走回調。。。。又去百度下,發現在發起微信支付時,有一個

notify_url 引數,這個引數是支付成功後微信呼叫的,(當時是在伺服器端寫了一個.jsp的頁面,返回了一個success,(這個.jsp頁面可以去處理查詢訂單是否支付成功等等的操作。)可是怎麼測試了,微信那邊這麼能訪問到我本地電腦上的伺服器,又不能拿公司的伺服器去做測試。看了網上說的,可以去下載一個ngrok(https://ngrok.com/)的軟體,將內網對映到外網去,在命令列下配置下就可以了。。。下面我也提供了,但那個驗證碼還是要去註冊才能得到[http://blog.csdn.net/liuxiyangyang/article/details/22922265](不過好像被牆了),然後到公眾平臺中的微信支付中的 開發配置中配置下回調的頁面,我在伺服器寫了一個test.jsp, 然後把剛才對映的地址加上test.jsp填上去就可以了。

至此微信支付的功能就差不多搞定了,接下就是安全性的為了做安全性設計,把一些重要的東西放到伺服器生生成,這樣是為防止客戶端被反編譯。反編譯之後,帶來的就是別人拿到key 模擬支付過程,把某個訂單號支付完成。那麼,騰訊那邊收到錢就會同時給客戶端 和我們自己的伺服器傳送請求。那麼,我們自己的伺服器收到騰訊的通知之後,就會把這個訂單的狀態置為已經支付。

好了  ,後面我會繼續補充 一些轉賬功能,授權的一些問題。