syiosApi.md 6.4 KB

SYIOS 渠道 API 文档

渠道信息

  • 渠道ID: 12
  • 平台: sy_ios
  • 处理器: SYIOSChannelHandler

1. 登录鉴权接口

接口地址

  • GET/POST /thirdLogin (通过渠道ID=12调用)

请求参数

参数 类型 必填 说明
userToken string 鉴权凭证,从 URL 上获取
gameid number 游戏的ID,商户后台游戏添加完成后可获取

请求示例

# POST 请求
POST /thirdLogin
Content-Type: application/json

{
  "channelId": 12,
  "userToken": "your_token_here",
  "gameid": 1540
}

响应参数

{
  "code": 1,           // 1成功,-1失败
  "msg": "登录成功",    // 提示信息
  "data": {
    "uid": "",         // 用户UID
    "nickname": "",    // 用户昵称
    "headimgurl": "",  // 用户头像地址
    "sex": "",         // 用户性别 0未知 1男 2女
    "focus": "",       // 是否关注公众号 0否 1是
    "usertype": ""     // 用户类型 1为微信用户 -1为非微信用户
  }
}

错误响应

{
  "code": -1,
  "msg": "参数有误,请检查接口所需参数是否都已经填写正确",
  "data": null
}

2. 支付回调接口

接口地址

  • GET /callback (通过渠道ID=12调用)

请求参数

参数 类型 必填 说明
openid string 用户UID
rmb number 付费金额,单位人民币
reqid string 不重复的请求ID
trans_id number 平台支付订单号
product_id number 商品ID
notify_id string 平台通知ID
userdata string 支付的透传参数,商户自定义参数,最多128个字节
txid string 支付的透传参数,商户订单号,最多64个字节
product_count number 购买的商品数量,默认为1
sign string 签名,签名算法3

请求示例

GET /callback?openid=12345678&rmb=1&reqid=20152392834940&trans_id=123456&product_id=6000&notify_id=f2c90bc120cdef27c8cc4d1bdf8341a74625588c6edcd9c&userdata=test_data&txid=merchant_order_123&product_count=1&sign=7761AF5E944ABC6060B3192861FA0281

响应

  • 成功: 返回字符串 "SUCCESS" (不包含引号,全大写)
  • 失败: 返回错误信息

支付处理流程

  1. 接收支付回调: 接收第三方支付平台的回调通知
  2. 验证支付签名: 使用签名算法3验证支付回调的签名
  3. 提取notify_id: 从支付回调中提取 notify_id 参数
  4. 订单校验: 调用第三方订单校验API验证订单是否真实有效
  5. 发货处理: 只有订单校验成功后才进行实际的发货处理
  6. 返回响应: 返回 "SUCCESS" 给第三方支付平台

订单校验集成

支付回调处理中会自动进行订单校验,确保:

  • 防止恶意第三方通知
  • 验证订单的真实性
  • 只有校验成功的订单才会发货
  • 提高支付安全性

3. 订单校验接口

接口地址

  • GET/POST /miniapp/verifyOrder

请求参数

参数 类型 必填 说明
gameid number 游戏ID,商户后台游戏添加完成后可获取
notify_id string 平台通知ID,商户通过notify_id查询订单是否付费成功
sign string 签名,签名算法3

请求示例

# GET 请求
GET /miniapp/verifyOrder?gameid=1540&notify_id=f2c90bc120cdef27c8cc4d1bdf8341a74625588c6edcd9c&sign=A3EA3EF39B43BA762DFBFB78229DB33B

# POST 请求
POST /miniapp/verifyOrder
Content-Type: application/json

{
  "gameid": 1540,
  "notify_id": "f2c90bc120cdef27c8cc4d1bdf8341a74625588c6edcd9c",
  "sign": "A3EA3EF39B43BA762DFBFB78229DB33B"
}

响应参数

{
  "success": true,        // 校验是否成功
  "message": "订单校验成功" // 提示信息
}

错误响应

{
  "success": false,
  "message": "缺少必要参数: gameid"
}

第三方API

  • 请求方式: GET
  • URL: https://login.11h5.com/pay/paygate/verify.php
  • 成功响应: "SUCCESS" (不包含引号,全大写)
  • 失败响应: 其他任何信息

4. 签名算法3

算法步骤

  1. 除去为空的参数: 过滤掉值为空、null、undefined的参数,以及sign参数
  2. 参数排序: 对参数名按字母顺序排序 (a-z)
  3. 构建字符串: 用 & 连接所有参数,格式为 key=value
  4. 拼接私钥: 在字符串末尾添加 &key=私钥
  5. MD5签名: 对最终字符串进行MD5哈希,并转换为大写

示例

原始参数:

openid=12345678
rmb=1
reqid=20152392834940
trans_id=123456
product_id=6000
notify_id=f2c90bc120cdef27c8cc4d1bdf8341a74625588c6edcd9c
nick=                    // 空参数,会被过滤
userdata=test_data
txid=merchant_order_123
product_count=1

排序后的待签名字符串:

notify_id=f2c90bc120cdef27c8cc4d1bdf8341a74625588c6edcd9c&openid=12345678&product_count=1&product_id=6000&reqid=20152392834940&rmb=1&trans_id=123456&txid=merchant_order_123&userdata=test_data

最终签名字符串:

notify_id=f2c90bc120cdef27c8cc4d1bdf8341a74625588c6edcd9c&openid=12345678&product_count=1&product_id=6000&reqid=20152392834940&rmb=1&trans_id=123456&txid=merchant_order_123&userdata=test_data&key=yduLY3ovg4NwTHMMemGg1vO6VHuYBcYD

生成的签名:

7761AF5E944ABC6060B3192861FA0281

订单校验签名示例

原始参数:

gameid=1540
notify_id=f2c90bc120cdef27c8cc4d1bdf8341a74625588c6edcd9c

排序后的待签名字符串:

gameid=1540&notify_id=f2c90bc120cdef27c8cc4d1bdf8341a74625588c6edcd9c

最终签名字符串:

gameid=1540&notify_id=f2c90bc120cdef27c8cc4d1bdf8341a74625588c6edcd9c&key=yduLY3ovg4NwTHMMemGg1vO6VHuYBcYD

生成的签名:

A3EA3EF39B43BA762DFBFB78229DB33B

4. 错误码说明

错误码 说明
0 参数有误,请检查接口所需参数是否都已经填写正确
403 token验证失败,同一个userToken只能验证一次,可通过刷新游戏重新获取
-1 系统错误,鉴权失败,请稍后重试

5. 重要说明

⚠️ 同一个token只能验证一次,不能多次重复请求

6. 第三方API

  • 登录鉴权: https://api.11h5.com/login?cmd=checkUserToken
  • 私钥: yduLY3ovg4NwTHMMemGg1vO6VHuYBcYD
  • 游戏ID: 1540