当前版本: 1.0
一 接入规则
1.1 谁来阅读此文档
1.2 注意事项
1.3 接入描述
1.4 特别注意
2 接口地址
2.1 登录流程
2.1.1 登录接口
2.1.2 前端初始化
2.1.3 选择服务器接口
2.1.4 角色创建接口
2.2 充值流程
2.2.1 充值唤起
2.2.2 充值异步回调通知
2.3 功能接口
2.3.1 用户分享接口
2.3.2 用户收藏接口
1 接入规则
1.1 谁来阅读此文档
游戏平台和游戏方技术人员。
1.2 注意事项
接口参数大小写敏感。
request和response的编码格式为UTF-8。
1.3 接入描述
游戏对接时游戏方提供商家名称、游戏名称、游戏登录地址、支付异步通知地址,wancms向游戏方提供app_id、login_key、pay_key(应用加密字段,请妥善保管)及游戏测试地址。用户访问游戏时wancms会采用iframe方式访问游戏登录地址并带上参数open_id(用户唯一识别ID)及sign(用户登录口令)及channel(渠道标识,在sdk初始化时用到可为空),游戏请求各个接口时需取得用户授权参数open_id及sign。请求校验参数sign为请求参数与值加login_key(md5("open_id=xxx&key={login_key}"))的MD5加密。
1.4 特别注意
1、所有接口接入之前必须先提供(商家名称、游戏名称、游戏登录地址、充值回调地址),wancms提供该游戏的密钥对(app_id、login_key、pay_key)和游戏测试地址。
2、游戏开发对接需在wancms提供的测试地址中进行才能唤起支付。
3、每款游戏对应一组密钥对(app_id、login_key、pay_key)。
4、wancms用户登录游戏后,会分配给游戏该用户的open_id及sign。其中,同一个用户对同一款游戏来说,open_id是固定不变的,游戏方可以将open_id与自身的用户系统user_id绑定。因此,可对同一个wancms用户做游戏存档等操作。
5、请妥善保存游戏的密钥对。login_key、pay_key不可直接暴露在前端。如发现泄露,请尽快联系wancms进行更换。
6、收藏功能用于实现wancms的包含但不限于微端下载、发送桌面、关注公众号,wancms会根据当前不同客户端实现不同功能。
2 接口地址
2.1 登录流程
2.1.1 登录接口(必接)
1、请求地址:http://gameurl/ (游戏入口地址,游戏方提供)
2、请求方式:get 由wancms平台iframe跳转至游戏地址
3、请求参数:
open_id:用户open_id,sign:验证sgin,channel:用户渠道,is_favorite:是否收藏(0:未收藏,1:已收藏),收藏功能用于实现包括但不限于:微端下载、发送桌面、关注公众号等。,
2.1.2 前端初始化(必接)
游戏加载时加载wancmsjs文件,并做初始化 <script src="http://h5.wancms.com/themes/main_template/Public/h5style/js/h5sdk.js" type="text/javascript>"</script>
1、请求参数:
app_id:应用id,open_id:用户open_id,登录授权时传入,channel:平台渠道标识,登录授权时传入
2、请求参数:
var initdata = {app_id:"XXX",open_id:"XXX",channel: "XXX"};
3、请求方式:在游戏加载时调用 初始化sdk:wancmssdk.init(initdata);
4、返回值 无
2.1.3 选择服务器接口(必接)
1、请求参数:
app_id:游戏id,open_id:用户open_id,server_id:服务器id,server_name:服务器名称
2、请求方式:
var serverData = {app_id:"xxx",open_id:"123456789abc",server_id:"123456789abc",server_name: "123456789abc"};
调用查询接口方法: wancmssdk. selectServer (serverData)
3、请求试例
<head><script src="http://h5.wancms.com/themes/main_template/Public/h5style/js/h5sdk.js" type="text/javascript"></script><script>wancmssdk.init();var serverData = {"app_id":'xx',"open_id":'11111111',"server_id":'2222222',"server_name":'aaaaaaa',};wancmssdk.selectServer(serverData);</script></head>
4、返回值 无
2.1.4 角色创建接口(必接)
1、请求参数:
app_id:游戏id,open_id:用户open_id,server_id:服务器id,server_name:服务器名称role_id:角色idrole_name:角色昵称role_level:角色等级
2、请求方式:
var roleData = {app_id:"xxx",open_id:"123456789abc",server_id:"123456789abc",server_name: "123456789abc"role_id: "123456789abc"role_name: "123456789abc"role_level: "xxx"};
调用查询接口方法: wancmssdk. createRole (roleData)
3、请求试例
<head><script src="http://h5.wancms.com/themes/main_template/Public/h5style/js/h5sdk.js" type="text/javascript"></script><script>wancmssdk.init();var roleData = {"app_id":'xx',"open_id":'11111111',"server_id":'2222222',"server_name":'aaaaaaa',"role_id":'aaaaaaa',"role_name":'aaaaaaa',"role_level":'xx',};wancmssdk.createRole(roleData);</script></head>
4、返回值 无
2.2 充值流程
2.2.1 充值唤起(必接)
1、请求参数:
app_id:游戏id,open_id:用户open_id,bill_no:游戏充值订单号(游戏方可唯一识别),goods_name:商品名称,ext:额外参数,充值后原样返回,total_fee:充值元宝数,1元RMB = 10元宝 .(大于1,且不包含小数),sign:请求校验参数(签名需要在后端生成后再返回前端,pay_key不直接暴露在前端)md5(bill_no=XXX&ext=XXX&goods_name=XXX&open_id=XXX&secret_key={pay_key}&total_fee=XXX)
2、请求方式
引用js文件:<script src="http://h5.wancms.com/themes/main_template/Public/h5style/js/h5sdk.js" type="text/javascript"></script>,初始化sdk:wancmssdk.init(),拼装参数var paydata = {"app_id":'xxx',"open_id":'111111111111111',"bill_no":'33333333333',"goods_name":'游戏大礼包',"total_fee":1,"ext":'abc',"sign":'aaaaaaaabc',},调用支付方法:wancmssdk.pay( paydata, function (code, msg) { alert("支付 code="+code+",msg="+msg);
示例代码
<!DOCTYPE html><html lang="zh-cn"><head><script src="http://h5.wancms.com/themes/main_template/Public/h5style/js/h5sdk.js" type="text/javascript"></script><script>wancmssdk.init();var paydata = {"app_id":'xxx',"open_id":'111111111111111',"bill_no":'33333333333',"goods_name":'游戏大礼包',"total_fee":1,"ext":'abc',"sign":'aaaaaaaabc',};wancmssdk.pay( paydata, function (code, msg) {alert("支付 code="+code+",msg="+msg);});</script></head><body></body></html>
3、返回值
| code | msg |
|---|---|
| 5 | 关闭支付 |
| 6 | 支付成功 |
| 7 | 支付失败 |
| 8 | 取消支付 |
| 9 | 支付参数错误 |
| 10 | 支付参数数量错误 |
2.2.2 充值异步回调通知(必接)
1、请求地址:由游戏方提供通知地址
2、请求方:充值成功后由wancms服务端请求至游戏方服务器
3、请求方式:异步get请求
4、请求参数:
app_id:游戏App_id,open_id:用户open_id,bill_no:充值订单号,游戏请求充值时传递给wancms,orderid:平台订单号,ext:额外参数,游戏请求时传递给wancms,price:充值RMB(带两位小数点),status:充值状态(success:充值成功,fail:充值失败),sign:请求校验参数md5(app_id=XXX&bill_no=XXX&ext=XXX&open_id=XXX&price=XXX&secret_key={pay_key}&status=XXX)
5、返回值:
success:异步通知成功,且游戏已进行处理,fail:异步通知失败
2.3 功能接口
2.3.1 用户分享接口
1、请求参数:
open_id:用户open_id,
2、请求方式
引用js文件:<script src="http://h5.wancms.com/themes/main_template/Public/h5style/js/h5sdk.js" type="text/javascript"></script>,初始化sdk:wancmssdk.init(),拼装参数var shareData = {"open_id":'1234567890',};调用查询接口方法:wancmssdk.share( paydata, shareData (code, msg) { alert("查询 code="+code+",msg="+msg);
示例代码
<!DOCTYPE html><html lang="zh-cn"><head><script src="http://h5.wancms.com/themes/main_template/Public/h5style/js/h5sdk.js" type="text/javascript"></script><script>wancmssdk.init();var shareData = {"open_id":'1234567890',};wancmssdk.share( shareData, function (code, msg) {alert("查询 code="+code+",msg="+msg);});</script></head><body></body></html>
3、返回值示例
{code:错误编码,msg:提示信息,data: {}// 目前为空 只根据状态码为101即可判断分享成功}
2.3.2 用户收藏接口
1、请求参数:
open_id:用户open_id,
2、请求方式
引用js文件:<script src="http://h5.wancms.com/themes/main_template/Public/h5style/js/h5sdk.js" type="text/javascript"></script>,初始化sdk:wancmssdk.init(),拼装参数var favoriteData = {"open_id":'111111111111111',};调用查询接口方法:wancmssdk.favorite( favoriteData, shareData (code, msg) { alert("查询 code="+code+",msg="+msg);
示例代码
<!DOCTYPE html><html lang="zh-cn"><head><script src="http://h5.wancms.com/themes/main_template/Public/h5style/js/h5sdk.js" type="text/javascript"></script><script>wancmssdk.init();var favoriteData = {"open_id":'111111111111111',};wancmssdk.favorite( favoriteData, function (code, msg) {alert("查询 code="+code+",msg="+msg);});</script></head><body></body></html>
3 附录
3.1 平台参数列表说明
| 字段名 | 类型 | 说明 |
| open_id | String | 用户id |
| app_id | String | 游戏id |
| sign | String | 签名, md5(param1=XXX& param2=XXX& paramN=XXX&secret_key=xxx) |
