Qt for Android集成史上第一最全最簡單的微信支付
應(yīng)廣大Qt好友的要求,記錄下我自己開發(fā)的qt for android中如何集成微信,在自己搞這個的時候,還是轉(zhuǎn)了不少彎頭,其實(shí)最簡單的方法就是看官方文檔,但是要有java基礎(chǔ)才行,我當(dāng)初是研究的別人java的原生支付demo,所以版本有點(diǎn)老,但是不影響正常支付。好了,進(jìn)入正題,使用qt來進(jìn)行微信支付,其實(shí)就是要用java原生的實(shí)現(xiàn),只不過qt相當(dāng)于一個外用調(diào)用者,只管調(diào)用支付集成的方法就可以了,具體實(shí)現(xiàn)還是要用java來寫,這個可以看下別人安卓的文檔,了解搭建環(huán)境之類的問題,這里我就不累贅了,可以看下我的另外一篇博客轉(zhuǎn)載于別人的,內(nèi)附demo,安卓集成微信支付:點(diǎn)擊打開鏈接, 不想看的可以看我下面的內(nèi)容:
如果你已經(jīng)成功集成了微信登錄和分享,那么此文將助你快速集成微信支付,此文基于微信支付SDK3.1.1,也就是目前為止最新的SDK
1)微信官方的集成文檔
2)微信官方資源下載
??
不過我相信,即便你看了微信的官方文檔,你依然不知道微信支付怎么集成,因?yàn)槲⑿胖Ц兜墓俜轿臋n簡直太.....
如果你已經(jīng)準(zhǔn)備好了資源包,接下來正式開始集成
我們需要的資源其實(shí)有以下幾樣,在開始前,就這些轉(zhuǎn)備好吧
1)微信支付的APPID
2)微信支付依賴包 >>> libammsdk.jar
3)一個Activity類 >>> WXPayEntryActivity.java
這里需要特別說明一下,這個Activity類,直接從上下載到的范例代碼中copy到自己的工程中即可,這個頁面是在你調(diào)起微信支付完成支付(或取消或失?。┖螅倩氐侥愕腁pp時會調(diào)用的一個頁面。頁面的布局可以是你自定義的布局,直接放圖講解:
先說一下這個類的路徑,網(wǎng)上也有一大堆介紹了,我直接放圖,路徑一定,而且必須是這樣的:
在這個類中需要注意的地方有兩個:
1、這個類中的布局是可以自定義的,如果你不需要展示什么布局,而是要跳轉(zhuǎn)頁面,把這段代碼刪除即可
2、回調(diào)結(jié)果的處理,下面是官方的處理方式,直接給了一個dialog,很多人會摸不著頭腦,如果你不需要這個dialog,直接刪除就好了,不需要把官方demo中的布局和資源都復(fù)制過來
??下面是我自定義的處理方式,比較簡單,就是土司顯示了一下支付結(jié)果,如果你需要支付成功后跳轉(zhuǎn),那么直接在這里startActivity即可,別忘記最后要將這個頁面finish()
?
這個類中的其余的回調(diào)方法,我們都不需要去操作
然后我們就可以開始支付了,支付很簡單,真的很簡單
這是微信支付需要我們攜帶的參數(shù),對于新人來說,可能比較困惑的是我怎么生成這些參數(shù)呢?其實(shí)這些參數(shù)都是服務(wù)器返回給我們的,APPID我們可以自己保存在本地一份,其余的都是服務(wù)器返回給我們的,大概介紹一下流程:
最后,服務(wù)器返回給我們微信支付的參數(shù)后,我們就可以愉快的支付了,這里是關(guān)鍵一步,注意?。?br />
至此我們已經(jīng)可以調(diào)起微信支付頁面來支付了
最后還有一個需要注意的是,很多人被這一步坑了,就是關(guān)于微信開放平臺簽名的問題。其實(shí)只要你手機(jī)上的程序的簽名和你在微信平臺登記的簽名一致即可,無論是debug版本,還是release版本
把上面的看懂后,基本上是沒有其它問題的,下面將重點(diǎn)是介紹Qt如何發(fā)揮它的用武之地,要用到Qt調(diào)用java集成的接口,就要學(xué)會Qt寫Jni代碼 ,這里寫下我接口方法實(shí)現(xiàn):
因?yàn)槲疫@邊實(shí)現(xiàn)的微信支付簽名是自己本地客戶端實(shí)現(xiàn)的,所以必須要自己傳送一個貨幣,也就是money過去,這個money一定要在后面*100,微信官方是100等于一分錢。其中圖中的重點(diǎn)就是我紅框圈起來的就是需要調(diào)用的方法,而wXPayPort就是Qt這邊調(diào)用了,調(diào)用的時候帶上一個貨幣即可,下面來看看我的wXPayPort的java實(shí)現(xiàn),這個是需要自己用java原生來寫的,
?????首先并不是直接調(diào)用startPay()方法的,而是先調(diào)用wXPayPort,然后開啟一個線程來啟動微信支付程序,因?yàn)閷懥撕芫茫?dāng)時也未來的及記錄,所以為什么要開啟一個線程來調(diào)用,具體好像是Qt所在的進(jìn)程來拉起java微信支付進(jìn)程會導(dǎo)致崩潰,所以需要開啟一個java線程來拉起java本身的所構(gòu)建出來的微信支付進(jìn)程,當(dāng)調(diào)用這一步后,就是生成簽名的時候了,其實(shí)生成簽名應(yīng)該由服務(wù)器來做,這里就不累贅了,具體調(diào)用后的執(zhí)行可以查看PayActivity.java這個類文件(都是官方Demo文件),下面列一下客戶端生成簽名需要注意的地方:
?1、notify_url必須是要服務(wù)器那邊知道的支付地址,我這邊是測試地址,
2、montyValue必須是一個string,不能是int,否則會報錯,還有程序調(diào)用不能為0.01,必須要乘以100。
3、sing就是簽名,所以一般簽名這堆配置其實(shí)不應(yīng)該由客戶端做,只需要服務(wù)器傳送給你sign簽名即可,有了sign簽名就可以進(jìn)行支付了。
后續(xù)將會貼出一個專門用于Qt支付的demo出來,如有更好建議,還望多多評論
完整demo:Qt微信支付Demo