新版Android studio導(dǎo)入微信支付和支付寶官方Demo問(wèn)題解決大全
最近項(xiàng)目要用到支付寶支付和微信支付,本想使用第三方支付框架ping++或者BeeCloud的,但是由于他們的收費(fèi)問(wèn)題,讓我望而卻步,而且公司給了相應(yīng)的公鑰、私鑰和APPID等,所以就用下開(kāi)放平臺(tái)的唄。
進(jìn)去倒騰了半天才發(fā)現(xiàn)一堆問(wèn)題,Oh,我的天。完全不知所云,百度谷歌了一堆,都沒(méi)找到足夠的解決方案。好吧,自己來(lái),這里也就把相關(guān)的東西分享給大家,如果有類(lèi)似問(wèn)題的可以考慮使用一下,不足的地方大牛就別噴了。
微信開(kāi)放平臺(tái)有文檔和SDK,大家可以去自己查看下載,火箭:https://open.weixin.qq.com/
支付寶官方的Demo和文檔相對(duì)簡(jiǎn)單些,而且說(shuō)的更清楚些,火箭:https://open.alipay.com/platform/home.htm
還是先看下運(yùn)行的Demo圖示:
首先是微信的
再看看支付寶的
點(diǎn)擊支付會(huì)跳轉(zhuǎn)到你手機(jī)上的支付寶APP,如果手機(jī)上沒(méi)有下載也是可以用的,不過(guò)用的不在一個(gè)真正的支付寶APP中
但是這么簡(jiǎn)單的東西,樓主的確智商捉急,都弄了半天。
首先是導(dǎo)入微信的Demo,去官方下載了SimpleDemo后,發(fā)現(xiàn)一堆錯(cuò)誤,好吧,首先是SDK的問(wèn)題,這個(gè)就不多做贅述了。
然后修改后Try Again oh,no,又來(lái)一個(gè)什么鬼。
什么鬼,仔細(xì)一看,是drawable里面有不是png的文件命名成了png文件。
好吧,如果你足夠的耐心,那么幾十張圖片,你還是可以直接一張一張的檢查后綴的,看看有不是png作為后綴的,另存一下,或者修改你的文件名使其和后綴名一致。
然而程序員的能力應(yīng)該體現(xiàn)在偷懶的程度上,所以容我偷懶啦。
compileSdkVersion 23 buildToolsVersion "24.0.0" aaptOptions.cruncherEnabled = false aaptOptions.useNewCruncher = false defaultConfig { applicationId "net.sourceforge.simcpux" minSdkVersion 4 targetSdkVersion 23 }
只需要在對(duì)應(yīng)的gradle文件中加上兩句話(huà) ,并把值至為false即可。
再次Try again, oh ,no,這次是一大堆錯(cuò)誤,什么鬼!看一看日志。
哦,原來(lái)是因?yàn)?.0以后官方隱藏的HttpClient的相關(guān)API,然而大多數(shù)導(dǎo)入的代碼都還用著這個(gè)強(qiáng)大的框架,那怎么弄呢?
好的,只需要再在Gradle文件中添加這樣的一句話(huà)就好
android { useLibrary 'org.apache.http.legacy' } dependencies { compile files('libs/libammsdk.jar') android { useLibrary 'org.apache.http.legacy' } }
再來(lái)看看支付寶的,就簡(jiǎn)單多了。我遇到的第一個(gè)問(wèn)題是,沒(méi)有指定APPID,公鑰那些東西,好的,這個(gè)肯定是得弄得,把自己申請(qǐng)的一系列東西裝進(jìn)去。
運(yùn)行一看。
嘿嘿,有界面,應(yīng)該可以吧,點(diǎn)擊一下支付。
Oh on,直接崩潰
錯(cuò)也總得有原因哈,看看日志。
空指針異常?進(jìn)去一看
sign = URLEncoder.encode(sign, "UTF-8");
是這樣一句話(huà)出現(xiàn)了問(wèn)題,這句話(huà)什么問(wèn)題呢。
/** * sign the order info. 對(duì)訂單信息進(jìn)行簽名 * * @param content * 待簽名訂單信息 */ private String sign(String content) { return SignUtils.sign(content, RSA_PRIVATE); }
這個(gè)方法的問(wèn)題,這樣返回的是一個(gè)空的。
再進(jìn)去一看
public static String sign(String content, String privateKey) { try { PKCS8EncodedKeySpec priPKCS8 = new PKCS8EncodedKeySpec( Base64.decode(privateKey)); KeyFactory keyf = KeyFactory.getInstance(ALGORITHM); PrivateKey priKey = keyf.generatePrivate(priPKCS8); java.security.Signature signature = java.security.Signature .getInstance(SIGN_ALGORITHMS); signature.initSign(priKey); signature.update(content.getBytes(DEFAULT_CHARSET)); byte[] signed = signature.sign(); return Base64.encode(signed); } catch (Exception e) { e.printStackTrace(); } return null; }
是這樣的一串代碼,原來(lái)這個(gè)方法是把私鑰轉(zhuǎn)換成應(yīng)該有的格式,而我公司給的意見(jiàn)轉(zhuǎn)換好了,好吧。
那直接返回就成了唄
/** * sign the order info. 對(duì)訂單信息進(jìn)行簽名 * * @param content * 待簽名訂單信息 */ private String sign(String content) { // return SignUtils.sign(content, RSA_PRIVATE); return RSA_PRIVATE; }
修改一下,再次運(yùn)行。Oh yeah,成功!
今天就講這么多,有啥不懂的,還是運(yùn)用萬(wàn)能的百度吧!
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
android中寫(xiě)一個(gè)內(nèi)部類(lèi)來(lái)選擇文件夾中指定的圖片類(lèi)型實(shí)例說(shuō)明
選擇文件夾中指定的圖片類(lèi)型,本類(lèi)是用來(lái)選擇文件夾中是.jpg類(lèi)型的圖片具體實(shí)現(xiàn)如下,感興趣的朋友可以參考下哈2013-06-06Android實(shí)現(xiàn)EditText控件禁止輸入內(nèi)容的方法(附測(cè)試demo)
這篇文章主要介紹了Android實(shí)現(xiàn)EditText控件禁止輸入內(nèi)容的方法,涉及Android針對(duì)EditText控件屬性設(shè)置的相關(guān)技巧,需要的朋友可以參考下2015-12-12Android PickerView滾動(dòng)選擇器的使用方法
這篇文章主要為大家詳細(xì)介紹了Android PickerView滾動(dòng)選擇器的使用方法,感興趣的小伙伴們可以參考一下2016-03-03Android中ViewPager的PagerTabStrip與PagerTitleStrip用法實(shí)例
這篇文章主要介紹了Android中ViewPager的PagerTabStrip與PagerTitleStrip用法實(shí)例,這兩個(gè)子控件一般被用作添加標(biāo)題,在實(shí)際效果上并不是那么好控制,使用的時(shí)候需要謹(jǐn)慎,需要的朋友可以參考下2016-06-06Android使用自定義View實(shí)現(xiàn)餅狀圖的實(shí)例代碼
這篇文章主要介紹了Android使用自定義View實(shí)現(xiàn)餅狀圖的實(shí)例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-05-05Android實(shí)現(xiàn)簡(jiǎn)單的撥號(hào)器功能
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)簡(jiǎn)單的撥號(hào)器功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07Android Studio 3.5版本JNI生成SO文件詳解
這篇文章主要介紹了Android Studio 3.5版本JNI生成SO文件詳解,想了解JNI的同學(xué),可以參考下2021-04-04Android采用GET方法進(jìn)行網(wǎng)絡(luò)傳值
這篇文章主要為大家詳細(xì)介紹了Android采用GET方法進(jìn)行網(wǎng)絡(luò)傳值的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12