寫在前面的話
第一次在簡書發(fā)文章冬耿,上個星期公司項(xiàng)目因?yàn)闃I(yè)務(wù)需求,需要接入微信支付萌壳,本人之前并沒有接入微信支付的經(jīng)驗(yàn)亦镶,經(jīng)過一個星期的噩夢,在此整理一下在app端接入微信支付的詳細(xì)步驟袱瓮,能讓小白都能無腦接入成功的新手教程缤骨。
接入前的準(zhǔn)備
別先急著去搞你的代碼,接入先從微信開放平臺open.weixin.qq.com/cgi-bin/index官網(wǎng)開始懂讯。
1.微信開放平臺
已經(jīng)搞定微信平臺開發(fā)者賬號荷憋,并且添加好了應(yīng)用,開通了微信支付的同學(xué)跳過褐望。
為什么第一步先看這個地方勒庄,因?yàn)橛械墓鹃_發(fā)團(tuán)隊(duì)職責(zé)分配不明確,有些這部分任務(wù)也是由開發(fā)人員來完成的瘫里,1來照顧小白实蔽,看一篇帖子就搞定這個垃圾功能,不用再去百度怎么創(chuàng)建平臺賬號等等瑣事谨读。2來讓開發(fā)人員直接把這個圖丟產(chǎn)品臉上局装,開發(fā):“接個雞兒微信開發(fā),微信平臺賬號你創(chuàng)好了嘛劳殖?應(yīng)用添加了嘛铐尚?支付功能申請了嘛?”哆姻。
推薦是由產(chǎn)品等劃水職業(yè)來搞定這部分工作宣增,反正不是開發(fā)來做。不是偷懶什么的矛缨,這里面有些步驟是需要公司工商證明等材料提交上去爹脾,然后審核的帖旨,我們小開發(fā)仔沒有,再說產(chǎn)品連這個都搞不定灵妨,我要你產(chǎn)品干嘛解阅?
2.微信開放平臺-開發(fā)者
如果你的產(chǎn)品經(jīng)理跟你說他弄好了,你打開開放平臺泌霍,登錄賬號货抄,根據(jù)步驟進(jìn)入到這個界面,不是下面這個圖的樣子烹吵,二話不說直接錘他碉熄,往死里錘! ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ------ 尼古拉斯 子路
全部審核成功還會有一個商戶號肋拔,還包括商戶平臺的賬號密碼等,商戶平臺我們不管呀酸,但是appID和商戶號我們一定要知道凉蜂,調(diào)起微信支付需要用到這兩個參數(shù),可以自己本地配置性誉,推薦還是讓服務(wù)器回給我們窿吩,我們從服務(wù)器取比較正規(guī)。 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ------ 尼古拉斯 子路
如果是這個樣子错览,那么恭喜纫雁,你的產(chǎn)品經(jīng)理不是個廢材、只會喊加油666倾哺。
上面這個界面怎么來的:“應(yīng)用詳情”界面轧邪,拉倒最底下,看到“開發(fā)信息”羞海,點(diǎn)擊它最右邊那個原諒色的“修改”忌愚,界面跳轉(zhuǎn)后就是這個界面。
下面告訴大家怎么找自己的應(yīng)用簽名和包名: ? ? ??
1.簽名稍微復(fù)雜一點(diǎn)却邓,先下載一個簽名生成工具硕糊,安裝到手機(jī)上。簽名生成工具下載(這個下載鏈接如果失效了腊徙,自己直接去開放平臺 資源中心--->資源下載--->Android資源下載)?再把頁面拉到最下面简十,就能看到了。
2.運(yùn)行那個簽名生成工具撬腾,在那個框里輸入應(yīng)用包名點(diǎn)擊獲取簽名就行了螟蝙。
3.簽名是根據(jù)你編譯時候用的jks文件決定的,建議大家debug版build的時候也設(shè)置成release時候用到的jks文件(下圖)时鸵。不用一會去開放平臺提交debug版簽名胶逢,等待開發(fā)調(diào)試完畢厅瞎,又去開放平臺換成release簽名,我個人感覺是有點(diǎn)麻煩的初坠,當(dāng)然和簸,自己選擇。
Tips:開放平臺綁定的簽名和手機(jī)上用簽名生成工具得到的簽名一定要一致碟刺。當(dāng)然包名你也別給我搞錯了锁保,不然你就等著各種BOOM。 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 綁定包名和簽名的時候不用管ios他們填什么半沽,我們只管我們android爽柒,他們填什么都跟我們不搭嘎,這里告訴大家這個顧慮是多余的者填。 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?------尼古拉斯 子路
是不是很簡單浩村,開發(fā)平臺配置完成后,可以細(xì)致的過下官方文檔占哟,有驚喜心墅,下面正式開始代碼部分的接入(文中說的是android studio集成方法,還在用eclipse的小伙伴我只能默哀榨乎,這東西就像一個是電腦端游怎燥,各種超清畫質(zhì),無限地圖蜜暑,多人競技等等铐姚,一個就是小時候玩過的插卡小霸王,二者不可以道里計)肛捍。
代碼集成
1.添加依賴隐绵,下載demo(筆記本截圖太難受了,屏幕太小篇梭,截不全)
2.打開官方支付demo
將PayActivity和WXPayEntryActivity(支付回調(diào)界面)復(fù)制到自己的項(xiàng)目中氢橙,修改下報錯,除了Copy一下跟這兩個類有關(guān)聯(lián)的類恬偷,其他都不用管悍手。其中WXPayEntryActivity的文件目錄格式要跟下圖一樣,開放平臺綁定的商戶應(yīng)用包名 + wxapi + WXPayEntryActivity袍患。PayActivity則作為支付界面坦康,來調(diào)起微信支付,如果有自己的支付界面诡延,請?zhí)鎿Q滞欠。
Tips:Copy的類中所用到的appID替換成自己應(yīng)用的appID,這點(diǎn)都忘了可以回家養(yǎng)豬了 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ------尼古拉斯 子路
3.AndroidManifest.xml中注冊
權(quán)限和activity注冊代碼在demo中就能找到
4.完善一下Copy的兩個主要類
其中WXPayEntryActivity回調(diào)類中肆良,onResp方法筛璧,可以參考修改成下圖逸绎。
PayActivity支付類
這個類要跟你們講一下支付的流程,先看demo夭谤。
1.demo中這個接口地址是直接返回參數(shù)的棺牧,可以用瀏覽器看到返回值,真實(shí)項(xiàng)目中地址由后臺接口提供朗儒,并且我們還要傳若干參數(shù)給服務(wù)器颊乘,讓它調(diào)用微信的統(tǒng)一下單接口,再回給我們訂單信息醉锄。
2.這七個參數(shù)是必須傳給我們的乏悄,具體自己跟服務(wù)器端商量,看需求恳不。需要注意的是sign這個參數(shù)回給我們的時候是要經(jīng)過二次簽名的檩小。一次簽名是在服務(wù)端調(diào)統(tǒng)一下單接口需要作為參數(shù)傳給微信的api的,通過微信api返回的參數(shù)妆够,進(jìn)行二次簽名(如下圖)识啦。這個app本不需要了解,但是就怕你的服務(wù)端隊(duì)友沒做過支付神妹,然后又沒仔細(xì)看過文檔,或者在文檔中迷失家妆,那就等著無情-1教做人鸵荠。
最后貼上我的支付類截圖
如果微信支付難度如果是100,那么返回-1的就是其中的80伤极,為什么這么說蛹找,看下圖。
你們看見這個-1知道是什么原因造成的嘛哨坪?沒人知道庸疾!最屌的就是這個叫“其他異常”的,所以說搞過微信支付的程序員為什么說這個東西垃圾当编,不是沒原因的届慈,把這些吃人飯不干人事的東西推出去斃了,我第一個贊成忿偷。吐槽的地方有很多金顿,就不多說了。
微信支付返回-1的情況和提醒:
1.appID鲤桥,一般不會搞錯揍拆,搞錯的都是一些非要手打的鐵頭娃。
2.正式打包發(fā)布的簽名茶凳,前面說過開放平臺綁定的簽名和手機(jī)上用簽名生成工具得到的簽名一定要一致嫂拴,概念要清楚播揪,一般情況是你發(fā)布打包和debug運(yùn)行的時候他不是一個jks文件,這個隨時可以用簽名生成工具apk查看筒狠,問題不大猪狈。
3.開放平臺修改綁定簽名都是即時生效,提交就生效窟蓝,不用審核啊那些鬼東西罪裹。
4.服務(wù)器訂單簽名,雖然調(diào)了統(tǒng)一下單运挫,但是沒有拿微信api返回給他的參數(shù)做二次簽名就回給我們状共,然后我們這邊也沒處理,這是一定報-1的谁帕,沒做過的不一定知道這點(diǎn)峡继,文章前面也說過。服務(wù)器和app端都可以二次簽名匈挖,但是我們讓服務(wù)端做碾牌,為什么?因?yàn)閍ndroid開發(fā)雞兒最大儡循。
按照我的文章來舶吗,不會報錯,當(dāng)然了择膝,少不了忘記寫什么內(nèi)容誓琼,,如果害的大家掉坑了肴捉,可以評論回復(fù)腹侣,也可以噴我,但是我先聲明齿穗,我這人經(jīng)不起批評傲隶! ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ------尼古拉斯 子路
最后
建議大家上面的代碼和截圖不要全部搞ctrl+C,ctrl+V那一套窃页,能自己敲的盡量自己敲跺株,加深印象,有助理解腮出,理解掌握了才能做到無招勝有招的境界帖鸦,上山的路有很多條,希望我們都能找到自己那條胚嘲。
最后把業(yè)務(wù)流程圖給大家作儿,這個一定要看,而且要看明白馋劈,看懂攻锰,想做好程序員要知其然還要知其所以然晾嘶。放在最后是因?yàn)槲矣X得接入成功之后再看能更好的理解,對著代碼娶吞,對著流程垒迂,這么簡單的東西,相信搞android開發(fā)的都能明白妒蛇,加油机断,開發(fā)至上。
以上有關(guān)激進(jìn)言論跟我沒任何關(guān)系绣夺,網(wǎng)上復(fù)制來的吏奸,18以下的請在大人陪同下觀看,本人原創(chuàng)陶耍,轉(zhuǎn)載注明出處就行奋蔚,謝謝大家。