天天看點

Unity(Android端)支付接口快速入門,個人開發者也能有收入

支付接口是bmob為廣大開發人員提供的統一、正規的收費手段,讓沒有企業認證的個人開發者,也能通過支付寶和微信向使用者收費。

戳這裡去網盤下載下傳Demo.apk

戳這裡去網盤下載下傳Demo.unitypackage

看看效果圖:

Unity(Android端)支付接口快速入門,個人開發者也能有收入
Unity(Android端)支付接口快速入門,個人開發者也能有收入
Unity(Android端)支付接口快速入門,個人開發者也能有收入
Unity(Android端)支付接口快速入門,個人開發者也能有收入

是不是很誘人~~~下面看看怎麼接入吧。

第零步!

前往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的

    AndroidMenifest.xml

    檔案打開(比如用sublime打開),把包名修改成你的包名:

    package="你的包名"

  • 再把修改完成後AndroidMenifest.xml檔案的放進

    Plugins/Android

    目錄下
方法二:
  • 如果你的項目需要更多的設定,可以從你的unity項目Export出

    googleAndroidProject

    ,導出來的googleAndroidProject裡面會自動生成AndroidManifest.xml檔案。
  • 在生成的AndroidManifest.xml檔案中添加下添加上網權限、讀寫權限:
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
               
  • 在AndroidManifest.xml檔案中添加下免責Activity
    <activity android:name="cn.bmob.pay.v3.act.PayAct" /> 
               
    注意:這個是在運作時加載的類,可以忽略IDE給出的紅色辨別
  • 再把修改完成後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{ *; }
           
下一篇: PT100/PT1000

繼續閱讀