Android微信支付整合和踩過的坑
2、我們需要的資源其實有以下幾樣,在開始前,就這些轉備好吧
1)微信支付的APPID(還是在微信開放平臺檢視)
2)微信支付依賴包 :libammsdk.jar(Demo中複製)
3)一個Activity類 >>> WXPayEntryActivity.java(Demo中複製,注意放的位置:必須在wxapi包下,就是這麼霸道)
3、這裡開始就可以寫程式碼了:
1)提交訂單資訊給後臺獲取加簽後的訂單資訊:這裡就是呼叫伺服器介面,看一下你需要傳給伺服器什麼收據了。比如我的專案中需要傳給伺服器一下的引數:
//票務id mMap.put("TicketId",ticketId); //場次id mMap.put("SeasonId",seasonId); //主題id mMap.put("TeamId",teamId); //當前日期 mMap.put("BookingTime",date); //女士訂票人數 mMap.put("FemalePlayerCount",personTotalNv); //男士訂票人數 mMap.put("MalePlayerCount",personTotalNan); //支付型別:1:微信 mMap.put("PayType",1)等 這樣新增請求引數發起網路訪問。然後後去一般會給你還回一個是否提交訂單成功的Flag,如果提交訂單成功,這樣就可以獲取到加簽後的訂單資訊(有可能專案根據是否提交訂單成功,如果成功還要發起一次網路訪問獲取加簽後的訂單資訊) 2)Gson解析獲取到的加簽訂單。如果用的是Retrofit那就是直接獲得到實體類(我的定義成WXOrderEntity),直接到第三步。 3)呼叫微信SDK
private IWXAPI api;
//呼叫微信SDK,發起支付 private void doWXPay() { //例項化微信Api api= WXAPIFactory.createWXAPI(this,"wx6ba18110e2a3cbb2"); //註冊 api.registerApp("wx6ba18110e2a3cbb2"); PayReq req = new PayReq(); //應用的ID req.appId = mWXOrderEntity.getData().getAppid(); //商戶號 req.partnerId = mWXOrderEntity.getData().getPartnerid(); //預支付交易會話 req.prepayId = mWXOrderEntity.getData().getPrepayid(); //拓展欄位 req.packageValue = mWXOrderEntity.getData().getPackageX(); //隨機字串 req.nonceStr = mWXOrderEntity.getData().getNoncestr(); //時間戳 req.timeStamp = mWXOrderEntity.getData().getTimestamp(); //簽名 req.sign = mWXOrderEntity.getData().getSign(); Logger.e(req.checkArgs()+"");//這是檢查你請求引數是否有誤,如果列印是false,請檢查你的請求引數是否是上面的幾個 Logger.e(api.sendReq(req)+""); //這表示能夠調起api,一般上面那個成功,這個沒有問題。兩個Log如果列印都是true,恭喜你離成功不遠了 Toast.makeText(MyApp.getINSTANCE(), "正常調起支付", Toast.LENGTH_SHORT).show(); api.sendReq(req);//這個是微信的api,傳送請求,這樣就交給微信了,剩下的就是使用者輸入密碼等,我們只要等著拿結果 }
4)注意簽名,你要確認得到加簽後的訂單資訊,後臺是否已經簽名。如果伺服器端已經做過了簽名生成,那麼這裡直接拿著賦值給
PayReq
物件即可,而且可以非常愉快的玩耍了,直接跳過這步。如果伺服器端沒有做,那麼還需要在本地進行簽名生成之後,再賦值。簽名請參考:微信支付Demo
4、微信結果的回撥:
(1)必須在Manifest檔案中加入下面的:
- <!-- 微信支付回撥頁 -->
- <activity
- android:name="<span style="color:#FF0000;">.wxapi.WXPayEntryActivity</span>"
- android:exported="true"
- android:launchMode="singleTop">
- </activity>
(3)WXPayEntryActivity中拿到支付結果
- @Override
- publicvoid onResp(BaseResp resp) {
- Logger.d(TAG, "onPayFinish, errCode = " + resp.errCode);
- if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
- AlertDialog.Builder builder = new AlertDialog.Builder(this);
- builder.setTitle("提示");
- builder.setMessage("微信支付結果" +String.valueOf(resp.errCode));
- builder.show();
- }
- }
如果支付失敗並且你複製是我上面那段程式碼,應該是點選支付按鈕以後直接出現下面的介面:(而沒有調起微信,出現微信支付介面)
如果你是我上面描述的情況:一下我說的每一句話都非常的關鍵:
1、應用簽名的問題(如果你是按照我所說的添加簽名的,那就可以排除這個原因。如果你有整合微信登入或者分享,如果可以那也可以排除應用簽名的問題)
2、列印一下後臺簽名返回的資料,看看是否每一項都有資料。
3、訂單簽名問題。如果是訂單要自己簽名,請檢視官方Demo(一定仔細看看)。在生成簽名時,務必注意key的拼寫問題,比如必須拼appid而不是appId,必須拼prepayid而不是prepayId,如果拼接錯誤支付也是會失敗的。如果是後臺給的簽名請看下一步
4、後臺給的訂單簽名。我直接在這裡被坑。這是後臺的原因,應該是後臺拼接訂單的是否拼接錯誤導致的。(如果你也是後臺給的簽名請好好問一下後臺,特別是"noncestr",是否把它拼接成了"nonce_str",注意沒有下劃線,沒有下劃線,沒有下劃線,重要的事情說3遍。好多的後臺因為疏忽而拼接了下劃線,導致簽名錯誤而致使支付失敗的)5、如果上面這幾步都沒有錯誤,應該就可以支付成功了。成功的流程:點選支付,提交訂單後獲得加簽以後的訂單資訊,然後把加簽後的訂單資訊交給微信Api發起微信支付,如果請求引數都正確,就會出現微信支付介面,輸入密碼即可完成支付,
然後微信這是會給後臺一個非同步通知是否訂單支付成功,我們只需要在呼叫後臺給的介面,來判斷支付是否真的成功即可,注意之後結果是否成功應該以後臺為準,而不是微信的成功結果碼。(有問題可以留言)
相關推薦
Android微信支付整合和踩過的坑
近公司需要微信支付,所以不得不去看看微信支付文件。但是你懂得,那文件寫的真帶勁,看不懂。我直接放棄,開始整合。但是調起微信支付的時候:結果碼為-1,心裡一驚,肯定哪裡錯了,就開始找坑。所以把自己解決的過程分享給大家,讓整合微信支付成為很容易的一件事。 2、我們需要的資源
Android 微信支付整合重點(已經看過官方開發文件)
整合微信支付重點,適用於有整合經驗並且已經看過開發文件的同學 1.申請開通 按照官方文件步驟 (註冊平臺賬號——認證(300 如果失敗3次需再付300認證,資訊提前確認)——建立應用稽核(簽名用微信的提取工具)——開通支付功能——整合) 2.整合
Android微信支付整合流程及其常見錯誤
[支付寶整合傳送門:http://blog.csdn.net/hx7013/article/details/61476320] 一、你需要關心的東西 1.申請與認證 2.上傳金鑰(商戶KEY),包名和簽名的修改 3.服務端整合 4
React Native (IOS和Android) 支付寶和微信支付整合實戰(支付寶Android篇)
序言:React Native無論是在社群和應用程度上,在國內外是十分廣泛和普及的。而支付寶和微信在支付模組上都有或多或少的支援,雖然沒有完整的Demo,不過在我做過一個相關整合的專案後,在此我把相關的步驟和方法總結出來和大家分享,希望能夠幫助大家少走彎路,快速整合。 支付
React Native (IOS和Android) 支付寶和微信支付整合實戰(微信IOS篇)
序言:React Native無論是在社群和應用程度上,在國內外是十分廣泛和普及的。而支付寶和微信在支付模組上都有或多或少的支援,雖然沒有完整的Demo,不過在我做過一個相關整合的專案後,在此我把相關的步驟和方法總結出來和大家分享,希望能夠幫助大家少走彎路,快速整合。 微信
關於android微信支付 和 支付寶支付的整合
最近專案中要整合微信和支付寶支付 在沒有接觸支付之間 覺得還是比較難的 但真正去實現的時候還是比較簡單的 就是有不少坑要去踩過之後才知道 支付寶支付 : 對於支付寶支付 我個人理解還是比較簡單的 https://open.alipay.com/platform/home.h
Android 支付寶和微信支付整合
場景 隨著移動支付的興起,在我們的app中,會經常有整合支付的需求.這時候一般都會採用微信和支付寶的sdk 來整合 支付寶支付 在使用支付寶支付的過程中,我們是在伺服器端生成訂單,客戶端訪問介面,得到訂單資訊.然後調起支付,支付成功後支付寶會分別 非同步呼叫伺服器端
React Native (IOS和Android) 支付寶和微信支付整合實戰(微信支付服務端篇)
序言:React Native無論是在社群和應用程度上,在國內外是十分廣泛和普及的。而支付寶和微信在支付模組上都有或多或少的支援,雖然沒有完整的Demo,不過在我做過一個相關整合的專案後,在此我把相關的步驟和方法總結出來和大家分享,希望能夠幫助大家少走彎路,快速整合。 微信
React Native (IOS和Android) 支付寶和微信支付整合實戰(支付寶服務端篇)
序言:React Native無論是在社群和應用程度上,在國內外是十分廣泛和普及的。而支付寶和微信在支付模組上都有或多或少的支援,雖然沒有完整的Demo,不過在我做過一個相關整合的專案後,在此我把相關的步驟和方法總結出來和大家分享,希望能夠幫助大家少走彎路,快速整合。 支
Android微信支付詳細流程(包括手機端和伺服器端)
相關檔案下載地址:http://download.csdn.net/detail/s_alics/9383437點選開啟連結 **************************************************************************
Android學習之 移動應用微信支付整合小結
微信支付現在主要整合在:1、移動應用開發 2、網站應用開發 3、公眾賬號開發 本篇主要針對移動應用App整合微信支付,實際專案坑點分享! 一、既予之、與共之:平臺資源 3、微信支付指引和資源中心:微信支付接入指南和資源下載中心<強
Android微信支付功能整合【全攻略】
遵循:BY-SA 作者:譚東 時間:2016年10月28日 環境:Windows 7 Android版微信支付官方文件和Demo問題很多,官方也沒有及時更新和細化開發整合文件。 這裡分享我整合Android客戶端微信支付的思路和部分程式碼。希望對大家有幫
Android 微信支付和支付寶支付 快速接入
先放上接入兩個支付平臺的官方文件地址 一、支付寶支付 匯入開發資源 在商戶應用工程的AndroidManifest.xml檔案裡面新增宣告: <activity android:name="com.ali
Android微信支付和支付寶支付快速接入
一、支付寶接入1、建立應用並獲取APPID開發者中心中建立您的應用,會為您生成應用唯一標識(APPID),並且可以申請開通開放產品使用許可權,通過APPID您的應用才能呼叫開放產品的介面能力。在“我的應用”中按下圖方式檢視APPID。2、新增支付功能3、簽約(涉及到收費)4、
Android 微信支付的統一下單
準備工作 申請微信開發者賬號,新增應用及申請開通微信支付功能,如 檢視開通流程 統一下單的介面文件: 檢視介面 開發 ①下載sdk: sdk和demo下載 ②可以匯入包 在build.gradle檔案中,新增如下依賴即可: depende
android 微信支付,body為中文字元,簽名錯誤
微信支付訂單生產方法: /** * 根據您的訂單資訊 生成 微信產品支付訂單資訊 */ private String createWeChatOrder() { StringBuffer xml = new StringBuffer();
android微信支付詳細步驟
此篇僅限於android客戶端整合微信支付 微信支付和支付寶相比的話裡面的坑還是很多的,但是導包導的倒是很簡單,就在在build.gradle檔案中,新增一條依賴就行: dependencies { implementation 'com.tencent.mm.opensdk:wec
.NET微信支付整合例項
轉自https://blog.csdn.net/u013385913/article/details/46509631 微信端HTML頁面下單事件: document.getElementById('btn-wxpay')addEventListener('tap', function (e
Spring Boot入門教程(四十):微信支付整合-刷卡支付
一:準備工作 使用微信支付需要先開通服務號,然後還要開通微信支付,最後還要配置一些開發引數,過程比較多。 二:支付方式 刷卡支付(MICROPAY) :刷卡支付是使用者展示微信錢包內的“刷卡條碼/二維碼”給商戶系統掃描後直接完成支付的模式。主要應
Android微信支付無法掉起支付的原因
1.第一種原因就是上邊的這些引數有問題。一般都是祕鑰有問題。需自己登陸商家版後臺修改 2.需要知道微信支付是需要打包才能執行。這也是蛋疼的一點,測試只能通過log和Toast來推斷。掉不起來可以去微信開放平臺看自己配置的引數是否正確。 3.微信支付跟支付寶支付