• 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{ *; }
  • 相关阅读:
    【今日CV 视觉论文速览】 19 Nov 2018
    【numpy求和】numpy.sum()求和
    【今日CV 视觉论文速览】16 Nov 2018
    【今日CV 视觉论文速览】15 Nov 2018
    poj 2454 Jersey Politics 随机化
    poj 3318 Matrix Multiplication 随机化算法
    hdu 3400 Line belt 三分法
    poj 3301 Texas Trip 三分法
    poj 2976 Dropping tests 0/1分数规划
    poj 3440 Coin Toss 概率问题
  • 原文地址:https://www.cnblogs.com/hpu001/p/9959939.html
Copyright © 2020-2023  润新知