Cordova微信登錄支付插件在Android和ios端中的問題解決方案(只是我遇到的)

概要

最近在搞一個(gè)購物類的APP寺庄,是vue+Cordova的一個(gè)跨平臺(tái)項(xiàng)目祠够,期間需要使用到微信支付和支付寶支付压汪,現(xiàn)在記錄一下期間遇到的坑,也希望能夠幫助更多的人少踩坑古瓤。止剖。腺阳。把更多的時(shí)間留給開發(fā)。

解決方案

? ? ? ? 2018年11月15日穿香,大佬幫我找到了一個(gè)修復(fù)了lixu版微信支付插件的部分bug亭引,cordova-plugin-adam-wechat,但是美中不足的是皮获,它似乎還是繼承了原插件2.3的bug焙蚓,缺失appid,傳遞參數(shù)的時(shí)候把a(bǔ)ppid也合著之前的參數(shù)一起傳過去就好了洒宝,這里是這個(gè)大佬的使用心得主届,是JQuery mobile版本的解決方案;

如果覺得這樣不夠安全或者其他什么的建議使用原插件2.0.0或者2.1.0版本待德,只需要根據(jù)下文中內(nèi)容更改既可。

? ? ? ? 好了廢話不多說枫夺,首先你需要看一下這個(gè)大佬的文章将宪,在這篇文章里你能夠了解到此插件各個(gè)版本問題出現(xiàn)在哪里,如何解決橡庞,當(dāng)然较坛,本人的評(píng)論可以無視,因?yàn)榘亲睢3笄凇!0扇ぁ_@個(gè)插件的調(diào)用方式可真的與眾不同胺ň骸!當(dāng)你按照這篇文章使用并修復(fù)了2.0.0版本的插件時(shí)强挫,你應(yīng)該就可以正常調(diào)用岔霸,也許會(huì)遇到“普通錯(cuò)誤”。什么俯渤?你沒法調(diào)用呆细?如果你的前端使用的是vue或者是其他非ionic框架的東西,那么你走運(yùn)了八匠,因?yàn)檫@個(gè)坑我踩了絮爷,首先!檢查在入口html中有沒有引入cordova.js梨树!如果沒有引入的話坑夯,你無論怎么進(jìn)行下面的操作都是白搭!在引入之后劝萤,調(diào)用方法就是作者演示的渊涝,Wechat.方法,不需要加任何前綴,在調(diào)用其他Cordova插件的時(shí)候跨释,都是是需要cordova.plugin.插件名.方法,例如:Cordova二維碼插件的調(diào)用就是cordova.plugins.barcodeScanner.scan()胸私。

這里說個(gè)題外話,在使用cordova-alipay-chenyu這個(gè)插件作為支付寶支付的時(shí)候鳖谈,因?yàn)樽髡咧徽f明了在ionic中的使用方式岁疼,但是在vue或者其他非ionic框架中這種調(diào)用方法時(shí)行不通的,需要使用我前面說的cordova.plugin.插件名.方法缆娃,此處就是cordova.plugins.MyAlipay.coolMethod(params);此處params就是原作者中聲明的需要的參數(shù)捷绒,不過不再需要then()了,這點(diǎn)需要注意贯要;不過可能你也發(fā)現(xiàn)了為何這里不是插件名暖侨。。我也不清楚崇渗,但是作者在這里對(duì)js暴漏的方法就是這個(gè)字逗,這一點(diǎn),你可以輸出cordova.plugins來查看你當(dāng)前加載的插件宅广,唯獨(dú)葫掉!wechat插件是不在這里的!切記跟狱!

然后去添加平臺(tái)吧~添加完成之后需要注意的是請查看你的微信文件位置是否正確俭厚!正確位置如圖:

位置應(yīng)該在你的包名中新建的一個(gè)wxapi中

這一點(diǎn)非常重要,因?yàn)樵寮募胖檬清e(cuò)誤的驶臊,這樣的就會(huì)造成你的app直接FC(即:force close挪挤!強(qiáng)制關(guān)閉!)在Android studio中調(diào)試報(bào)錯(cuò)中應(yīng)該如下圖:

圖中箭頭所指紅框位置

如果你根據(jù)文章頭中讓你看的那個(gè)文章关翎,已經(jīng)修改了android-install.js中的內(nèi)容电禀,那你就需要?jiǎng)h除platforms文件夾,重新添加平臺(tái)笤休,就可以正確的生成了尖飞。

