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"