android接入google支付
google支付整合在android專案中,一般用於外卡支付。開發過程中必須保證全程都連結vpn。推薦非凡vpn或者greenvpn,都是付費的,用起來方便。
開啟sdk manager,保證以下方框中的Googe Play Billing Library是install的狀態。
然後進入sdk\extras\google\play_billing資料夾下,如下,samples就是google支付的例子和我們接入專案所需的各種檔案。
在eclipse中import samples下的專案,如下圖所示,
com.android.vending.billing和com.example.android.trivialdrivesample.util兩個包都拷貝到新專案中即可。
在AndroidManifest.xml檔案中新增使用者的google支付許可權。
至此,google支付的開發環境就搭建好了。
接下來進行google後臺配置,首先要有一個google開發者賬號,這個賬號不同於普通google賬號哦,這個賬號需要支付每年25美金,具體申請方法可以google,我用的是公司已經申請好的。
登入google開發者網站,新增一個測試版的apk,注意這個apk的包名、versionid、versionname、還有打包的簽名必須和最終上傳正式版的一致,意思就是說支付的時候這四樣東西必須一致才可以支付!!!alpha版本(應該是beta或者alpha版本都可以,但是我選擇了alpha版本),上傳之後選擇測試方式,我選擇的是封閉式測試,新增一個gmail賬號作為測試賬號,切記這個測試賬號不能是我們登入開發者網站這個賬戶,必須不是開發者賬號,而是普通的gmail賬號,用於測試時登入googleplay,購買產品時使用。
最下邊這個網址,就是測試賬號登入後可以看到的產品的地址,這個產品只有測試賬號可以看到。
最好是在這裡也把測試賬號新增進去。
新增應用內商品,目前google後臺只能新增受管理商品,但是不會對我們程式有什麼影響,受管理的商品購買成功後立即消耗掉就可以變為不受管理的商品了,可以多次購買了。
受管理的商品就是類似於一次性的道具之類的,只能購買一次,再次購買會出錯。
不受管理的商品就是類似於金幣之類的,可以多次購買。
所以在後臺,我們新增的商品都是受管理的商品。新增的商品ID為唯一的購買標誌。
商品需要啟用,否則無法購買,而且重要的是我們上傳的測試版apk,必須釋出!!!測試版也要釋出!!!釋出為測試版的!!!
至此google後臺apk和商品配置已經完成,開始進行手機端的配置,我用真機進行測試,手機連線翻牆vpn是必不可少的,另外手機必須開啟google服務,並且必須安裝google商店!!! 否則程式碼的第一步會根本無法進去回撥!!!安裝google服務,首先一定要先獲取手機的root許可權,我的手機root了好幾次都不成功,360一鍵root,百度一鍵root,都試過,最後用刷機精靈root成功,這個要多試幾遍。
然後登陸google商店,記得一定要用之前新增的測試人員的gmail賬號登入!!!
登入成功後,所有的google應用其實都登入的是這個賬號了,我們的測試apk支付時也是用的這個測試賬號!!!
至此手機端的配置也完成了。
至此所有配置完成了,可以寫程式碼了,有哪些漏掉的話請參考文末連結。
測試是比較糾結的,不能直接在eclipse下執行然後測試,每次測試必須用上傳的apk的那個簽名來對apk進行簽名,然後在手機上執行,進行測試!是很麻煩,但是好在google支付接入並不複雜,複雜的是各種配置,所以可以程式碼全部寫完再進行測試。
具體程式碼也不寫了,官方demo裡有,文末連結裡也有。本文主要記錄下我開發的時候遇到的一些坑,其實是簡單的,只是沒做過的會不太瞭解流程,就會比較浪費時間了!!!
另外伺服器驗證問題,如果我們專案想出售應用內的不受管理商品,例如金幣,訂單完成後要呼叫消耗的方法來把商品消耗掉,消耗成功之後把回撥的Purchase物件傳遞給伺服器,切記不要只傳遞purchase.toString(),因為sdk原始碼裡purchase.toString()這個方法並沒有把String signature這個值加入進去,這也是個非常大的坑!!!一定要把Purchase類的mOriginalJson(訂單資訊)和signature都傳遞給伺服器去驗證!!!
其實後臺驗證還沒做完,還不知道是不是這樣驗證。。。做完再更。。。參考連結