zoukankan      html  css  js  c++  java
  • Bmob Unity Android支付接入文档

    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文件全部添加有可能导致编译不通过的错误,这时留下armeabiarmeabi-v7ax86三个目录即可编译通过

    • Plugins/Android/assets目录包括<payassets.db>

      添加目录

    修改AndroidManifest.xml,两种方式二选一

    方法一:
    • 将下载的支付SDK的AndroidMenifest.xml文件打开(比如用sublime打开),把包名修改成你的包名: package="你的包名"

       package="xx.xx.xx"
    • 再把修改完成后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#云端逻辑模块解释 )
            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{ *; }
  • 相关阅读:
    我也设计模式——5.Prototype
    宋史目录
    ASP.NET 2.0 读书笔记 圣殿 之 HtmlHead & HtmlMeta
    SQL2005 读书笔记
    AJax调试
    WEB前端开发规范文档(转)
    ASP.NET的错误处理机制(转)
    asp.net面试集合
    Power Designer的使用
    运行常用命令
  • 原文地址:https://www.cnblogs.com/hpu001/p/9959939.html
Copyright © 2011-2022 走看看