使用unity3d 接入anySDK的总结2
2015-12-31 00:00
405 查看
摘要: 使用unity3d 接入anySDK的支付部分
通过AnySDKIAP设置支付的回调函数,例如我这里的IAPExternalCall
客户端设置好支付回调函数,然后通过调用
来发起支付请求(需要传入一个product的数据字典,需要的参数在anysdk文档中有写)。 待支付成功后,客户端会调支付成功的分支,并且此时可以通过
获取到anysdk生成的订单号。
同时anySDK服务器会异步通知在anysdk打包工具里配置的支付回调地址
在支付回调处理里其实主要需要做的就是对订单进行验证
将anySDK传给支付回调的参数进行排序,在进行md5签名来验证,具体的做法在anysdk服务端接入的例子里有。这里不再详细描述,但注意在验证签名成功后记得回传ok或者OK给anysdk服务端,因为如果anysdk服务端没有收到ok的回复的话,它会间隔一小段时间再次发送请求给支付回调地址,这样就会浪费资源,增加服务器压力。
比如我上面的在验证签名成功后回传给anysdk的处理,由于我本人用的是java做的web服务所以这里以java代码为例。
其实本身验证签名成功以后游戏服务器就可以发放相应的充值结果给客户端了,不过由于我们的支付验证服务器和游戏服务器是分开的,所以我中间还做了一步由支付验证服务器通知游戏服务器的过程。
以上就是支付接入的流程。
通过AnySDKIAP设置支付的回调函数,例如我这里的IAPExternalCall
AnySDKIAP.getInstance () .setListener (this,"IAPExternalCall");
客户端设置好支付回调函数,然后通过调用
AnySDKIAP.getInstance().payForProduct(products);
来发起支付请求(需要传入一个product的数据字典,需要的参数在anysdk文档中有写)。 待支付成功后,客户端会调支付成功的分支,并且此时可以通过
AnySDKIAP.getInstance().getOrderId();
获取到anysdk生成的订单号。
public void IAPExternalCall(string msg) { Debug.Log("IAPExternalCall(" + msg + ")"); Dictionary<string, string> dic = AnySDKUtil.stringToDictionary(msg); int code = Convert.ToInt32(dic["code"]); string result = dic["msg"]; switch (code) { case (int)PayResultCode.kPaySuccess://支付成功回调 Debug.Log("支付成功回调"); Debug.Log("支付result:" + result); onPaySuccess(); break; case (int)PayResultCode.kPayFail://支付失败回调 Debug.Log("支付失败回调"); onPayFail(); break; case (int)PayResultCode.kPayCancel://支付取消回调 Debug.Log("支付取消回调"); onPayCancel(); break; case (int)PayResultCode.kPayNetworkError://支付超时回调 onPayNetworkError(); break; case (int)PayResultCode.kPayProductionInforIncomplete://支付信息不完整 onPayInfoIncomplete(); break; /** * 新增加:正在进行中回调 * 支付过程中若SDK没有回调结果,就认为支付正在进行中 * 游戏开发商可让玩家去判断是否需要等待,若不等待则进行下一次的支付 */ case (int)PayResultCode.kPayNowPaying: break; default: break; } }
同时anySDK服务器会异步通知在anysdk打包工具里配置的支付回调地址
在支付回调处理里其实主要需要做的就是对订单进行验证
将anySDK传给支付回调的参数进行排序,在进行md5签名来验证,具体的做法在anysdk服务端接入的例子里有。这里不再详细描述,但注意在验证签名成功后记得回传ok或者OK给anysdk服务端,因为如果anysdk服务端没有收到ok的回复的话,它会间隔一小段时间再次发送请求给支付回调地址,这样就会浪费资源,增加服务器压力。
response.setContentType( "text/plain;charset=utf-8"); try{ PrintWriter writer = response.getWriter(); System.out.println("ok"); writer.write( "ok" ); writer.flush(); } catch( Exception e ) { e.printStackTrace(); }
比如我上面的在验证签名成功后回传给anysdk的处理,由于我本人用的是java做的web服务所以这里以java代码为例。
其实本身验证签名成功以后游戏服务器就可以发放相应的充值结果给客户端了,不过由于我们的支付验证服务器和游戏服务器是分开的,所以我中间还做了一步由支付验证服务器通知游戏服务器的过程。
以上就是支付接入的流程。
相关文章推荐
- 在Mac系统下使用VSCODE做unity开发
- 使用OpenGL在Unity中画一个框
- Unity编译至Xcode工程后自动添加文件和库的方法
- unity3d摄像机跟随物体
- Unity3D研究院之IOS全自动编辑framework、plist、oc代码(六十七)
- Unity中数据序列化
- A星寻路算法之RVO动态寻路
- 【小松教你手游开发】【unity实用技能】unity 更漂亮的位移
- 开始学习Unity
- unity生成android release 版本的apk性能比较好
- unity set texture offset
- Unity3D-对象池GameObjectPool
- (2016-1-5更新)unity3d Hair real time rendering _ An Energy-Conserving Hair Reflectance Model
- unity 场景的制作prefab 摆东西
- unity 2048 noplaymaker text
- unity playmaker player
- Unity3D游戏开发之如何优化贴图占用内存
- unity admob
- unity xml加密解密源码
- Unity Mesh Filter 与 Mesh Renderer