anysdk-JS支付系统接口

来自AnySDK 文档
跳转至: 导航搜索
本文介绍的是AnySDK Framework 2.0.0版本在cocos2d-x js中,支付、分享、广告等系统使用的各个接口。

流程图

支付流程.jpg

文字简述

1、游戏客户端APP调用AnySDK框架支付接口请求订单号
2、AnySDK框架获取订单号
3、AnySDK框架向渠道平台服务器请求支付
4、支付成功后,渠道平台服务器同步通知AnySDK框架(游戏客户端)
5、渠道平台服务器会异步通知AnySDK服务器
6、AnySDK服务器响应渠道平台服务器
7、AnySDK服务器将支付结果通知到游戏服务器
8、游戏服务器响应AnySDK支付通知
9、游戏服务器验证支付通知并发放道具

调用 IAPSystem 的各个方法

获取支付插件对象

AnySDK框架支持多个支付插件,AnySDK客户端选择多少个支付,getIAPPlugins就能获取到多少个。
如果只有一个支付插件,可以直接调用getIAPPlugin获取。

var iap_plugin = agent.getIAPPlugin();

如果有多个支付插件,可以调用getIAPPlugins获取全部插件,然后通过id获取指定对象。

var iap_plugins = agent.getIAPPlugins();
var iap_plugin = iap_plugins[pluginID];//可通过for循环输出各个插件的key来判断自己所需要支付插件的key值。
iap_plugin.payForProduct(productInfo);

设置监听

iap_plugin.setListener(this.onPayResult, this);
onPayResult:function(code, msg, info){
    cc.log("pay result, resultcode:"+code+", msg: "+msg);        //根据返回的code和msg来做相对应的处理和操作。
    if( code == anysdk.PayResultCode.kPaySuccess ) {
        //do something
    }
}

支付

payForProduct(productInfo);
productInfo 实际上是一个object(例:{key:value}),记录了支付的一些相关的信息,开发者需要提供支付的如下参数:
注意:调用支付函数时需要传入的一些玩家信息参数(如角色名称,ID,等级)都是渠道强制需求(如UC,小米),并非AnySDK收集所用,如果开发者不填或者填假数据都会导致渠道上架无法通过。
必传参数不能为空,若当前没有可用的值可以写任意值上去
个别渠道可能还需要添加其他参数,请参考常见问题中的渠道说明,根据渠道判断并添加上相应参数
参数 是否必传 参数说明
Product_Id Y 商品id(联想、七匣子、酷派等商品id要与在渠道后台配置的商品id一致)
参数类型:字符串
Product_Name Y 商品名
参数类型:字符串
Product_Price Y 商品价格(元),可能有的SDK只支持整数
参数类型:字符串
Product_Count Y 商品份数(除非游戏需要支持一次购买多份商品,否则传1即可);
参数类型:字符串
Product_Desc N 商品描述(不传则使用Product_Name)
参数类型:字符串
Coin_Name Y 虚拟币名称(如金币、元宝)
参数类型:字符串
Coin_Rate Y 虚拟币兑换比例(例如100,表示1元购买100虚拟币)
参数类型:字符串
Role_Id Y 游戏角色id;
参数类型:字符串
Role_Name Y 游戏角色名;
参数类型:字符串
Role_Grade Y 游戏角色等级;
参数类型:字符串
Role_Balance Y 用户游戏内虚拟币余额,如元宝,金币,符石;
参数类型:字符串
Vip_Level Y Vip等级
参数类型:字符串
Party_Name Y 帮派、公会等
参数类型:字符串
Server_Id Y 服务器id,若无填“1”;
参数类型:字符串
Server_Name Y 服务器名
参数类型:字符串
EXT N 扩展字段
参数类型:字符串,可以用json型的字符串。

因有些SDK不支持浮点数,Product_Price请传入整数。

回调信息
回调信息 code msg
支付成功 kPaySuccess null或者错误信息的简单描述
支付取消 kPayCancel null或者错误信息的简单描述
支付失败 kPayFail null或者错误信息的简单描述
支付网络出现错误 kPayNetworkError null或者错误信息的简单描述
支付信息提供不完全 kPayProductionInforIncomplete null或者错误信息的简单描述

举例说明

var info = {
    Product_Id:"1",  
    Product_Name:"10金币", 
    Product_Price:"1", 
    Product_Count:"1",  
    Coin_Name:"金币",
    Coin_Rate:"10",
    Role_Id:"1001",  
    Role_Name:"张三",
    Role_Grade:"50",
    Role_Balance:"1",
    Vip_Level:"1",
    Party_Name:"无",
    Server_Id:"1",
    Server_Name:"服务器1"
};    //参数,商品信息填写
iap_plugin.payForProduct(info);    //pay

获取订单号

string getOrderId() 用户可通过该函数获取到订单号。

var order_id = iap_plusgin.getOrderId();

注意:调用payForProduct后立即调用getOrderId的话是获取不到该次支付的订单号的,因为此时客户端还没收到服务端返回的订单号,请在收到支付回调后调用getOrderId。

重置支付状态

void resetPayState()

支付过程中若SDK没有回调结果,就认为支付正在进行中,再次调用支付的时候会回调kPayNowPaying,可以调用该函数重置支付状态。

anysdk.ProtocolIAP.resetPayState()