《服务端快速接入》

重要提示: 客户端开发人员可以直接去->>下一关

接入要点

在实际接入中,服务端接入主要包括登录与支付。

登录

对照统一登录验证流程图,游服需要为登录功能实现这些:

  1. 流程③:接收 AnySDK Framework 请求参数并检查 privatekey
  2. 流程④:向 AnySDK Server 转发登录请求
  3. 流程⑦:接收登录验证结果
  4. 流程⑧:根据登录验证结果返回一些游戏逻辑相关的数据给游戏客户端

支付

对照订单支付流程图(详见http://docs.anysdk.com/integration/server/payment-notice/#_2),游服需要为支付功能实现这些:

  1. 流程⑦:接收从 AnySDK Server 通知过来的订单支付结果,并对信息做校验
  2. 流程⑧:向 AnySDK Server 响应 ok 或 OK,表示游戏服务端完成本次通知处理
  3. 流程⑨:游戏服务端验证支付通知并发放道具

接入实践

获取 Sample_Server

我们已经知道了游服在对接过程中需要实现哪些功能,那么我们要如何实现这些功能呢?我们直接给出了 PHP、Java、Python、NodeJS、C# 等语言具体实现的 Demo (Sample_Server),并在 Demo 中对具体实现进行了一定的封装和注释说明,我们只要稍作阅读理解并将相应代码 Copy 到自己的游戏服务端稍作修改即可。

先去 github 上将 Sample_Server 项目代码 Clone 到本地,目录结构说明如下:

下面,我们以 PHP 作为游戏服务端语言来演示一下。

PHP 作为服务端的具体接入过程代码分析

因为我们是以 PHP 作为服务器端语言的,所以我们只需要用到 php 这个目录下的文件,非常简洁: AnySDK.Sdk.class.php --经过封装的服务端 SDK
AnySDK.config.php --服务端 SDK 配置文件
demo/login.php--服务端登录对接的实现
demo/payNotice.php--服务端支付对接的实现
demo/adtracking.php--服务端广告追踪对接的实现

我们来看一下 demo/login.php 中登录对接的具体实现: 会发现登录的对接实现非常的简洁,短短数行代码即实现了游服对接登录所需要实现的功能点,主要是因为 AnySDK.Sdk.class.php 中提供的 Sdk_AnySDK 类将检查 privatekey 和转发请求等进行了一定的封装,在实际项目中我们也可以象 Login.php 一样直接将AnySDK.Sdk.class.php 拿来使用即可。在其他语言实现的 Demo 中也有提供类似的封装。

再来看一下 demo/payNotice.php 中支付对接的具体实现: 支付的对接过程也很简单:接收通知、响应 OK、发放道具。

当然,支付及发放道具必须确保安全,所以在支付对接过程中有一个验签的过程,Sdk_AnySDK 类封装了一个 checkPaymentSign 方法用于验签,并且在 new Sdk_AnySDK(ANYSDK_ENHANCED_KEY, ANYSDK_PRIVATE_KEY) 创建实例的过程中通过构造函数可以传入应用的私钥和增强密钥,这就是我们在【开发者管理后台】看到的: 如果你象我一样是直接拿 Demo 来使用的,你需要将这两个密钥配置到 AnySDK.config.php 中:

部署服务端

分析完服务端代码,因为本次演示的游戏并无具体道具发放等逻辑,所以 Demo 代码基本不用作任何修改直接拿来使用即可。在你的游戏中只需要结合你的实际需要,稍作修改就好,比如向游戏客户端返回更具体的登录信息、通知客户端发放道具等。

我在测试的时候,服务器环境于下:

公网IP:39.219.136.41
环境:LNMP(Linux+Nginx+MySQL+PHP)

我直接将 Sample_Server 下的 php 整个文件夹上传到了服务器的 WEB 站点根目录下,于是我得到了两个 URL :
登录验证地址 http://39.219.136.41/php/demo/login.php
支付通知地址 http://39.219.136.41/php/demo/payNotice.php

阶段性测试

先在浏览器里直接测试一下支付通知地址确保能够访问到,应该是这样的:

然后到 AnySDK 开发者管理后台 -> 支付管理 -> 模拟通知游服,将支付通知地址填写到右侧模拟通知页面的支付通知地址文本框中,然后点击模拟通知: 如果你在点击模拟通知后,看到下方的文本域中的 log 日志是这样的,那么就说明服务器端对接成功了:

至此,服务器端对接完成。

备注:关于服务端接入原理

我们在上一篇《集成 AnySDK Framework》的 调用登录 的章节中,已经引导客户端开发人员阅读过 《接入指南》 -> 《客户端(*)》-> 《用户系统》,大致领略过客户端和服务端的交互流程。

这个交互流程在 《接入指南》 -> 《服务端》-> 《统一登录验证》中会讲得更详细透彻些。无论是客户端开发人员还是服务端开发人员都强烈建议仔细阅读一下该文档,并理解文档中的流程图。因此,服务端接入实际上指的是游戏服务器与 AnySDK Server 对接的过程。

下一步

快点我开启下一关