信游科技接口制作说明



V3平台接口制作说明书

 

  1. 搭建环境(或者说用信游科技提供制作程序)
  2. 获得游戏接口文档(游戏开发商提供).
  3. 编写代码测试 登录游戏 充值 等接口.
  4. 制作发布接口

 

 

       1: 接口依靠主要程序com.xykj.games.dll加载接口文件,创建接口程序,从而进入游戏.

              将下载的(信游科技接口制作程序.RAR)解压运行xykj.sln(默认用VS2010,项目的升级与降级自己调整,升级为自动升级,降级需要手动修改.),打开后编译程序,运行default.html

可以看到4个调试程序和接口创建程序,可以通过点击进入游戏 游戏充值 角色验证等功能测试代码的正确性.进入游戏会生成一个URL地址,点击地址可以进入游戏说明进入游戏方法是正确的.游戏充值点击后返回充值结果(接口中需要处理游戏充值链接,之后返回助理后的结果值).角色验证基本和充值一样的助理方式.新手卡领取和充值角色验证基本一致,只是最后成功的时候返回新手卡卡号.

       注:根据游戏文档不同,需要做的处理也不完全一样.某些游戏不提供角色验证,新手卡领取接口,则不用实现这两个方法,返回默认值即可.而某些游戏会有一些其他验证,如在登录游戏前需要向游戏方注册用户账号(游戏方账号全部存在一个数据库中,不区分平台和服务器时候会这样做),这时候需要自己实现方法.

 

       2:用户自主代码.

       实现游戏文档,的主意文件为项目中web文件下stion文件夹下Test.cs文件,这个文件中Test类调用了接口中4个方法.用户主要需要时间这个类中的4个方法:

       { public class XYKJ : com.xykj.common.CodeInterface }

       OnPlay(进入游戏) OnPay(游戏充值) User(角色验证) Card(领取新手卡)

       实现方法后,在测试成功的情况下,复制注释 /*开始*/与注释/*结束*/之间的代码,

       到文件c.html中在这里填写接口的信息,如名称,第几次制作,和平台的域名(域名错误的话不能    使用该接口)

       在后将复制的代码粘贴到textarea文本框中,点击生成按钮,则会成一个.eng的接口文件.

       将该文件放到平台/config/gameengine文件夹中.再从网站后台>游戏>接口设置中可见该接口文 件.在选择游戏后可以选择该接口引擎,处理该游戏的玩家请求.

      

       3:代码库

       接口制作程序中提供一个制作游戏接口常用库com.xykj.common.

       可以直接使用 XY.(点)方法或者属性.

       常用属性:ClientIp用户IP地址(已处理代理的可能.)

                      TimeSpan时间戳(北京时间,目前所有游戏都是用的该值)

                  NowTime当前时间(非UTC时间.)

       常用方法: MD5(将一个字符串已md5形式加密,32位小写.)

                     JtoJson将一个对象转换成json的字符串.

                     JtoObject和JToObject 将json字符串转换成对象

                     UrlEncode和UrlDecode字符串编码和解码

                     GetUrlBySocket使用Socket协议获取内容.很少游戏用到.

                     GetUrlByStream使用GET方式获取内容.

                     GetUrlByWebClient使用post方式获取内容,参数:1地址,2:类似a=1&b=2形式字符串

                    

 

 

 

 

 

 

       3:示例

       该示例写在Test.cs文件中.最终生成接口也是这些代码,代码中必须使用明确的变量类型.不能出现var

      

    public class XYKJ : com.xykj.common.CodeInterface

    {

        /*欧冠足球*/

        public string OnPlay(com.xykj.model.xy_users user, com.xykj.model.xy_games game, com.xykj.model.xy_servers server, com.xykj.model.xy_ports port)

        {

            string url1 = port.GameUrl;

            string url2 = string.Format(server.ServerNumber2, server.ServerNumber);          

            //防沉迷

            string fcm = "18";

            //用户账号

            string uname = user.Account;

            //服务器编号

            string sid = server.ServerNumber.Trim();

            //游戏编号

            string gid = port.GameNubmer;

            //登录key

            string playkey = port.GameKey;

            //时间戳

            string time = XY.TimeSpan.ToString();

            //玩家IP

            string uip = XY.ClientIp;

            //游戏地址

            string gurl = url2;

            //平台ID

            string unid = port.Unid;

            string md5 = "&gid=" + gid + "&sid=" + sid + "&time=" + time + "&uip=" + uip + "&gurl=" + gurl + "&unid=" + unid + "&key=" + playkey;

            string sign = XY.MD5(md5);

            string url = string.Format("{0}?uname={1}&gid={2}&sid={3}&time={4}&uip={5}&gurl={6}&unid={7}&fcm={8}&sign={9}", url1, XY.UrlEncode(uname), gid, sid, time, uip, gurl, unid, fcm, sign);          

            return url;

        }

 

        public string OnPay(com.xykj.model.xy_users user, com.xykj.model.xy_games game, com.xykj.model.xy_servers server, com.xykj.model.xy_ports port, com.xykj.model.xy_order order)

        {

            string gurl = string.Format(server.ServerNumber2, server.ServerNumber);

            string gid = port.GameNubmer;

            string uname = user.Account;

            string sid = server.ServerNumber.Trim();

            string payurl = port.PayUrl;

            string key = port.PayKey;

            string time = XY.TimeSpan.ToString();

            string paysn = order.OrderId;

            string unid = port.Unid;

            int money = (int)order.PayMoney;

            string md5 = "paysn=" + paysn + "&uname=" + uname + "&gid=" + gid + "&sid=" + sid + "&money=" + money + "&gurl=" + gurl + "&unid=" + unid + "&key=" + key;

            string sign = XY.MD5(md5);

            string url = string.Format("{0}?paysn={1}&uname={2}&gid={3}&sid={4}&money={5}&gurl={6}&unid={7}&sign={8}", payurl, paysn, XY.UrlEncode(uname), gid, sid, money, gurl, unid, sign);

            string pay_info = "-255";

            string _temp_info = XY.GetUrlByStream(url, "UTF-8");

            switch (_temp_info)

            {

                case "01":

                case "11": pay_info = "200"; break;//成功返回200

                case "02": pay_info = "游戏编号错误!"; break;

                case "03": pay_info = "服务器编号错误!"; break;

                case "04": pay_info = "合作渠道ID错误!"; break;

                case "05": pay_info = "签名错误!"; break;

                case "06": pay_info = "超时!"; break;

                case "07": pay_info = "未到开放时间!"; break;

                case "08": pay_info = "维护中!"; break;

                case "09": pay_info = "未授权游戏及服务器!"; break;

                case "10": pay_info = "未授权IP!"; break;

                case "12": pay_info = "帐号不存在!"; break;

                case "13": pay_info = "充值金额错误,充值金额必须大于或等于1,或充值超过1万!"; break;

                case "14": pay_info = "充值失败!"; break;

                case "15": pay_info = "未知错误!"; break;

                default:

                    pay_info = _temp_info;

                    break;

            }

            return pay_info;

 

        }

 

        public string User(com.xykj.model.xy_users user, com.xykj.model.xy_games game, com.xykj.model.xy_servers server, com.xykj.model.xy_ports port)

        {

            return "-255";

        }

        public string Card(com.xykj.model.xy_users user, com.xykj.model.xy_games game, com.xykj.model.xy_servers server, com.xykj.model.xy_ports port)

        {

            string gid = port.GameNubmer;

            string unid = port.Unid;

            string sid = server.ServerNumber.Trim();

            string cid = "1";

            string uname = user.Account;

            string url = string.Format("{0}?uname={1}&gid={2}&sid={3}&cid={4}&unid={5}", port.CardUrl, XY.UrlEncode(uname), gid, sid, cid, unid);

            string _temp_info = XY.GetUrlByStream(url, "UTF-8");

            string card_info = "-255";

            switch (_temp_info)

            {

                case "02": card_info = "游戏编号错误"; break;

                case "03": card_info = "服务器编号错误"; break;

                case "04": card_info = "合作渠道ID错误"; break;

                case "05": card_info = "账号不存在"; break;

                case "06": card_info = "接口异常"; break;

                case "07": card_info = "接口异常"; break;

                case "08": card_info = "领取失败"; break;

                case "09": card_info = "未授权游戏及服务器"; break;

                case "10": card_info = "领卡数量限制"; break;

                case "11": card_info = "领卡IP限制"; break;

                default:

                    card_info = _temp_info;

                    break;

            }

            return card_info;

        }

    }

 

     




                                                                                                                                                                           信游科技-接口制作程序