title: 一卡通v5第三方充值接口文档 date: 2016-06-21 13:54:11 tags:
本文档用于描述了一卡通对第三方应用提供的通用支付api接口文档,供第三方系统(前置和应用)对接参考。
SIGN_ALGORITHMS ="SHA1WithRSA";SIGN_ALGORITHMS ="HMAC-SHA1";请求URL:
https://ip:port/epayapi/services/thirdparty/common/accountquery请求方式/格式:
请求参数:
| 参数名 | 类型 | 必选 | 说明 |
|---|---|---|---|
| partner_id | String | 是 | 本系统分配给各个接入应用的合作伙伴id号 |
| stuempno | String | 是 | 查询对象的学号 |
| timestamp | String | 是 | 时间戳格式为yyyyMMddhh24miss |
| sign | String | 是 | 签名 |
| sign_method | String | 是 | 参数的加密方法选择,可选值是:HMAC 加密方式为HAMC-SHA1 |
请求内容示例:
URI:https://ip:port/epayapi/services/thirdparty/common/accountquery
partner_id:10000
stuempno:09893092
timestamp:20150119130901
sign:5195f9b9116e4adf67eeebc9935d33dc683f677d
sign_method:HMAC
返回示例:
{ "retcode":"0", "retmsg":"查询成功", "stuempno":"09893092", "username":"王二小", "balance":4850, "cardno":103920299, "status":"正常", "timestamp":"20160606150902", "sign":"hjAtBGygGjFyOKEZmWdxi1tk51/xqLYTr5tm2+zQVfD1RHRzGVC9GNm4ZaXnUsHnu5o3kAZ4U32m0YNiSFpncs0pl1AnnCf1n2hhn39ruABsvD//GzkEINHjyHsnxBr44G2UhyNxplUj+s7s0a7ggjbiMk+BYC3u7VkU9/l+kZOTkEyqs+wZKumfByMZGvKVkY2c2Nr67RaSWd7bsfOJ6HYw2spvu3ptAo2RTrfCxZ0Kn5DcSDm4cagzPMZSHxB8isqqNGrdUaAU0wzzC7704iA5zze//SvCqpCJfYt0OrHOiJEN5kw1d4KESrKGMG6bezlXzAp0LbNlhl+HwZJcag==", "sign_method": "RSA" }
{ "retcode":"1", "retmsg":"账户不存在", "timestamp":"20160606150902", "sign": "hjAtBGygGjFyOKEZmWdxi1tk51/xqLYTr5tm2+zQVfD1RHRzGVC9GNm4ZaXnUsHnu5o3kAZ4U32m0YNiSFpncs0pl1AnnCf1n2hhn39ruABsvD//GzkEINHjyHsnxBr44G2UhyNxplUj+s7s0a7ggjbiMk+BYC3u7VkU9/l+kZOTkEyqs+wZKumfByMZGvKVkY2c2Nr67RaSWd7bsfOJ6HYw2spvu3ptAo2RTrfCxZ0Kn5DcSDm4cagzPMZSHxB8isqqNGrdUaAU0wzzC7704iA5zze//SvCqpCJfYt0OrHOiJEN5kw1d4KESrKGMG6bezlXzAp0LbNlhl+HwZJcag==", "sign_method":"RSA" }
返回参数说明:
| 参数名 | 类型 | 说明 |
|---|---|---|
| retcode | String | 返回码(0=成功,其他为失败) |
| retmsg | String | 返回消息 |
| stuempno | String | 学号 |
| username | String | 姓名 |
| balance | Integer | 余额(分) |
| cardno | Integer | 卡号 |
| status | String | 状态(正常) |
请求URL:
https://ip:port/epayapi/services/thirdparty/common/recharge请求方式/格式:
请求参数:
| 参数名 | 类型 | 必选 | 说明 |
|---|---|---|---|
| partner_id | String | 是 | 本系统分配给各个接入应用的合作伙伴id号 |
| student_id | String | 是 | 用户唯一号 |
| student_idtype | String | 是 | 指定用户唯一号类型(stuempno,custid,cardno,idno等) |
| extdata | String | 否 | 备用,扩展字段 |
| amount | String | 是 | 整数,单位分 |
| transdate | String | 是 | 交易日期,yyyyMMdd |
| transtime | String | 是 | 交易时间,HHmmss |
| fundtype | String | 是 | 资金类型,指定入账科目(1-现金;2-支票;3-经费本) |
| billno | String | 否 | 票据号,现金类型时可空,其他必传 |
| tradeno | String | 是 | 外部流水号。唯一,不能重复 |
| operid | String | 是 | 指定充值操作员 |
| termid | String | 否 | 区分发起终端 |
| sourcetype | String | 否 | 发起来源 |
| timestamp | String | 是 | 时间戳 yyyyMMddHHmmss |
| sign_method | String | 是 | HMAC |
| sign | String | 是 | 签名 |
请求内容示例:
URI:https://ip:port/epayapi/services/thirdparty/common/recharge
partner_id:10000
student_id:09893092
student_idtype:stuempno
tradeno:20160607000001
transdate:20180808
transtime:100404
amount:2000
operid:90
fundtype:1
timestamp:20150119130901
sign:5195f9b9116e4adf67eeebc9935d33dc683f677d
sign_method:HMAC
返回示例:
{ "retcode":"0", "retmsg":"充值成功" "tradeno":"20160607000001", "balance":4850, "refno":"20160605190200000001", "timestamp":"20160606150902", "sign":"hjAtBGygGjFyOKEZmWdxi1tk51/xqLYTr5tm2+zQVfD1RHRzGVC9GNm4ZaXnUsHnu5o3kAZ4U32m0YNiSFpncs0pl1AnnCf1n2hhn39ruABsvD//GzkEINHjyHsnxBr44G2UhyNxplUj+s7s0a7ggjbiMk+BYC3u7VkU9/l+kZOTkEyqs+wZKumfByMZGvKVkY2c2Nr67RaSWd7bsfOJ6HYw2spvu3ptAo2RTrfCxZ0Kn5DcSDm4cagzPMZSHxB8isqqNGrdUaAU0wzzC7704iA5zze//SvCqpCJfYt0OrHOiJEN5kw1d4KESrKGMG6bezlXzAp0LbNlhl+HwZJcag==", "sign_method": "RSA" }
{ "retcode":"1", "retmsg":"账户状态错误", "tradeno":"20160607000001", "timestamp":"20160606150902", "sign": "hjAtBGygGjFyOKEZmWdxi1tk51/xqLYTr5tm2+zQVfD1RHRzGVC9GNm4ZaXnUsHnu5o3kAZ4U32m0YNiSFpncs0pl1AnnCf1n2hhn39ruABsvD//GzkEINHjyHsnxBr44G2UhyNxplUj+s7s0a7ggjbiMk+BYC3u7VkU9/l+kZOTkEyqs+wZKumfByMZGvKVkY2c2Nr67RaSWd7bsfOJ6HYw2spvu3ptAo2RTrfCxZ0Kn5DcSDm4cagzPMZSHxB8isqqNGrdUaAU0wzzC7704iA5zze//SvCqpCJfYt0OrHOiJEN5kw1d4KESrKGMG6bezlXzAp0LbNlhl+HwZJcag==", "sign_method":"RSA" }
返回参数说明:
| 参数名 | 类型 | 说明 |
|---|---|---|
| retcode | String | 返回码(0=成功,其他为失败) |
| retmsg | String | 返回消息 |
| tradeno | String | 第三方流水号 |
| refno | String | 本系统生成流水号 |
| balance | Integer | 账户余额(分) |
签名方式:hmac-sha1
签名密钥由本系统统一线下提供
签名校验的通用步骤如下:
**第一步,**设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。
特别注意以下重要规则:
参数名ASCII码从小到大排序(字典序);
如果参数的值为空不参与签名;
参数名区分大小写;
传送的sign参数不参与签名,用该sign值作校验。
**第二步,**用密钥secretkey对stringA字符串,进行hmac-sha1签名,得到sign值signValue。signValue最后采用十六进制小写hex编码生成签名字符串。
签名方式:SHA1withRSA
签名校验的公钥key为本系统统一线下提供。
签名校验的通用步骤如下:
**第一步,**设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。
特别注意以下重要规则:
参数名ASCII码从小到大排序(字典序);
如果参数的值为空不参与签名;
参数名区分大小写;
传送的sign参数不参与签名,用该sign值作校验。
**第二步,**对sign值进行base64解码,用本系统提供的公钥key对sign签名值解码后的数据基于stringA字符串,进行SHA1withRSA签名验证
举例:
假设传送的参数如下:
retcode:1 retmsg:账户余额不足 timestamp:20160513155100 sign_mehtod:RSA
对参数按照key=value的格式,并按照参数名ASCII字典序排序如下:
retcode=1&retmsg=账户余额不足×tamp=20160513155100&sign_mehtod="RSA"