[隐藏]

目录

  • 1、API介绍

    4399商城API是4399为游戏开发者提供的一种游戏道具销售并获取收益的服务,玩家在4399平台上通过充值游币,去直接购买游戏内的商品,并且还提供了商城物品管理,物品销售统计,玩家消费统计等功能,方便开发者管理道具和调整策略。

  • 2、使用案例

  • 3、添加步骤

    3.1.联系商务QQ130064399,将游戏及说明文档提交给商务进行初审。

    注:说明文档内容需包括:团队及优质作品介绍、游戏可做微支付的特点、商城开放后出售哪些物品、计划更新周期、游戏上线后是否保持更新和维护等。

    3.2.初审通过后,开发者在4399原创平台创建游戏,上传不带商城的普通游戏版本提交审核。上传游戏前,开发者需对游戏进行严格测试,以确保所提供的游戏无安全漏洞。我们会在3个工作日内发布上线。

    3.3.游戏上线后,进入为期一周的观察期。期间我们会结合游戏上线后的各项数据指标(如流量涨幅,玩家反馈等)对游戏做全方位的评估。

    3.4.游戏通过评估,开发者申请商城API,商务开启商城接口。游戏严密测试确认无误后,将商城版本更新至线上。运行期间,若游戏出现重大问题充值接口被迫关闭,开发者需接受无条件关闭充值接口。

    3.5.正式运营阶段,开发者与4399原创平台签订正式合同。在此期间,商务将对合作的相应问题进行解答与反馈,并由商务和开发者跟进解决问题。

    注:使用商城API的游戏需在4399独家首发一个月,以便我们更好的为开发者提供推广和运营服务。独家期过后,若开发者推出不带微支付的游戏版本,则需在4399主站首发一周,以避免过早分散游戏人气,增加游戏收入。

    3.6.相关代码

    • AS2
    • AS3

    3.6.1 下载as2_api.rar包,并解压到你游戏代码的根目录

    3.6.2 在游戏第一帧添加api通用代码(所有api共用,有且仅添加一次)

    import AS2_4399_API.Bridge;
    _global.bridge = Bridge.getInstance();

    3.6.3 在游戏第一帧添加商城API专用代码

    import AS2_4399_API.PayMoneyVar;
    var _4399_function_shop_id:String = '30ea6b51a23275df624b781c3eb43ac6';
    var _4399_function_payMoney_id:String = '10f73c09b41d9f41e761232f5f322f38';

    3.6.4 参数介绍:

    3.6.4.1 payMoneyVar参数为as2_api.rar包下的PayMoneyVar类的单例,用于游戏充值。

    如:玩家需充值10游戏币,那就这样做:

    payMoneyVar.money = 10;
    if(_global.bridge)
    	_global.bridge.payMoney(payMoneyVar,payContext,payCallBackFun,errorCallBackFun);

    3.6.4.2 dateObj为可选参数,Object类型,用于需要查询的期间。

    属性有sDate(起始时间)与eDate(结束时间)

    属性均为可选,类型为String

    属性格式:yyyy-mm-dd|hh:mm:ss。如:2012-08-06|00:00:00

    3.6.4.3 dataObj为必填参数,Object类型,用于购买物品。

    属性propId:必填,String类型,表示物品id。

    属性count:必填,int类型,表示购买数量。

    属性price:必填,int类型,表示swf前端的物品单价,用于跟后端单价做比对。

    属性idx:必填,int类型,表示当前存档索引。

    属性tag:可选,String类型,用于标识本次请求。

    3.6.4.4 payContext参数为回调函数所在的位置

    3.6.4.5 payCallBackFun参数用于正常执行以下相应接口的回调函数

    3.6.4.6 errorCallBackFun参数用于由于某些原因造成以下相应接口执行发生错误的回调函数

    3.6.5 接口介绍

    创建PayMoneyVar类的单例

    var payMoneyVar:PayMoneyVar = PayMoneyVar.getInstance();

    回调函数,用于标志可以正常使用微支付接口了

    if(_global.bridge)
       _global.bridge.usePayApi(payContext,payCallBackFun);
    //当可以正常使用支付api后执行 payContext.payCallBackFun(ret);

    游戏充值

    if(_global.bridge)
    _global.bridge.payMoney(payMoneyVar,payContext, payCallBackFun,errorCallBackFun);
    /*充值成游戏币失败后执行payContext.payCallBackFun(ret);
    其中ret是Boolean类型*/

    获取余额

    if(_global.bridge)
    _global.bridge.getBalance(payContext, payCallBackFun,errorCallBackFun);
    /*获取剩余游戏币后执行 payContext.payCallBackFun(ret);
    其中ret.balance(剩余游戏币)的值不为undefiend时,表示调用成功及返回游戏币余额*/

    获取累积消费的游戏币

    if(_global.bridge)
    _global.bridge.getTotalPaiedFun(payContext, payCallBackFun,errorCallBackFun,dateObj);
    /*获取累积消费的游戏币后执行 payContext.payCallBackFun(ret);
    其中ret.balance(累积消费的游戏币)的值不为undefiend时,表示调用成功及返回累积消费的游戏币*/

    获取累积充值的游戏币

    if(_global.bridge)
    _global.bridge.getTotalRechargedFun(payContext, payCallBackFun,errorCallBackFun,dateObj);
    /*获取累积充值的游戏币后执行 payContext.payCallBackFun(ret);
    其中ret.balance(累积充值的游戏币)的值不为undefiend时,表示调用成功及返回累积充值的游戏币*/

    以上接口,由于某些原因造成执行发生错误,则会自动执行payContext.errorCallBackFun(ret);

    其中ret.info的值为:

    0|请重试!若还不行,请重新登录!!
    
    1|程序有问题,请联系技术人员100584399!!
    
    2|请检查,目前传进来的值等于0!!
    
    3|游戏不存在或者没有支付接口!!
    
    5|出错了,请重新登录!
    
    6|日期或者时间的格式出错了!!

    获取商城列表

    if(_global.bridge)
    _global.bridge.getShopList(payContext, payCallBackFun,errorCallBackFun);
    /*成功获取到商城列表后执行payContext.payCallBackFun(data); 其中data的值,如下:
    if(data == null){
    	trace("获取物品列表时,返回空值了\n");
    	return;
    }  
      
    if(data.length == 0){
    	trace("无商品列表\n");
    	return;
    }
       
    for(var i in data){
    	var propData:Object = data[i];
    	trace("propNum:" + i + "  propId:" + propData.propId + "  price:" + propData.price + "   propType:" + propData.propType + "\n");
    	//判断物品是否有活动
    	if(propData.propAction != null)
    	{
    		//物品的活动信息
    		var propAction:Object = propData.propAction;
    
    		//propAction.type //int类型,表示活动类型,参数(10:限量,20:限时,30:折扣,12:限量限时,13:限量折扣,23:限时折扣,40:限时限量折扣)
    		//propAction.state //int类型,表示活动状态,参数(1:进行,0:结束)
    		//propAction.count //int类型,表示限量活动的限量个数
    		//propAction.surplusCount //int类型,表示限量活动剩余购买数量
    		//propAction.startDate // int类型,表示限时活动开始时间戳(精确到天,以秒为单位)
    		//propAction.endDate //int类型,表示限时活动结束时间戳(精确到天,以秒为单位)
    		//propAction.discount //Number类型,表示活动折扣(区间为50-99)
    		//propAction.regularPrice //int类型,原价
    
    	}
    
    }
    */

    购买物品

    if(_global.bridge)
    _global.bridge.buyPropNd(dataObj,payContext, payCallBackFun,errorCallBackFun);
    /*成功购买物品后执行payContext.payCallBackFun(data); 其中data的值,如下:
    trace("propId:" + data.propId + "  count:" + data.count + "   balance:" + data.balance + "   tag:" + data.tag+"\n");
    */

    以上接口,由于某些原因造成执行发生错误,则会自动执行payContext.errorCallBackFun(ret);

    其中 ret 的值为:

    ret.eId | ret.msg
    20000 | 该物品不存在
    
    20001 | 前后端价格不一致
    
    20002 | 该用户没有余额
    
    20003 | 用户余额不足
    
    20004 | 扣款出错
    
    20010 | 限量/限时/限量限时活动已结束
    
    20011 | 销售物品数量不足
    
    20012 | 活动未开始
    
    20013 | 限量折扣/限时折扣/限量限时折扣活动已结束
    
    30000 | 系统级出错
    
    80001 | 取物品列表出错了!
    
    90001 | 传的索引值有问题!
    
    90003 | 购买的物品数据不完善!
    
    90004 | 购买的物品数量须至少1个!
    
    90005 | 购买的物品数据类型有误!

  • 4、常见问题解答

    4.1.添加商城API有什么好处?

    使用商城api您可以轻松的管理商城物品,实现在线管理商城,您无需更新游戏主文件就能实现动态编辑商城,包括在线编辑物品、添加物品、删除物品、上下架物品等操作。

    4.2.申请商城API需要具备什么样的条件?

    商城API接口需要申请,原创平台会根据开发者的情况及游戏的质量再判断是否开通接口。

    开发者需提供:

    游戏货币名称

    游戏币与人民币的兑换比例等

    4.3.如何申请商城接口?审核周期是多久?

    进入游戏管理页(如图)→申请商城接口→审批通过→游戏提交上线。

    申请成功后,一般是在1个工作日以内审核完成。

    4.4.在哪里管理商城物品?

    商城物品管理是商城API提供的用于管理商城物品的面板,有添加,编辑,删除道具的功能,编辑商城物品价格,并能实时同步到客户端商城。

    开通商城功能后,开发者可在[游戏列表]->[游戏管理]->[已有API权限]-> [商城物品管理]处管理商城物品。

    4.5.收入如何分成?

    收入分成会在签订的合同中具体来提现,分成比例需要与平台商务洽谈。

    4.6.在哪里查看游戏收入?

    开发者可以在自己的管理后台查看到数据

    登录4399原创平台→运营数据→支付渠道收入,可以查看详细到每一笔交易的记录(如图)

    4.7.收入如何支付,何时收到钱?

    满1000元人民币起结算,不满1000元暂不结算;

    每月5日前为系统结算时间,申请付款时间为每月6-9日,汇款时间为每月10-15日。 开发者在收到付款后,应在2个工作日内向乙方开具等额合法有效的发票。