日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android--快速接入微信支付

發布時間:2025/3/11 Android 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android--快速接入微信支付 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

最近實習的時候要求我做支付模塊,主要是介入支付寶支付和微信支付的。支付寶支付接入相對來說比較好做,官網文檔也比較容易懂。但是做微信支付的時候,官網文檔就有點懵逼了,不過慢慢讀還是能夠開通的。與是抽時間記錄一下微信支付接入的過程。
這里我不去說明AppID申請的過程,主要記錄一下開發過程。

微信支付

首先一定要清楚微信支付業務流程,這樣接下來就事半功倍了。
主要官方文檔看這:

  • 業務流程
  • APP端開發步驟
  • Android資源下載
  • API列表

業務流程如下:

微信支付業務流程

這里我大致用自己的理解把App客戶端的流程分為四步

1、統一下單

商戶系統先調用該接口在微信支付服務后臺生成預支付交易單,返回正確的預支付交易回話標識后再在APP里面調起支付。

客戶端將支付信息上傳給公司服務端。首先根據具體公司的需求,上傳支付信息給服務端,然后接收服務端還回結果。我們客戶端只需要發送相應的請求提給服務端即可。
更多具體內容參考微信APP支付文檔-統一下單

2、調起支付接口

APP端調起支付的參數列表

根據前一步得到的還回結果跳轉至微信客戶端進行支付操作

3、用戶進行微信支付操作

進入微信支付頁面后可以能會有:輸入密碼支付,取消支付,支付失敗等操作

4、微信客戶端回調支付結果詳情給我們的APP客戶端

完整示例

1、引入微信支付資源

1、引入微信支付依賴

在build.gradle文件中,添加如下依賴即可:

dependencies {compile 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+' }

詳情參考Android資源下載

2、配置WXPayEntryActivity

1、首先我們下載下來官網的demo然后copy其中的一個WXPayEntryActivity類放到 app包下新建一個wxapi包 里面。

注意是WXPayEntryActivity不是WXEntryActivity,WXEntryActivity是微信分享的, WXPayEntryActivity才是支付的

這個頁面是在你調起微信支付完成支付(或取消或失敗)后,再回到你的App時會調用的一個頁面。請務必保證在你項目下他的結果目錄為:
開放平臺綁定的商戶應用包名 + wxapi + WXPayEntryActivity

開放平臺綁定的商戶應用包名

2、AndroidManifest.xml中注冊

<!--wx pay所需權限--><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><!--wx pay--><activityandroid:name=".wxapi.WXPayEntryActivity"android:exported="true"android:launchMode="singleTop"/>

3、發送支付信息給服務端

跟服務端協調需要我們客戶端傳遞什么信息過去。詳細請求參數參考API列表-統一下單
我這里,只需要傳遞一些和服務端協商好的數據,其他金額等都是在服務端處理好的。然后服務端還回預支付交易給我們客戶端

WXPayReq wxPayReq=new WXPayReq();wxPayReq.setUser_id(User_id);wxPayReq.setChannel_id(Channel_id);wxPayReq.setGoods_id(goodsID);

3、跳轉微信進行支付

根據上面獲取到的服務端的還回數據,調起微信支付,代碼實例如下:

@Overridepublic void wxpay(Context context, WXPayRsp wxPayRsp, IPayListener iPayListener) {this.iPayListener = iPayListener;IWXAPI api= WXAPIFactory.createWXAPI(context, Constants.APP_ID);api.registerApp(Constants.APP_ID);PayReq payReq=new PayReq();payReq.appId=Constants.APP_ID;payReq.partnerId=wxPayRsp.getPartnerid();payReq.prepayId=wxPayRsp.getPrepayid();payReq.packageValue="Sign=WXPay";payReq.nonceStr=wxPayRsp.getNoncestr();payReq.timeStamp=wxPayRsp.getTimestamp();payReq.sign=wxPayRsp.getSign();api.sendReq(payReq);}

具體請求參數如下:

調起支付接口參數

每次調用微信支付的時候都會校驗 appid 、包名 和 應用簽名的。 這三個必須保持一致才能夠成功調起微信!!! (這個bug害我浪費一下午時間!api.sendReq接口,返回true,但微信客戶端并未啟動,后來產品給后臺的appid和給我的不同才知道錯誤在這)

4、微信客戶端回調支付結果處理

我是直接copy的官網demo里面WXPayEntryActivity類的,然后根據自己的需要刪除了一些不必要的東西。其實我們可以安裝微信官網給的demo和文檔編寫我們自己打WXPayEntryActivity,我的示例如下:

public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler{private IWXAPI api;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);api = WXAPIFactory.createWXAPI(this, Constants.APP_ID, false);try {api.handleIntent(getIntent(), this);} catch (Exception e) {e.printStackTrace();}}@Overrideprotected void onNewIntent(Intent intent) {super.onNewIntent(intent);setIntent(intent);api.handleIntent(intent, this);}@Overridepublic void onReq(BaseReq req) {}@Overridepublic void onResp(BaseResp resp) {int result = 0;//有時候支付結果還需要發送給服務器確認支付狀態if (resp.getType()== ConstantsAPI.COMMAND_PAY_BY_WX){if (resp.errCode==0){Toast.makeText(this,"支付成功",Toast.LENGTH_LONG).show();}else if (resp.errCode==-2){Toast.makeText(this,"取消支付",Toast.LENGTH_LONG).show();}else {Toast.makeText(this,"支付失敗",Toast.LENGTH_LONG).show();}finish();}}}

errCode說明如下:

名稱描述解決方案
0成功展示成功頁面
-1錯誤可能的原因:簽名錯誤、未注冊APPID、項目設置APPID不正確、注冊的APPID與設置的不匹配、其他異常等。
-2用戶取消無需處理。發生場景:用戶不支付了,點擊取消,返回APP。

填坑日記

卸載重裝微信或者清空數據保平安

  • 因為業務調整,公司微信接口改變,加上一些其他app的變更。發現之前明明好好通過支付的,結果出現了問題。還回錯誤為-1。后來換個測試機一搞就通過了,在測試機中引起微信支付失敗的原因竟然是,緩存沒有清空導致的。因為包名是一致,然后我的app里面還是用到了webview內嵌。心里有句mmp不知道當講不當講
  • 發正式寶的時候微信開發平臺填寫的簽名改了之后,微信掉不起來,后來同樣卸載微信就好了。這句mmp我一定要講

常見坑位收集

Android微信支付徹底掃坑
Android 微信支付詳解與坑
Android常見問題



作者:Swy2w
鏈接:https://www.jianshu.com/p/f577ab65f731
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

總結

以上是生活随笔為你收集整理的Android--快速接入微信支付的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。