文档说明了星权益开放平台的接口协议,供使用该接口的合作商和本项目的后续开发维护人员使用。
测试环境:提供开发过程中用于联调的环境,不会产生真实的交易,仅用于API接口的通讯与调试工作。
生产环境:商户开发完成并测试通过后,可通过星权益商户服务平台创建应用,自助申请并获得有关业务参数。
环境 | HTTP地址 | HTTPS地址 |
---|---|---|
生产环境 | http://openapi.yunjinshuke.com/api/gateway | 暂不支持 |
测试环境 | http://test.openapi.yunjinshuke.com/api/gateway | 暂不支持 |
1、将除sign参数之外的所有参数包装成Dictionary<string,string>字典;
2、将Dictionary<string,string>字典进行Json序列化;
3、将Json字符串转化为字符数组charObjectArray,然后将charObjectArray进行Array.Sort()排序;
4、将排序后的charObjectArray转化为字符串string,然后在string后直接拼接应用密钥;
5、将第4步拼接了应用密钥的字符串进行md5,最后将得到的值转化为小写字符串即得到sign签名值;
1、将response响应结果中的result的值转换为字符数组charObjectArray,然后将charObjectArray进行Array.Sort()排序;
2、将排序后的charObjectArray转化为字符串string,然后在string后直接拼接应用密钥;
3、将第2步拼接了应用密钥的字符串进行md5,最后将得到的值转化为小写字符串即得到sign签名值;
测试环境参数:
签名JAVA示例: 加签过程:
appkey: BMgJkzAVdPJDqyDfBMv+AA==
sercret: 945d81d7d4ae44db9560277f293bf222
直充测试成功 1000000653
直充测试失败 1000000652
卡密测试 1000000651
public static String sign(String appSecret, Map<String, Object> params) {
char[] s = JSON.toJSONString(params, SerializerFeature.WriteMapNullValue).toCharArray();
Arrays.sort(s);
String outputSignOriginalStr = new String(s) + appSecret;
String sign = MD5Util.encode32(outputSignOriginalStr); //这里替换自己的md5
return sign;
}
public static void main(String[] args) throws BaseException {
String appSecret = "945d81d7d4ae44db9560277f293bf222";
Map<String, Object> reqParams = new HashMap<>();
reqParams.put("appKey", "BMgJkzAVdPJDqyDfBMv+AA==");
reqParams.put("method", "direct.add");
reqParams.put("timestamp", "2020-10-20 15:17:56");
reqParams.put("version", "1.0");
reqParams.put("reqParams", " {\"goodsCode\":\"1000000263\",\"rechargeAccount\":\"18229199737\",\"buyNumber\":\"1\",\"customerOrderNo\":\"2123334325343\"}");
String sign = sign(appSecret, reqParams);
reqParams.put("sign",sign);
System.out.println(sign); //0bba1d59b666061ac19c7250b83a308a
}
xxxxxxxxxx
排序前:{"method":"direct.add","reqParams":"{\"goodsCode\":\"1000000263\",\"rechargeAccount\":\"18229199737\",\"buyNumber\":\"1\",\"customerOrderNo\":\"2123334325343\"}","appKey":"BMgJkzAVdPJDqyDfBMv+AA==","version":"1.0","timestamp":"2020-10-20 15:17:56"}
排序后: """"""""""""""""""""""""""""""""""""+,,,,,,,--..000000000001111111112222222223333333344555667778999:::::::::::==AAAABBCDDJJKMMNNOPPV\\\\\\\\\\\\\\\\aaaaaabbcccccddddddddeeeeeeeeeeeefggghhiiikmmmmmmnnoooooooopppqqrrrrrrrrrrsssssttttttuuuuvvyyyz{{}}
拼接密钥
签名: 0bba1d59b666061ac19c7250b83a308a
public class AESEncryptUtil {
public static final String ALGORITHM = "AES/ECB/PKCS7Padding";
static {
try {
Security.addProvider(new BouncyCastleProvider());
} catch (Exception e) {
e.printStackTrace();
}
}
/**
*
* 基础数据(测试使用):
* AppSecret:7f8a6819ceb84a32b9ec1b381d9c512d
* cardNo:i1iVR5w9Qv+gq++70C+Ne+21+PaEMaleHPSBpvEhQJU=
* password:gF/NDpbzKvZ1ysNGTXrqtquM+7ZWIVsiG6jpnv+UxkY=
* 注意:第三方依赖:commons-codec-1.11.jar、gson-2.8.5.jar、bcprov-jdk15on.jar;
*
* Java解密示例代码
* @Description:解密工具
* Copyright:
* Copyright(c) 2020
* Company:湖南云金数科信息技术有限公司
* @author
* @version V1.0.0
* @since 1.0
* @date 2020 年3月23日 下午3:24:16
*/
public static String aes256Decode(String str, byte[] key) {
byte[] bytes = Base64.getDecoder().decode(str);
String result = null;
try {
Cipher cipher = Cipher.getInstance(ALGORITHM, "BC");
SecretKeySpec keySpec = new SecretKeySpec(key, "AES");
cipher.init(Cipher.DECRYPT_MODE, keySpec);
byte[] decoded = cipher.doFinal(bytes);
result = new String(decoded, "UTF-8");
} catch (Exception e) {
e.printStackTrace();
}
return result;}
public static void main(String[] args) throws Exception {
String cardNo = "i1iVR5w9Qv+gq++70C+Ne+21+PaEMaleHPSBpvEhQJU=";
String password = "i1iVR5w9Qv+gq++70C+Ne+21+PaEMaleHPSBpvEhQJU=";
String appSecret = "7f8a6819ceb84a32b9ec1b381d9c512d";
String cardNoValue = AESEncryptUtil.aes256Decode(cardNo, appSecret.getBytes());
String passwordValue = AESEncryptUtil.aes256Decode(password, appSecret.getBytes());
System.out.println("解密結果:" + cardNoValue);
System.out.println("解密結果:" + passwordValue);
}
}
接口介绍:直充商品下单接口,供合作方针对直充类型商品进行下单;
1、POST请求,Content-Type必须设置为:application/json;
2、接口是异步,接口调用成功(即下单成功),不代表充值成功,最终“充值结果”,需要调用 [订单查询接口] 进行查询;
3、[订单查询接口]必须接入;
请求参数
参数名 | 类型 | 必填 | 长度 | 示例值 | 描述 |
---|---|---|---|---|---|
appKey | String | 是 | 32 | RvD4GzAFt3Wmp8cddgZ3ag== | 分配给商户应用的appKey |
method | String | 是 | 128 | direct.add | 接口方法名称 |
timestamp | String | 是 | 32 | 2014-07-24 03:07:50 | 时间戳,格式为:yyyy-MM-dd HH:mm:ss |
version | String | 是 | 3 | 1.0 | 调用的接口版本 |
reqParams | String | 是 | 请求参数集合(注意:该参数是以json字符串的形式传输,详见reqParams参数列表) | ||
sign | String | 是 | 128 | 详见示例 | 签名串 |
reqParams参数列表
参数名称 | 类型 | 必填 | 长度 | 示例值 | 描述 |
---|---|---|---|---|---|
goodsCode | Long | 是 | 20 | 1000000018 | 商品编号 |
rechargeAccount | String | 是 | 32 | 11888888 | 充值账号 |
buyNumber | int | 是 | 10 | 1 | 购买数量 |
customerOrderNo | String | 是 | 32 | 201906281030191013526 | 外部订单号(每笔订单保持唯一) |
extraParams | String | 否 | 游戏充值拓展参数集合,可以通过游戏直充模板查询接口获取参数(注意:该参数是以json字符串的形式传输,详见extraParams参数列表) |
extraParams参数列表
参数名称 | 类型 | 必填 | 长度 | 示例值 | 描述 |
---|---|---|---|---|---|
gameCode | String | 否 | YXA | 游戏编号 | |
regionCode | String | 否 | YXA_DXYQ | 游戏区编号 | |
ServerCode | String | 否 | DXYQ_DK | 游戏服编号 | |
rechargeTypeCode | String | 否 | CZ1 | 充值类型编号 |
响应参数
参数名称 | 类型 | 必填 | 长度 | 示例值 | 描述 |
---|---|---|---|---|---|
code | String | 是 | 20 | 1000 | 返回码,详见《业务错误码》 |
message | String | 是 | 接口调用成功 | 返回码描述,详见《业务错误码》 | |
result | Object | 是 | 响应结果,详见result格式说明 | ||
sign | String | 是 | d9f7b3bb99741fedcc265162bea6c626 | 签名串,签名规则详见“签名计算规则说明” |
result格式说明
参数名称 | 类型 | 必填 | 长度 | 示例值 | 描述 |
---|---|---|---|---|---|
orderId | Long | 是 | 20 | 19062837751058701652 | 订单编号 |
customerOrderNo | String | 是 | 32 | 201906281030191013526 | 外部订单号,每次请求必须唯一 |
orderStatus | String | 是 | processing | 订单状态 (initial:未处理;waitprocess:待处理;processing:处理中;success:成功;failed:失败) | |
createTime | String | 是 | 2019-07-27 16:44:30 | 创建时间 | |
completeTime | String | 否 | 订单完成时间,查单接口返回 |
请求示例
JSON
xxxxxxxxxx
{
"appKey": "i4esv1l+76l/7NQCL3QudG90Fq+YgVfFGJAWgT+7qO1Bm9o/adG/1iwO2qXsAXNB",
"method": "direct.add",
"timestamp": "2020-05-20 16:44:30",
"version": "1.0",
"sign": "375d05b41775e1ddf2098504444af1e2",
"reqParams": "{\"customerOrderNo\":\"201906281030191013526\",\"goodsCode\":10000001,\"rechargeAccount\":\"888888\",\"buyNumber\":1}"
}
响应示例
JSON
xxxxxxxxxx
{
"code": 0,
"message": "接口调用成功",
"result": {\"orderId\":19062837751058,\"customerOrderNo\":\"201906281030191013526\",\"orderStatus\":\"processing\",\"createTime\":\"2020-05-20 15:58:18\",\"completeTime\":null},
"sign": "1d158f0089b7a091fba0b5df23cd80d5"
}
异常实例示例
JSON
xxxxxxxxxx
{
"code": 1010,
"message": "sign无效",
"result": null,
"sign": null
}
接口介绍:卡密商品下单接口,供合作方针对卡密类型商品进行下单;
1、POST请求,Content-Type必须设置为:application/json;
2、接口是异步,接口调用成功(即下单成功),不代表购买成功,最终“购买结果”,需要调用 [订单查询接口] 进行查询,由于取卡是异步操作,建议间隔1-3s循环调用,直至最终结果;
3、此接口不会返回卡密数据,需要再调用 [订单查询接口] 获取卡密信息;
4、[订单查询接口]必须接入;
请求参数
参数名 | 类型 | 必填 | 长度 | 示例值 | 描述 |
---|---|---|---|---|---|
appKey | String | 是 | 32 | RvD4GzAFt3Wmp8cddgZ3ag== | 分配给商户应用的appKey |
method | String | 是 | 128 | card.add | 接口方法名称 |
timestamp | String | 是 | 32 | 2014-07-24 03:07:50 | 时间戳,格式为:yyyy-MM-dd HH:mm:ss |
version | String | 是 | 3 | 1.0 | 调用的接口版本 |
reqParams | String | 是 | 请求参数集合(注意:该参数是以json字符串的形式传输,详见reqParams参数列表) | ||
sign | String | 是 | 128 | 详见示例 | 签名串 |
reqParams参数列表
参数名称 | 类型 | 必填 | 长度 | 示例值 | 描述 |
---|---|---|---|---|---|
goodsCode | Long | 是 | 20 | 1000000018 | 商品编号 |
buyNumber | int | 是 | 10 | 1 | 购买数量 |
customerOrderNo | String | 是 | 32 | 201906281030191013526 | 外部订单号(每笔订单保持唯一) |
响应参数
参数名称 | 类型 | 必填 | 长度 | 示例值 | 描述 |
---|---|---|---|---|---|
code | String | 是 | 20 | 1000 | 返回码,详见《业务错误码》 |
message | String | 是 | 接口调用成功 | 返回码描述,详见《业务错误码》 | |
result | String | 是 | 响应结果,详见result格式说明 | ||
sign | String | 是 | d9f7b3bb99741fedcc265162bea6c626 | 签名串,签名规则详见“签名计算规则说明” |
result格式说明
参数名称 | 类型 | 必填 | 长度 | 示例值 | 描述 |
---|---|---|---|---|---|
orderId | Long | 是 | 20 | 19062837751058701652 | 订单编号 |
customerOrderNo | String | 是 | 32 | 201906281030191013526 | 外部订单号,每次请求必须唯一 |
orderStatus | String | 是 | processing | 订单状态 (initial: 未处理;waitprocess:待处理;processing:处理中;success:成功;failed:失败) | |
createTime | String | 是 | 2019-07-27 16:44:30 | 创建时间 | |
completeTime | String | 否 | 2019-07-27 16:44:30 | 订单完成时间,查单接口返回 |
请求示例
JSON
xxxxxxxxxx
{
"appKey": "i4esv1l+76l/7NQCL3QudG90Fq+YgVfFGJAWgT+7qO1Bm9o/adG/1iwO2qXsAXNB",
"method": "card.add",
"timestamp": "2020-05-20 16:44:30",
"version": "1.0",
"sign": "375d05b41775e1ddf2098504444af1e2",
"reqParams": "{\"customerOrderNo\":\"201906281030191013526\",\"goodsCode\":10000001,\"buyNumber\":1}"
}
响应示例
JSON
xxxxxxxxxx
{
"code": 0,
"message": "接口调用成功",
"result": {\"orderId\":19062837751058,\"customerOrderNo\":\"201906281030191013526\",\"orderStatus\":\"processing\",\"createTime\":\"2020-05-20 15:58:18\",\"completeTime\":\"2020-05-20 15:58:18\"},
"sign": "1d158f0089b7a091fba0b5df23cd80d5"
}
异常实例示例
JSON
xxxxxxxxxx
{
"code": 1010,
"message": "sign无效",
"result": null,
"sign": null
}
接口介绍:查询订单详情接口,供合作方查询订单充值或卡密购买结果时调用;
1、POST请求,Content-Type必须设置为:application/json;
2、如果是卡密取卡订单,此接口会返回卡密数据;
3、卡密为密文,需要进行解密使用,详情请查看 【卡密解密说明】
请求参数
参数名 | 类型 | 必填 | 长度 | 示例值 | 描述 |
---|---|---|---|---|---|
appKey | String | 是 | 32 | RvD4GzAFt3Wmp8cddgZ3ag== | 分配给商户应用的appKey |
method | String | 是 | 128 | order.query | 接口方法名称 |
timestamp | String | 是 | 32 | 2014-07-24 03:07:50 | 时间戳,格式为:yyyy-MM-dd HH:mm:ss |
version | String | 是 | 3 | 1.0 | 调用的接口版本 |
reqParams | String | 是 | 请求参数集合(注意:该参数是以json字符串的形式传输,详见reqParams参数列表) | ||
sign | String | 是 | 128 | 详见示例 | 签名串 |
reqParams参数列表
参数名称 | 类型 | 必填 | 长度 | 示例值 | 描述 |
---|---|---|---|---|---|
customerOrderNo | String | 是 | 32 | 201906281030191013526 | 外部订单号(每笔订单保持唯一) |
响应参数
参数名称 | 类型 | 必填 | 长度 | 示例值 | 描述 |
---|---|---|---|---|---|
code | String | 是 | 20 | 1000 | 返回码,详见《业务错误码》 |
message | String | 是 | 接口调用成功 | 返回码描述,详见《业务错误码》 | |
result | Object | 是 | 响应结果,详见result格式说明 | ||
sign | String | 是 | d9f7b3bb99741fedcc265162bea6c626 | 签名串,签名规则详见“签名计算规则说明” |
result格式说明
参数名称 | 类型 | 必填 | 长度 | 示例值 | 描述 |
---|---|---|---|---|---|
orderId | Long | 是 | 20 | 19062837751058701652 | 订单编号 |
customerOrderNo | String | 是 | 32 | 201906281030191013526 | 外部订单号,每次请求必须唯一 |
orderStatus | String | 是 | processing | 订单状态 (initial: 未处理;waitprocess:待处理;processing:处理中;success:成功;failed:失败) | |
bizType | int | 是 | 1 | 交易类型 - 1:批采; 2:直充 | |
createTime | String | 是 | 2019-07-27 16:44:30 | 创建时间 | |
completeTime | String | 否 | 2019-07-27 16:44:30 | 订单完成时间,查单接口返回 | |
data | Array | 否 |
[{"cardNo":"12nCp6X/nALmrvr1erxK+D4L8n/kqz/RItKWUfvZrCU=", "password":"9HeOgdv+NpLihh4+5Gm0Mj4L8n/kqz/RItKWUfvZrCU=", "effectTime":"2019-06-30 11:15:32","invalidTime":"2019-06-30 11:15:32"}, {"cardNo":"12nCp6X/nALmrvr1erxK+BzfvN8D1qbXOYunJrydEWA=", "password":"9HeOgdv+NpLihh4+5Gm0MhzfvN8D1qbXOYunJrydEWA=", "effectTime":"2019-06-30 11:15:32","invalidTime":"2019-06-30 11:15:32"}]}] |
卡密信息,仅卡密订单返回(注意:卡密是密文,需要进行解密使用) |
data格式说明
参数名称 | 类型 | 必填 | 长度 | 示例值 | 描述 |
---|---|---|---|---|---|
cardNo | String | 是 | 64 | 12nCp6X/nALmrvr1erxK+D4L8n/kqz/RItKWUfvZrCU= | 卡号 |
password | String | 否 | 64 | 9HeOgdv+NpLihh4+5Gm0Mj4L8n/kqz/RItKWUfvZrCU= | 密码 |
effectTime | String | 否 | 2019-07-27 16:44:30 | 生效时间 | |
invalidTime | String | 否 | 2019-07-27 16:44:30 | 失效时间 |
请求示例
JSON
xxxxxxxxxx
{
"appKey": "i4esv1l+76l/7NQCL3QudG90Fq+YgVfFGJAWgT+7qO1Bm9o/adG/1iwO2qXsAXNB",
"method": "order.query",
"timestamp": "2020-05-20 16:44:30",
"version": "1.0",
"reqParams": "{\"customerOrderNo\":\"201906281030191013526\"}",
"sign": "375d05b41775e1ddf2098504444af1e2"
}
响应示例
JSON
xxxxxxxxxx
直充商品:
{
"code": 0,
"message": "成功",
"result": {\"orderId\":19062837751058,\"customerOrderNo\":\"201906281030191013526\",\"orderStatus\":\"success\",\"bizType\":2,\"createTime\":\"2020-05-20 15:58:18\",\"completeTime\":\"2020-05-20 15:59:18\"},
"sign": "06f351b34d9b02bc13bc62e66bdab2c8"
}
卡密商品:
{
"code": 0,
"message": "成功",
"result": {\"orderId\":19062837751058,\"customerOrderNo\":\"201906281030191013526\",\"orderStatus\":\"success\",\"bizType\":1,\"data\":[{\"cardNo\":\"12nCp6X/nALmrvr1erxK+D4L8n/kqz/RItKWUfvZrCU=\",\"password\":\"9HeOgdv+NpLihh4+5Gm0Mj4L8n/kqz/RItKWUfvZrCU=\",\"effectTime\":\"2019-06-30 11:15:32\",\"invalidTime\":\"2019-06-30 11:15:32\"},{\"cardNo\":\"12nCp6X/nALmrvr1erxK+BzfvN8D1qbXOYunJrydEWA=\",\"password\":\"9HeOgdv+NpLihh4+5Gm0MhzfvN8D1qbXOYunJrydEWA=\",\"effectTime\":\"2019-06-30 11:15:32\",\"invalidTime\":\"2019-06-30 11:15:32\"}],\"createTime\":\"2020-05-20 15:58:18\",\"completeTime\":\"2020-05-20 15:59:18\"},
"sign": "d440344a46479d3fa61883bcc2f1d983"
}
异常实例示例
JSON
xxxxxxxxxx
{
"code": 1010,
"message": "sign无效",
"result": null,
"sign": null
}
接口介绍:获取商户账户信息接口(该接口没有请求参数,公共请求参数中的reqParams值为“{}”)
POST请求,Content-Type必须设置为:application/json;
请求参数
参数名 | 类型 | 必填 | 长度 | 示例值 | 描述 |
---|---|---|---|---|---|
appKey | String | 是 | 32 | RvD4GzAFt3Wmp8cddgZ3ag== | 分配给商户应用的appKey |
method | String | 是 | 128 | account.query | 接口方法名称 |
timestamp | String | 是 | 32 | 2014-07-24 03:07:50 | 时间戳,格式为:yyyy-MM-dd HH:mm:ss |
version | String | 是 | 3 | 1.0 | 调用的接口版本 |
reqParams | String | 是 | 请求参数集合(注意:该参数是以json字符串的形式传输,详见reqParams参数列表) | ||
sign | String | 是 | 128 | 详见示例 | 签名串 |
reqParams参数列表
参数名称 | 类型 | 必填 | 长度 | 示例值 | 描述 |
---|---|---|---|---|---|
响应参数
参数名称 | 类型 | 必填 | 长度 | 示例值 | 描述 |
---|---|---|---|---|---|
code | String | 是 | 20 | 1000 | 返回码,详见《业务错误码》 |
message | String | 是 | 接口调用成功 | 返回码描述,详见《业务错误码》 | |
result | Object | 是 | 响应结果,详见result格式说明 | ||
sign | String | 是 | d9f7b3bb99741fedcc265162bea6c626 | 签名串,签名规则详见“签名计算规则说明” |
result格式说明
参数名称 | 类型 | 必填 | 长度 | 示例值 | 描述 |
---|---|---|---|---|---|
balance | double | 是 | 1888888.8800 | 账号余额(单位:元) | |
status | int | 是 | 1 | 账号状态 - 1:有效; 2:冻结 |
请求示例
JSON
xxxxxxxxxx
{
"appKey": "i4esv1l+76l/7NQCL3QudG90Fq+YgVfFGJAWgT+7qO1Bm9o/adG/1iwO2qXsAXNB",
"method": "account.query",
"timestamp": "2020-05-20 16:44:30",
"version": "1.0",
"reqParams": {},
"sign": "375d05b41775e1ddf2098504444af1e2"
}
响应示例
JSON
xxxxxxxxxx
{
"code": 0,
"message": "成功",
"result": {\"balance\":1888888.8800,\"status\":1},
"sign": "06f351b34d9b02bc13bc62e66bdab2c8"
}
异常实例示例
JSON
xxxxxxxxxx
{
"code": 1010,
"message": "sign无效",
"result": null,
"sign": null
}
当直充/卡密订单状态为成功或者失败时,由星权益平台发起通知请求,开发者可进入商户服务后台自助设置订单结果通知的URL地址,操作路径:进入商户后台 -> 运营管理 -> 应用信息 -> 接口配置。
如果开发者平台接收请求并验证无误,请返回{"code":"0"},如无返回或者返回的字符不是{"code":"0"},星权益平台会不断重发通知。一般情况下,15s内完成3次通知(通知间隔频率一般是:0s,5s,10s),如果3次都未成功,将终止发起通知请求。
通知接口请求头设置
Content-Type="application/json;charset=UTF-8"
Accept="application/json;charset=UTF-8"
请求参数
参数名称 | 类型 | 必填 | 长度 | 示例值 | 描述 |
---|---|---|---|---|---|
orderId | Long | 是 | 20 | 19062837751058701652 | 订单编号 |
customerOrderNo | String | 是 | 32 | 201906281030191013526 | 外部订单号,每次请求必须唯一 |
orderStatus | String | 是 | success | 订单状态 (success:成功;failed:失败) | |
createTime | String | 是 | 2019-07-27 16:44:30 | 创建时间 | |
completeTime | String | 是 | 2019-07-27 16:44:30 | 订单完成时间 | |
sign | String | 是 | 128 | 详见示例 | 签名串 |
接口介绍:游戏充值模板查询接口,供合作方针对游戏直充类型商品进行查询充值模板;
POST请求,Content-Type必须设置为:application/json;
请求参数
参数名 | 类型 | 必填 | 长度 | 示例值 | 描述 |
---|---|---|---|---|---|
appKey | String | 是 | 32 | RvD4GzAFt3Wmp8cddgZ3ag== | 分配给商户应用的appKey |
method | String | 是 | 128 | game.template | 接口方法名称 |
timestamp | String | 是 | 32 | 2014-07-24 03:07:50 | 时间戳,格式为:yyyy-MM-dd HH:mm:ss |
version | String | 是 | 3 | 1.0 | 调用的接口版本 |
reqParams | String | 是 | 请求参数集合(注意:该参数是以json字符串的形式传输,详见reqParams参数列表) | ||
sign | String | 是 | 128 | 详见示例 | 签名串 |
reqParams参数列表
参数名称 | 类型 | 必填 | 长度 | 示例值 | 描述 |
---|---|---|---|---|---|
goodsCode | Long | 是 | 20 | 1000000018 | 商品编号 |
响应参数
参数名称 | 类型 | 必填 | 长度 | 示例值 | 描述 |
---|---|---|---|---|---|
code | String | 是 | 20 | 1000 | 返回码,详见《业务错误码》 |
message | String | 是 | 接口调用成功 | 返回码描述,详见《业务错误码》 | |
result | Object | 是 | 响应结果,详见result格式说明 | ||
sign | String | 是 | d9f7b3bb99741fedcc265162bea6c626 | 签名串,签名规则详见“签名计算规则说明” |
result格式说明
参数名称 | 类型 | 必填 | 长度 | 示例值 | 描述 |
---|---|---|---|---|---|
gameTemplate | String | 是 | 详见示例 | 游戏充值模板信息 | |
goodsCode | Long | 是 | 1000000018 | 商品编码 |
请求示例
JSON
xxxxxxxxxx
{
"appKey": "i4esv1l+76l/7NQCL3QudG90Fq+YgVfFGJAWgT+7qO1Bm9o/adG/1iwO2qXsAXNB",
"method": "game.template",
"timestamp": "2020-05-20 16:44:30",
"version": "1.0",
"reqParams": {\"goodsCode\":1000000008},
"sign": "375d05b41775e1ddf2098504444af1e2"
}
响应示例
JSON
xxxxxxxxxx
{
"code": 0,
"message": "成功",
"result": {\" goodsCode \":100000008,\"gameTemplate\":{\"game_name\": \"游戏A\", //游戏名称\"game_code\": \"YXA\", //游戏编号\"recharge_type\": [{\"recahrgeTypeCode\": \"CZ1\", //充值类型编号\"rechargeTypeName \": \"充值1\" //充值类型}],\"region\": [{\"region_code\": \"YXA_DXYQ\", //游戏区编号\"region_name\": \"电信一区\", //游戏区\"server\": [{\"server_code\": \"DXYQ_YK\", //游戏服编号\"server_name\": \"月卡\" //游戏服名称}]}]},
异常实例示例
JSON
xxxxxxxxxx
{
"code": 1010,
"message": "sign无效",
"result": null,
"sign": null
}
返回码 | 描述 | 解决方案 |
---|---|---|
0 | 接口调用成功 | 接口调用成功,按正常流程处理;下单接口中,接口调用成功表示下单成功,但是下单成功不表示订单充值成功,要想获得订单的充值结果,需要调用查单接口来获得订单充值状态 |
1000 | 系统异常 | 系统异常,联系运营处理 |
1001 | 应用异常 | 应用配置异常。联系运营处理 |
1002 | appKey不能为空。 | 请检查接口参数 |
1003 | method为空或无效 | 请检查接口参数 |
1004 | timestamp为空或无效 | 请检查接口参数 |
1005 | timestamp已过期 | 请检查接口参数 |
1006 | version为空或者错误 | version参数不能为空,必须传入版本号,目前的版本号参数值为:1.0 |
1007 | reqParams不能为空 | 请检查接口参数 |
1008 | reqParams格式有误 | 请检查接口参数 |
1009 | reqParams缺少必要参数 | 请检查接口参数 |
1010 | sign无效 | 签名错误,请检查密钥和签名算法 |
1011 | 无效的商品编码 | 请联系商务或登录商户后台获取商品编码 |
1012 | 商品已下架 | 请联系商务确认商品是否已下架 |
1013 | 账户已冻结 | 请联系商务确认资金账户是否已冻结 |
1014 | 账户不可用 | 请联系商务确认资金账户是否已注销 |
1015 | 余额不足 | 请及时充值 |
1016 | 已有相同的客户工单号 | 请检查订单号是否重复 |
1017 | 支付失败 | 请联系商务确认失败原因 |
1018 | 应用无效 | 请检查应用是否已失效 |
1019 | 商品未配置 | 请联系商务配置商品 |
1020 | 订单不存在 | 请检查订单号 |
1021 | 超过商品单次可购买数量 | 请联系商务确认商品数量 |
1022 | 未查询到游戏模板信息 | 请联系商务配置商品 |
1023 | 商品类型错误 | 请检查接口参数 |