@z77
2017-10-25T03:19:22.000000Z
字数 2522
阅读 1027
Plugins/Android/libs目录包括 <BmobPay_UnityHelper_v3.x.x_xxxxxx.jar> 、 <BmobPay_v3.x.x_xxxxxx.jar> 和 <xxx/libbmobwpay.so> ,so文件按项目需求添加
注意:so文件全部添加有可能导致编译不通过的错误,这时留下armeabi、armeabi-v7a和x86三个目录即可编译通过
Plugins/Android/assets目录包括 <payassets.db>

将下载的支付SDK的AndroidMenifest.xml文件打开(比如用sublime打开),把包名修改成你的包名: package="你的包名"
package="xx.xx.xx"
Plugins/Android目录下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给出的红色标识
在Start()方法中调用如下方法:(Application ID在后台应用管理的 数据浏览->应用信息->应用密钥->Application ID,如果appKey为空或者混淆规则不正确,会抛出IllegalArgumentException异常,因为init是异步的,越早初始化越好)
AndroidJavaClass jc = new AndroidJavaClass("cn.bmob.pay.UnityHelper");jc.CallStatic("init","Application ID");
发起支付调用,请使用如下方法:
/*** 全部参数都是String类型* 第1个参数不能修改,是UnityHelper.jar中预设的支付方法名* 第2个参数是商品的名称,请注意不要有违禁字眼,可以为空* 第3个参数是商品的详情描述,请注意不要有违禁字眼,可以为空* 第4个参数为时为支付金额,测试建议 "0.02"* 第5个参数为”0"时调用支付宝支付,为"1"时调用微信支付* 第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){// 此处应该保存订单号,比如保存进数据库等,以便以后查询print("OrderId = " + orderId);}/* ** 支付成功,保险起见请调用查询方法确认结果*/void OnPay_Succeed(string s){print("Pay Succeed");}/* ** 支付失败*/void OnPay_Fail(string reason){//reason实际为 code+":"+reasonprint("Pay Fail, "+reason);}
在需要调用订单查询的地方,调用如下方法(微信订单和支付宝订单通用):
/*** 全部参数都是String类型* 第1个参数不能修改,是UnityHelper.jar中预设的查询方法名* 第2个参数为时为支付订单号orderId* 第3个参数为Unity内某GameObject的Name(etc. 'unityObj'),详见下一步骤*/AndroidJavaClass jc = new AndroidJavaClass("cn.bmob.pay.UnityHelper");jc.CallStatic("query","1234567890","unityObj");
找到设定的监听对象GameObject,在其绑定的脚本中添加如下方法(对象名可以自定义,方法名必须相同):
// 查询订单成功接口void OnQuery_Succeed(string state){print("Pay Succeed");}// 查询订单失败接口void OnQuery_Fail(string reason){//reason实际为 code+":"+reasonprint("Pay Fail, "+reason);}
-libraryjars libs/BmobPay_v3.x.x_xxxxxx.jar-keepclasseswithmembers class c.b.** { *; }-keep interface c.b.PListener{ *; }-keep interface c.b.QListener{ *; }