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