? 到了這里,你已經(jīng)完成了對(duì)Cordova-plugin-wechat這個(gè)插件本身的配置店雅,現(xiàn)在使用Wechat.isInstalled()方法應(yīng)該是可以檢測機(jī)器上是否安裝了微信政基,如果可以檢測,則插件本身運(yùn)行沒有問題了闹啦,這個(gè)方法使用方法在作者文檔里有說明沮明。

現(xiàn)在你應(yīng)該開始遇到”普通錯(cuò)誤“,這個(gè)錯(cuò)誤造成的原因有兩種:

? ? 一窍奋,是因?yàn)橛唵翁?hào)不唯一荐健,第二次和第一次的訂單號(hào)是一樣的酱畅,會(huì)造成這個(gè)問題,(我沒遇到江场,因?yàn)槲沂请S機(jī)生成16位訂單號(hào)纺酸,欸嘿~)在搜索的時(shí)候發(fā)現(xiàn)了,在這里記錄一下址否,源于:這里餐蔬。

? ? 二,你的應(yīng)用簽名不對(duì)佑附,此處的簽名不是APK的簽名樊诺!在做微信支付分享開發(fā)時(shí),你的軟件必須以release版本音同,可以使用keystore和jks簽名词爬,或者是,已經(jīng)簽名了的debug版本权均,如果不知道這個(gè)可以不用想是什么缸夹,那你就以release版本就好了。并非必須使用keystore螺句,已親測可行,APK每次打包的簽名必須是同一個(gè)橡类!不然就會(huì)循環(huán)“普通錯(cuò)誤”蛇尚!切記!顾画!安裝到手機(jī)之后取劫,去微信開放平臺(tái)下載簽!名研侣!生谱邪!成!工庶诡!具5胍!D┦摹3毒恪!該工具位置所在如圖:

微信開放平臺(tái)資源中心

下載之后在手機(jī)上安裝喇澡,運(yùn)行起來應(yīng)該時(shí)這樣的迅栅,然后操作如圖:

Gen_Signature_Android.apk示意圖

那一串綠色的才是你需要填寫到官網(wǎng)的這個(gè)頁面里:

微信開放平臺(tái)/管理中心/應(yīng)用詳情/開發(fā)信息

至此,你的app應(yīng)該是可以拉起微信并且進(jìn)行支付了晴玖,分享操作也可以了读存。

注意为流!成功的是你后端給你的數(shù)據(jù)是完全沒問題的,參照了微信的開發(fā)文檔做的让簿,現(xiàn)在給出當(dāng)后端打了瞌睡之后敬察,產(chǎn)生的“普通錯(cuò)誤”的原因!

ps:我的后端是nodejs拜英,可能在其他后端語言中的使用和代碼書寫方法會(huì)有所不同静汤。

在我的案例中,后端出錯(cuò)的地方是noncestr字段算法出現(xiàn)錯(cuò)誤居凶,在微信的開發(fā)文檔中說明了拉起APP需要的參數(shù)

微信支付請求參數(shù)

錯(cuò)誤的隨機(jī)字符串算法


錯(cuò)誤的隨機(jī)字符串生成

這樣的雖然也一樣能夠生成不長于32位的字符串虫给,但~~傳給我的時(shí)候就是報(bào)“普通錯(cuò)誤”,無奈更改為

正確的算法

這樣的侠碧,len的值為32抹估,就可以生成可正常拉起的字符串了。

后端簽名計(jì)算問題

2.0.0的插件是不需要appid和package這兩個(gè)字段弄兜,但是药蜻!但是!后端在計(jì)算簽名的時(shí)候替饿,我的案例中语泽,后端是先將XML解析之后再進(jìn)行簽名計(jì)算,如圖:

后端信息發(fā)送

當(dāng)我說不需要這兩個(gè)字段的時(shí)候视卢,后端小哥哥就將這兩個(gè)字段直接剔除踱卵,這樣就導(dǎo)致了,簽名計(jì)算出現(xiàn)錯(cuò)誤据过,再給到前端拉起app的時(shí)候惋砂,報(bào)錯(cuò):“普通錯(cuò)誤”。解決辦法也很好解決绳锅,加回去或者使用臨時(shí)變量將發(fā)送給前端的數(shù)據(jù)區(qū)分開就好了西饵。以上這幾個(gè)參數(shù),在計(jì)算簽名中缺一不可鳞芙,少了一個(gè)就當(dāng)場暴斃~~~~~


