1. 程式人生 > >【Java】快速整合微信支付和支付寶支付

【Java】快速整合微信支付和支付寶支付

本文介紹博主自己封裝的一個微信支付和支付寶支付的library

本專案解決的問題僅限於最後的支付環節,即你告訴我多少錢,我帶著這個多少錢的資訊發起微信支付或者支付寶支付,僅需簡單的配置資訊,然後每次支付只需呼叫三句程式碼即可發起支付,封裝了對訂單資訊的拼裝,訂單的簽名等。不牽扯訂單的處理,訂單需要再自己的伺服器端處理。下面是我在接入微信支付與支付寶支付的時候遇到的一些問題。

關於微信

註冊啥的就帶過不說了

微信的SDK是比較坑的,下載微信SDK的有兩個地方

     地方一:這裡下載到的sdk只有分享功能,而且有一個地方你不百度知道的話你跟不會知道有一個抽象類的子類需要強制轉換才能拿到一個叫code的引數,其實這個引數名不叫code叫token,見此部落格:

http://blog.csdn.net/u013045971/article/details/47093883

     1裡下載到的東西是一個html的文件和一個lib/libammsdk.jar 也就是你只能看到有哪些介面,有哪些類。然而並不知道怎麼用。

     2裡面是一個demo,這個demo恰恰沒有獲取code的例子,看完你就更無語了。藏得好深....心想微信你這是玩我呢.......


      地方二:這個地方需要跳轉到微信商戶平臺才能找到

      走過下面兩步才能下載到有支付功能的sdk,他倆的名字一模一樣,就連包名都是一模一樣的呢?你以為他倆就是一個東西了?錯

匯入覆蓋之後你發現前面寫的報錯了,真的,報錯了啊。包名是一樣,但是有兩個類乾坤大挪移的另一個包下了,叫BaseReq和啥來著,忘記了。然後改了import之後發現還是錯,引數錯了,剛剛強制轉換的token找不到了,code又出來了,這次也不用強制轉換了。



結論是直接去下載地方二處的sdk

關於支付寶

      付寶倒是沒遇到啥問題,唯一注意的地方是生成private_key和public_key的時候注意別整錯了,那是最容易出錯的地方。

最後來介紹一下我們的支付library應該怎麼使用

微信

      在WxConfig.Java 中配置你在商戶平臺生成的KEY。

      微信提交一個預支付訂單之後會得到一個XML格式的預支付訂單資訊,然後把這個XML傳遞給pay方法就可以發起支付了。

      微信接受返回結果是通過一個Activity,也就是WXPayEntryActivity,這個要放在你的專案的com.example.test.wxapi的包,com.example.test是你專案自己的包名。

  1. IPayFactory factory = new WxFactory();  
  2. WxPay pay = (WxPay) factory.createPayEntry();  
  3. pay.setWxPay(PayActivity.this);  
  4. pay.pay(info);//info就是你的訂單資訊

支付寶 

      在AliConfig.java中配置你的   商戶號PARTNER,收款賬號SELLER,回撥URL,私鑰RES_PRIVATE,公鑰RES_PUBLIC

      支付寶跟微信不同的是支付寶沒有預支付這個環節,拼裝訂單之後直接發起支付就好了,

      需要一個Handel來接受支付結果

  1. IPayFactory factory = new AliFactory();  
  2. AliPay alipay = (AliPay) factory.createPayEntry();  
  3. alipay.setAliPay("商品名稱","商品描述""訂單號","價格");  
  4. alipay.pay(PayActivity.this, mHandler, SDK_PAY_FLAG);