支付接口是bmob為廣大開發人員提供的統一、正規的收費手段,讓沒有企業認證的個人開發者,也能通過支付寶和微信向使用者收費。
戳這裡去網盤下載下傳Demo.apk
戳這裡去網盤下載下傳Demo.unitypackage
看看效果圖:

是不是很誘人~~~下面看看怎麼接入吧。
第零步!
前往bmob注冊一個你自己的賬号,然後登入賬号建立應用,在“應用面闆->資料浏覽->應用資訊->應用密鑰->Application ID”即可獲得APPID。然後,前往下載下傳頁面,在頁面找到Android支付 SDK下載下傳,裡面的unity檔案夾就包含了所需的sdk和接入文檔的md檔案,步驟挺詳細的。
下面我把他的文檔貼出來給大家看看:
Bmob Unity Android支付接入文檔
添加相關檔案,将下載下傳的plugins檔案夾放進Assets目錄下
- Plugins/Android/libs目錄包括
、<BmobPay_UnityHelper_v1.x.x_xxxxxx.jar>
和<BmobPay_v3.x.x_xxxxxx.jar>
<xxx/libbmobwpay.so>
,so檔案按項目需求添加
注意:so檔案全部添加有可能導緻編譯不通過的錯誤,這時留下
、armeabi
和armeabi-v7a
三個目錄即可編譯通過x86
- Plugins/Android/assets目錄包括
<payassets.db>
Unity(Android端)支付接口快速入門,個人開發者也能有收入
修改AndroidManifest.xml,兩種方式二選一
方法一:
- 将下載下傳的支付SDK的
檔案打開(比如用sublime打開),把包名修改成你的包名:AndroidMenifest.xml
package="你的包名"
- 再把修改完成後AndroidMenifest.xml檔案的放進
目錄下Plugins/Android
方法二:
- 如果你的項目需要更多的設定,可以從你的unity項目Export出
,導出來的googleAndroidProject裡面會自動生成AndroidManifest.xml檔案。googleAndroidProject
- 在生成的AndroidManifest.xml檔案中添加下添加上網權限、讀寫權限:
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
- 在AndroidManifest.xml檔案中添加下免責Activity
注意:這個是在運作時加載的類,可以忽略IDE給出的紅色辨別<activity android:name="cn.bmob.pay.v3.act.PayAct" />
- 再把修改完成後AndroidMenifest.xml檔案的放進Plugins/Android目錄下
初始化ApplicationID
- 在Start()方法中調用如下方法:(Application ID在背景應用管理的 資料浏覽->應用資訊->應用密鑰->Application ID,如果appKey為空或者混淆規則不正确,會抛出IllegalArgumentException異常,因為init是異步的,越早初始化越好。注意:支付時報234的錯誤可能是應用沒有進行支付稽核,新應用200塊以下支付不用稽核也可以測試,超過了就要趕緊去申請稽核啦)
AndroidJavaClass jc = new AndroidJavaClass("cn.bmob.pay.UnityHelper"); jc.CallStatic("init","Application ID");
發起支付調用:
- 發起支付調用,請使用如下方法:
/** * 全部參數都是String類型 * 第1個參數不能修改,是UnityHelper.jar中預設的支付方法名 * 第2個參數是商品的名稱,請注意不要有違禁字眼,可以為空 * 第3個參數是商品的詳情描述,請注意不要有違禁字眼,可以為空 * 第4個參數為時為支付金額,(微信支付和QQ支付,訂單金額要求 >= 2.2元) * 第5個參數為"0"時調用支付寶支付,為"1"時調用微信支付,為"2"時調用QQ支付 * 第6個參數為監聽對象,Unity内某GameObject(etc. 'Main Camera') */ AndroidJavaClass jc = new AndroidJavaClass("cn.bmob.pay.UnityHelper"); jc.CallStatic("pay","商品名", "商品描述", "0.02", "0", "Main Camera");
- 找到上一步驟設定的監聽對象GameObject,在其綁定的腳本中添加如下回調方法(方法名必須相同):
/* * * 無論支付成功與否,隻要成功産生了請求,就傳回訂單号,請自行儲存 * 以便以後查詢 */ void OnPay_OrderId(string orderId){ // 此處應該儲存訂單号,比如儲存進資料庫等,以便以後查詢(比如使用者在跳轉支付時,本app被殺了,OnPay_Succeed的代碼沒有被調用) //本app被殺掉,這種情況可填寫<支付結果的異步通知URL>(URL格式: http://cloud.bmob.cn/應用的SecretKey/雲端邏輯的名稱)解決,結合[雲端代碼]來使用(具體看文檔 https://docs.bmob.cn/pay/Android/b_developdoc/doc/index.html#支付回調 、 https://docs.bmob.cn/cloudcode/WEB/a_faststart/doc/index.html#建立雲端邏輯 和 https://docs.bmob.cn/cloudcode/WEB/b_developdoc/doc/index.html#雲端邏輯子產品解釋 )// 記憶體很吃緊的老款手機,在打開支付寶或者微信的時候可能導緻你自己的app被系統殺掉,這種情況可以通過在背景(支付-配置資訊-服務端部署配置)填寫<支付結果的異步通知URL>解決(這個URL格式是 http://cloud.bmob.cn/應用的SecretKey/雲端邏輯的名稱),結合[雲端代碼](不會的看文檔https://docs.bmob.cn/cloudcode/WEB/a_faststart/doc/index.html 和 https://docs.bmob.cn/pay/Restful/b_developdoc/doc/index.html#查詢訂單)來使用 print("OrderId = " + orderId); } /* * * 支付成功,保險起見請調用查詢方法确認結果 */ void OnPay_Succeed(string s){ print("Pay Succeed"); } /* * * 支付失敗 */ void OnPay_Fail(string reason){ //reason實際為 code+":"+reason print("Pay Fail, "+reason); // 不會看App的log的朋友,建議測試時用個GUI Text把這些結果輸出來,不然錯誤了沒輸出啥也不知道 }
訂單查詢
- 在需要調用訂單查詢的地方,調用如下方法(微信訂單和支付寶訂單通用):
/** * 全部參數都是String類型 * 第1個參數不能修改,是UnityHelper.jar中預設的查詢方法名 * 第2個參數為時為支付訂單号orderId * 第3個參數為監聽對象,Unity内某GameObject(etc. 'Main Camera') */ AndroidJavaClass jc = new AndroidJavaClass("cn.bmob.pay.UnityHelper"); jc.CallStatic("query","1234567890","Main Camera");
- 找到設定的監聽對象GameObject,在其綁定的腳本中添加如下方法(方法名必須相同):
// 查詢訂單成功接口 void OnQuery_Succeed(string state){ print("Pay Succeed"); } // 查詢訂單失敗接口 void OnQuery_Fail(string reason){ //reason實際為 code+":"+reason print("Pay Fail, "+reason); }
設定Debug模式,預設是關的,如果要開則傳入“1”
AndroidJavaClass jc = new AndroidJavaClass("cn.bmob.pay.UnityHelper");
jc.CallStatic("setDebug","1"); //開啟log,Debug_Tag為“BmobPay_Unity”
修改混淆規則(如果你需要混淆的話)
-libraryjars libs/BmobPay_v3.x.x_xxxxxx.jar
-libraryjars libs/BmobPay_UnityHelper_v1.x.x_xxxxxx.jar
-keepclasseswithmembers class c.b.** { *; }
-keep interface c.b.PListener{ *; }
-keep interface c.b.QListener{ *; }