現(xiàn)在我們來看看ios端眷柔,是遇到了什么麻煩,首先,在生成ios平臺(tái)之后,在編譯的時(shí)候報(bào)錯(cuò)拉讯,

錯(cuò)誤信息ld: library not found for -lstdc++.6


報(bào)錯(cuò)信息

那么如何解決?救星來了宙拉!看這里!這個(gè)博主講述的應(yīng)該是非常清晰明了丙笋,同時(shí)我的編譯環(huán)境和他的也是一樣的谢澈,雖然他的是熱更新插件煌贴,但是報(bào)錯(cuò)信息都是一樣的!那么何嘗不試一試锥忿?我自身是成功了的牛郑。

ok現(xiàn)在,編譯時(shí)沒問題了敬鬓,Cordova-plugin-wechat在ios中不需要額外配置什么淹朋,就可以正常使用了,唉钉答。础芍。。数尿。比安卓省心多了仑性,現(xiàn)在試一試實(shí)體機(jī)測試?一口氣跑通右蹦?開玩笑~~接好你的報(bào)錯(cuò):

實(shí)體機(jī)安裝報(bào)錯(cuò)

什么诊杆?你說你無法真機(jī)調(diào)試?那么請看這里何陆,好了晨汹,現(xiàn)在我們來說說怎么解決這個(gè)問題,首先贷盲,這個(gè)問題是因?yàn)樾碌膞code編譯環(huán)境是新的淘这,但是Cordova并沒有跟進(jìn),畢竟 - -在這個(gè)穩(wěn)定之前晃洒,肯定先不折騰是最好的。請看這里:詳細(xì)的解決方案朦乏。

至此球及,就是所有我所遇到的所有問題了,解決這些問題呻疹,一共花費(fèi)了我接近半周的時(shí)間吃引,我還是太菜了(苦笑),在此刽锤,感謝幫助我的大大們(鞠躬ing)

參考:

https://www.cnblogs.com/sunylat/p/9967044.html (cordova-plugin-adam-wechat插件的使用方法? )

http://www.reibang.com/p/cfad38bf3a86 (修改插件的內(nèi)部錯(cuò)誤)

https://blog.csdn.net/m0_37609394/article/details/79023710 (支付寶插件)

https://github.com/xu-li/cordova-plugin-wechat/issues/420? (解決普通錯(cuò)誤的發(fā)生情況之一)

https://www.cnblogs.com/sunylat/p/9937711.html? (解決ios中編譯無法通過)

https://www.cnblogs.com/sunylat/p/9946482.html? (解決在ios中無法真機(jī)調(diào)試)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末镊尺,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子并思,更是在濱河造成了極大的恐慌庐氮,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宋彼,死亡現(xiàn)場離奇詭異弄砍,居然都是意外死亡仙畦,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門音婶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來慨畸,“玉大人,你說我怎么就攤上這事衣式〈缡浚” “怎么了?”我有些...
    開封第一講書人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵碴卧,是天一觀的道長弱卡。 經(jīng)常有香客問我,道長螟深,這世上最難降的妖魔是什么谐宙? 我笑而不...
    開封第一講書人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮界弧,結(jié)果婚禮上凡蜻,老公的妹妹穿的比我還像新娘。我一直安慰自己垢箕,他們只是感情好划栓,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著条获,像睡著了一般忠荞。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上帅掘,一...
    開封第一講書人閱讀 49,036評(píng)論 1 285
  • 那天委煤,我揣著相機(jī)與錄音,去河邊找鬼修档。 笑死碧绞,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的吱窝。 我是一名探鬼主播讥邻,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼院峡!你這毒婦竟也來了兴使?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤照激,失蹤者是張志新(化名)和其女友劉穎发魄,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體俩垃,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡欠母,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年欢策,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赏淌。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡踩寇,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出六水,到底是詐尸還是另有隱情俺孙,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布掷贾,位于F島的核電站睛榄,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏想帅。R本人自食惡果不足惜场靴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望港准。 院中可真熱鬧旨剥,春花似錦、人聲如沸浅缸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽衩椒。三九已至蚌父,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間毛萌,已是汗流浹背苟弛。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留阁将,地道東北人膏秫。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像冀痕,于是被迫代替她去往敵國和親荔睹。 傳聞我的和親對(duì)象是個(gè)殘疾皇子狸演,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345