文档章节

使用unity3d 接入anySDK的总结2

习惯了幻想
 习惯了幻想
发布于 2015/12/31 11:29
字数 652
阅读 60
收藏 0

    通过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代码为例。

其实本身验证签名成功以后游戏服务器就可以发放相应的充值结果给客户端了,不过由于我们的支付验证服务器和游戏服务器是分开的,所以我中间还做了一步由支付验证服务器通知游戏服务器的过程。

以上就是支付接入的流程。


© 著作权归作者所有

共有 人打赏支持
习惯了幻想
粉丝 6
博文 15
码字总数 7389
作品 0
朝阳
高级程序员
私信 提问
unity3d如何快速接入渠道SDK之Unity篇

首先我们讲一下,为什么要介绍这个插件? 是因为这个插件极大的简化了我对接渠道SDK的工作量,精力和时间,也避免了我不断的重复的做接入SDK工作这样没有成就感的无聊工作! 所以我就介绍一下...

tt0301
2014/08/05
25.3K
16
福利:unity3d一站式接入渠道SDK插件 abctools

unity3d游戏终于开发完了,到了要接入渠道SDK了(老板让我接入360,小米,当乐,91,50多家渠道SDK)我要疯了,为unity3d游戏接入渠道SDK是一件非常蛋痛的事情! 市面上多达100多家的渠道需要...

liruochu
2014/07/28
1K
0
福利:unity3d一站式接入渠道SDK插件 abctools

unity3d游戏终于开发完了,到了要接入渠道SDK了(老板让我接入360,小米,当乐,91,50多家渠道SDK)我要疯了,为unity3d游戏接入渠道SDK是一件非常蛋痛的事情! 市面上多达100多家的渠道需要...

liruochu
2014/07/26
277
17
Unity接SDK通用方法总结

第一篇博客,回顾接UnitySDK的坑 接SDK主要有两种方式,第三方SDK和手动接(我用的android studio) 首先接触到的SDK就是Facebook-Unity的SDK,主要就是facebook的后台配置:https://develop...

只会写BUGy
2018/08/20
0
0
Unity3dAds广告插件的使用(附Demo)

这次我们学习一个方便在unity内进行接入广告平台,就是unityAds,这个广告平台是视频广告,可以在游戏暂停的时候全屏显示。最重要的是在unity里面接入极为方便! 附上简洁的代码(底部附有D...

咖喱酱_zero
2016/07/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

容器服务

简介 容器服务提供高性能可伸缩的容器应用管理服务,支持用 Docker 和 Kubernetes 进行容器化应用的生命周期管理,提供多种应用发布方式和持续交付能力并支持微服务架构。 产品架构 容器服务...

狼王黄师傅
昨天
3
0
高性能应用缓存设计方案

为什么 不管是刻意或者偶尔看其他大神或者大师在讨论高性能架构时,自己都是认真的去看缓存是怎么用呢?认认真真的看完发现缓存这一块他们说的都是一个WebApp或者服务的缓存结构或者缓存实现...

呼呼南风
昨天
12
0
寻找一种易于理解的一致性算法(扩展版)

摘要 Raft 是一种为了管理复制日志的一致性算法。它提供了和 Paxos 算法相同的功能和性能,但是它的算法结构和 Paxos 不同,使得 Raft 算法更加容易理解并且更容易构建实际的系统。为了提升可...

Tiny熊
昨天
2
0
聊聊GarbageCollectionNotificationInfo

序 本文主要研究一下GarbageCollectionNotificationInfo CompositeData java.management/javax/management/openmbean/CompositeData.java public interface CompositeData { public Co......

go4it
昨天
3
0
阿里云ECS的1M带宽理解

本文就给大家科普下阿里云ECS的固定1M带宽的含义。 “下行带宽”和“上行带宽” 为了更好的理解,需要先给大家解释个词“下行带宽”和“上行带宽”: 下行带宽:粗略的解释就是下载数据的最大...

echojson
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部