该文档主要面向需要入驻蚂蚁开放平台的产品、架构、开发等相关人员, 需要有基本的程序开发背景。通过该文档能够快速集成(中小学教育缴费)功能,接入前需要入驻开放平台并创建了应用,应用已申请该接口权限并配置RSA密钥。
要在您的应用中使用支付宝开放产品的接口能力,您需要先去蚂蚁金服开放平台(open.alipay.com),在管理中心中创建登记您的应用,并提交审核,审核通过后会为您生成应用唯一标识(APPID),并且可以申请开通开放产品使用权限,通过APPID您的应用才能调用开放产品的接口能力。需要详细了解开放平台创建应用步骤请参考《开放平台应用创建指南》。
开发者调用接口前需要先生成RSA密钥,RSA密钥包含应用私钥(APP_PRIVATE_KEY)、应用公钥(APP_PUBLIC_KEY)。生成密钥后在开放平台管理中心进行密钥配置,配置完成后可以获取支付宝公钥(ALIPAY_PUBLIC_KEY)。详情请参考《配置应用环境》。
1. 下载服务端SDK
为了帮助开发者调用开放接口,我们提供了开放平台服务端SDK,包含JAVA、PHP和.NET三个语言版本,封装了签名&验签、HTTP接口请求等基础功能。请先下载对应语言版本的SDK并引入您的开发工程。
各语言版本服务端SDK详细使用说明,请参考《服务端SDK说明》。
2. 接口调用配置
在SDK调用前需要进行初始化,以Java代码为示例如下:
AlipayClient alipayClient = new DefaultAlipayClient(URL, APP_ID, ALIPAY_PRIVATE_KEY, FORMAT, CHARSET, ALIPAY_PUBLIC_KEY, SIGN_TYPE);
关键参数说明:
配置参数 | 示例值解释 | 获取方式/示例值 |
---|---|---|
URL | 支付宝网关(固定) | https://openapi.alipay.com/gateway.do |
APPID | APPID 即创建应用后生成 | 获取见上面创建应用 |
FORMAT | 参数返回格式,只支持json | json(固定) |
APP_PRIVATE_KEY | 开发者私钥,由开发者自己生成 | 获取详见上面配置密钥 |
CHARSET | 编码集,支持GBK/UTF-8 | 开发者根据实际工程编码配置 |
ALIPAY_PUBLIC_KEY | 支付宝公钥,由支付宝生成 | 获取详见上面配置密钥 |
SIGN_TYPE | 商户生成签名字符串所使用的签名算法类型,目前支持RSA2和RSA,推荐使用RSA2 | RSA2 |
【场景】
ISV系统新增学校和账单信息,则ISV将新增的学校或账单同步至中小学缴费平台;用户可以从中小学缴费平台同步需缴费账单信息;
【调用流程】
【接口代码调用参考1】
a)接口名:eco.edu.kt.schoolinfo.modify
b)关键入参:
参数 | 类型 | 是否必填 | 描述 | 示例值 |
---|---|---|---|---|
school_name | String(256) | 是 | 学校名称 | 杭州市西湖第一实验学校 |
school_icon | String(256) | 否 | 学校的图像,一般为学校的标识,该字段为图片的链接地址,只支持png或jpg图片格式,图片高度为300p,宽度为300p ,不大于20k | http://ecopublic-dev.oss-cn-hangzhou.aliyuncs.com/eco/edu_alipay/school/school.png |
school_icon_type | String(10) | 否 | 如果学校图像数据填写,则此字段不能为空。目前只支持png和jpg两种格式 | png |
school_stdcode | String(16) | 否 | 学校的国家标准编码,可在教育局网站查询,一般为10-16位数字,可以上教育局网站查询 | 3133005132 |
school_type | String(18) | 是 | 学校的类型:托幼小初高。1、托, 2、幼, 3、小, 4、初, 5、高。如果学校兼有多种属性,可以写为:初高中为45 , 小初为34 | 4 |
province_code | String(8) | 是 | 省的国家编码,提供一份省市区编码表,点击链接下载 | 330000 |
province_name | String(32) | 是 | 省名称 | 浙江省 |
city_code | String(16) | 是 | 市的国家编码 | 330100 |
city_name | String(64) | 是 | 市名称 | 杭州市 |
district_code | String(16) | 是 | 区或县的国家编码 | 330106 |
district_name | String(64) | 是 | 区或县名称 | 西湖区 |
Isv_name | String(256) | 是 | 商家名称 | 杭州少年宫 |
isv_notify_url | String(256) | 是 | 此链接是为了保持教育缴费平台与ISV 商户支付状态一致性。用户支付成功后,会异步回调此链接,回调时,会带入支付的相关参数,ISV商户可以根据返回的参数更新账单状态。支付宝异步通知说明 |
https://isv.com/xxx |
isv_pid | String(128) | 是 | ISV支付宝pid,商家在支付宝的唯一标识 | 2088121212121212 |
isv_phone | String(20) | 是 | ISV联系电话,用于家长查看账单详情页面显示 | 13300000000 |
school_pid | String(128) | 是 | 学校支付宝pid | 2088001293912323442 |
c)关键出参
参数 | 类型 | 是否必填 | 描述 | 示例值 |
---|---|---|---|---|
status | String(16) | 是 | 如果成功,返回Y | Y |
school_no | String(16) | 是 | 学校编码 | 1101010000000 |
d)调用实例
1)请求示例
JAVA
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do","app_id","your private_key","json","UFT-8","alipay_public_key"); AlipayUserUserinfoShareRequest request = new AlipayUserUserinfoShareRequest(); AlipayUserUserinfoShareResponse response = alipayClient.execute(request);
.NET
IAopClient client = new DefaultAopClient("https://openapi.alipay.com/gateway.do", "app_id", "merchant_private_key","json","RSA","alipay_public_key","UTF-8"); AlipayUserUserinfoShareRequest request= new AlipayUserUserinfoShareRequest() ; AlipayUserUserinfoShareResponse response=client.execute(request);
PHP
$aop = new AopClient (); $aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do'; $aop->appId = 'your app_id'; $aop->rsaPrivateKeyFilePath = 'merchant_private_key_file'; $aop->alipayPublicKey='alipay_public_key_file'; $aop->apiVersion = '1.0'; $aop->postCharset='UTF-8'; $aop->format='json'; $request = new AlipayUserUserinfoShareRequest (); $result = $aop->execute ( $request);
HTTP请求源码
https://openapi.alipay.com/gateway.do?timestamp=2016-01-01 08:08:08&method= alipay.eco.edu.k12.billing.info.update&app_id=1360&sign_type=RSA&sign=ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE&version=1.0
2)响应示例
{ "alipay_openplatform_edu_schoolinfo_modify_response":{ "status":"1", "school_no":"11010100000002" } }
3)异常示例
{ "alipay_openplatform_edu_schoolinfo_modify_response":{ "code":"20000", "msg":"Service Currently Unavailable", "sub_code":"isp.unknow-error", "sub_msg":"系统繁忙" } }
4)错误码解释
错误码 | 错误描述 | 解决方案 |
---|---|---|
isv.invalid-school_name | 参数有误,请输入正确学校名称参数 | 输入正确的学校名称 |
isv.invalid-school_name_not_exist | 参数有误,请输入正确的学校pid | 检查学校pid是否签约 |
isv.invalid-school_pid_repeat | 参数有误,学校pid和isv的pid重复 | 学校pid和isv的pid已经输入过了,不能重复输入 |
isv.invalid-school-stdcode | 参数有误,请输入正确的学校编码参数 | 输入正确的学校编码 |
isv.invalid-school-type | 参数有误,请输入正确学校类型参数 | 输入正确的学校类型 |
isv.invalid-province | 参数有误,请输入正确的省编码和省名称参数 | 输入正确的省编码或省名称 |
isv.invalid-city | 参数有误,请输入正确的市编码和市名称参数 | 输入正确的市编码或市名称 |
isv.invalid-district | 参数有误,请输入正确的区编码和区名称参数 | 输入正确的区县编码或区名称 |
isv.invalid-isvpid | 参数有误,请输入正确的ISVpid参数 | 输入正确的商家pid |
isv.invalid-isvphone | 参数有误,请输入正确的ISV电话参数 | 输入正确的商家电话 |
isv.invalid-argument | 参数有误,请输入正确参数 | 输入参数是空的 |
aop.unknow-error | 系统异常, 请联系支付宝小二 | 重试或联系小二 |
isp.unknow-error | 系统繁忙, 请联系支付宝小二 | 重试或请联系小二 |
【接口代码调用参考2】
a)接口名:alipay.eco.edu.kt.billing.send
b)关键入参
参数 | 类型 | 必填 | 描述 | 示例值 |
---|---|---|---|---|
users | UserDetails[] | 特殊可选 | 孩子的家长信息,最多一次输入20个家长,此字段做为识别家长的孩子用,与student_identify、student_code至少选一个 | |
└user_mobile | String(16) | 是 | 孩子家长的手机号 | 1300000000 |
└user_name | String(16) | 否 | 家长姓名,如果填写则新增或更新 | 张四 |
└user_relation | String(1) | 否 | 孩子与家长的关系: 1、爸爸 2、妈妈 3、爷爷 4、奶奶 5、外公 6、外婆 7、家长;如果填写则新增或更新,默认为家长 | 1 |
└user_change_mobile | String(16) | 否 | 用户变更手机号,替换旧的手机号 | 1310000000 |
school_pid | String(128) | 是 | 学校支付宝pid | 20880012939123234423 |
school_no | String(14) | 是 | 学校编码,录入学校接口返回的参数 | 11010100000002 |
child_name | String(16) | 是 | 孩子名字 | 张晓晓 |
grade | String(32) | 否 | 孩子所在年级,如果有则填写 | 高一 |
class_in | String(32) | 是 | 孩子所在班级 | 3班 |
student_code | String(32) | 特殊可选 | 学生的学号,一般以教育局学号为准,作为学生的唯一标识。此字段与student_identify、家长user_mobile至少选一个 | 2098453900091 |
student_identify | String(18) | 特殊可选 | 学生的身份证号,如果ISV有学生身份证号,则同步身份证号作为学生唯一标识。此字段与student_code、家长user_mobile至少选一个 | 982343191010100909 |
status | String(1) | 否 | 用于删除孩子,状态为“D”,表示删除孩子,状态“U”表示孩子信息添加或更新。为空则不更新孩子信息 | U |
out_trade_no | String(128) | 是 | ISV端的缴费账单编号 | 20160232343253253453 |
charge_bill_title | String(512) | 是 | 缴费账单名称 | 学生开学收费项 |
charge_item | ChargeItems[] | 否 | 缴费详情:输入json格式字符串。Json定义:key填写缴费项名称,value填写缴费项金额,金额保留2位小数。至少输入一个 | |
└item_name | String(32) | 是 | 缴费项名称 | “校服费” |
└item_price | Price(11) | 是 | 缴费的金额,保留2位小数 | 500.00 |
amount | Price(16) | 是 | 总金额,保留两位小数。总金额= pay_item各子项的金额总和 | 500.00 |
gmt_end | String(19) | 是 | 学校发布缴费信息,家长可支付的截止时间,格式"yyyy-MM-dd HH:mm:ss" | 2016-01-01 13:13:13 |
end_enable | String(1) | 是 | 截止日期是否生效,与gmt_end_time发布配合使用,N为gmt_end_time不生效,用户过期后仍可以缴费;Y为gmt_end_time生效,用户过期后,不能再缴费。 | Y |
partner_id | String(128) | 是 | Isv支付宝pid | 208800129391238873 |
c)关键出参
参数 | 类型 | 是否必填 | 描述 | 示例值 |
---|---|---|---|---|
order_no | String(128) | 是 | 支付宝-中小学-教育缴费的账单号,支付宝在支付异步回调的参数out_trade_no,参考 | 57de63cb1ef157595c005467 |
d)调用实例
1) 请求示例
JAVA
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do","app_id","your private_key","json","GBK","alipay_public_key"); AlipayUserUserinfoShareRequest request = new AlipayUserUserinfoShareRequest(); AlipayUserUserinfoShareResponse response = alipayClient.execute(request);
.NET
IAopClient client = new DefaultAopClient("https://openapi.alipay.com/gateway.do", "app_id", "merchant_private_key","json","RSA","alipay_public_key","GBK"); AlipayUserUserinfoShareRequest request= new AlipayUserUserinfoShareRequest() ; AlipayUserUserinfoShareResponse response=client.execute(request);
PHP
$aop = new AopClient (); $aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do'; $aop->appId = 'your app_id'; $aop->rsaPrivateKeyFilePath = 'merchant_private_key_file'; $aop->alipayPublicKey='alipay_public_key_file'; $aop->apiVersion = '1.0'; $aop->postCharset='GBK'; $aop->format='json'; $request = new AlipayUserUserinfoShareRequest (); $result = $aop->execute ( $request);
HTTP请求源码
https://openapi.alipay.com/gateway.do?timestamp=2013-01-01 08:08:08&method= alipay.eco.edu.k12.billing.order.send&app_id=1360&sign_type=RSA&sign=ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE&version=1.0
2)响应示例
{ "alipay_openplatform_edu_billing_send_response":{ "order_no":"20160101909909354354354" } }
3)异常示例
{ "alipay_openplatform_edu_billing_send_response":{ "code":"20000", "msg":"Service Currently Unavailable", "sub_code":"isp.unknow-error", "sub_msg":"系统繁忙" } }
4)错误码解释
错误码 | 错误描述 | 解决方案 |
---|---|---|
isv.invalid-argument-school_no | 参数有误,找不到对应的学校,请输入正确的school_no,school_pid , partner_pid | 输入正确的对应的参数 |
isv.invalid-argument-users | 参数有误,家长信息输入不正确 | 输入用户信息时空的 |
isv.invalid-school-user_mobile | 参数有误,请输入正确的手机号验证参数 | 输入正确的用户手机号 |
isv.invalid-argument-user_mobile_usage | 参数有误,家长手机号已存在 | 输入的手机号已经存在了,请输入新的手机号 |
isv.invalid-argument-username | 参数有误,请输入正确的家长姓名参数 | 输入正确的家长名字 |
isv.invalid-argument-user_relation | 参数有误,请输入正确的家长与学生关系参数 | 输入正确的家长与学生关系,1-7的数字 |
isv.invalid-argument-user_change_mobile | 参数有误,请输入正确的家长更换手机号码参数 | 输入正确家长要更换的手机 |
isv.invalid-school-student_code | 参数有误,请输入正确的学号验证参数 | 输入正确的学号 |
isv.invalid-school-student_identify | 参数有误,请输入正确的学生身份证验证参数 | 输入正确的身份证号,18位 |
isv.invalid-argument-user | 参数有误,家长手机号、学生学号、学生身份证号必须输入一项 | 输入正确的家长信息 |
isv.invalid-argument-child_name | 参数有误,请输入正确的学生姓名参数 | 输入正确的学生名字,不能超过最大长度 |
isv.invalid-argument-student_identify_error | 参数有误,学生身份证号对应的学生姓名有误 ,请检查 | 身份证号码对应的学生名字错误 |
isv.invalid-argument-student_multi | 参数有误,查询出多个学生,请输入正确的学生信息 | 输入的学生查询条件有误,查询出多个学生 |
isv.invalid-argument-grade | 参数有误,请输入正确的年级参数 | 如果有年级就输入真确的年级 |
isv.invalid-argument-class | 参数有误,请输入正确的班级参数 | 输入正确的班级 |
isv.invalid-argument-order_no | 参数有误,请输入正确的缴费账单号参数 | 输入正确的账单号,ISV 系统的账单编码 |
isv.invalid-argument-order_title | 参数有误,请输入正确的缴费账单标题参数 | 输入正确的账单标题 |
isv.invalid-argument-end_time | 参数有误,请输入正确的缴费截止时间参数 | 输入正确的缴费截止时间,必须符合时间格式的字符串 |
isv.invalid-argument-end_enable | 参数有误,请输入正确的缴费截止时间有效性参数 | 输入正确的参数 |
isv.invalid-argument-school_pid | 参数有误,学校PID或isv的PID不存在,请先录入学校 | 输入录入学校时的学校pid和isvpid |
isv.invalid-argument-pay_item | 参数有误,请输入正确的缴费详情 | 输入正确的缴费详情 |
isv.invalid-argument-amount | 参数有误,请输入正确的缴费账单总金额 | 输入正确的缴费金额 |
isv.invalid-argument-partner_no | 参数有误,参数partner_no不正确 | 输入正确的isv的pid |
isv.invalid-argument-amount_not_equal | 参数有误,参数amount和缴费详情item_price总和不等 | 缴费详情的金额加起来不等于总金额 |
isv.invalid-argument-no_auth_code | 参数有误,学校未授权 | 学校的pid要扫支付宝的授权二维码授权 |
isv.invalid-argument | 参数有误,请输入正确参数 | 输入参数是空的 |
aop.unknow-error | 系统异常, 请联系支付宝小二 | 重试或联系小二 |
isp.unknow-error | 系统繁忙, 请联系支付宝小二 | 重试或请联系小二 |
【场景】
ISV系统中账单状态发生变更(通过其他渠道消账或ISV系统主动发生变更),则ISV系统将该信息同步至中小学缴费平台;
【调用流程】
【接口代码调用参考】
a)接口名:eco.edu.kt.billing.modify
b)关键入参
参数 | 类型 | 必填 | 描述 | 示例值 |
---|---|---|---|---|
trade_no | String(64) | 否 | 支付宝返回的交易号 | 2014112611001004680073956707 |
out_trade_no | String(64) | 否 | ISV调用发送账单接口,返回给商户的order_no | 57de63cb1ef157595c005467 |
status | String(1) | 是 | 状态:1:缴费成功;2:关闭账单;3、退费 如果为退款状态,需要填写以下字段,字段都是支付宝退款返回的必填参数; |
1 |
fund_change | String(9) | 是 | 本次退款是否发生了资金变化 | Y |
refund_amount | Price | 是 | 需要退款的金额,该金额不能大于订单金额,单位为元,支持两位小数 | 200.12 |
refund_reason | String(256) | 否 | 退款原因,商家根据客户实际退款原因填写 | 正常退款 |
out_request_no | String(64) | 否 | 标识一次退款请求,同一笔交易多次退款需要保证唯一,如需部分退款,则此参数必传。 | HZ01RF001 |
buyer_logon_id | String(100) | 否 | 退款时,支付宝返回的用户的登录id | 159****5620 |
gmt_refund | String(64) | 否 | 支付宝返回的退款时间内,而不是商户退款申请的时间 | 2015-11-27 15:45:57 |
buyer_user_id | String(28) | 否 | 支付宝返回的买家支付宝用户id | 2088101117955611 |
refund_detail_item_list | String(2000) | 否 | 支付宝返回的退款资金渠道,json格式字符串 | { "fund_channel":"ALIPAYACCOUNT", "amount":12.00, "real_amount":12.00
} |
c)关键出参
参数 | 类型 | 是否必填 | 描述 | 示例值 |
---|---|---|---|---|
status | String(16) | 是 | 如果成功,返回Y | Y |
d)调用实例
1)请求示例
JAVA
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do","app_id","your private_key","json","GBK","alipay_public_key"); AlipayUserUserinfoShareRequest request = new AlipayUserUserinfoShareRequest(); AlipayUserUserinfoShareResponse response = alipayClient.execute(request);
.NET
IAopClient client = new DefaultAopClient("https://openapi.alipay.com/gateway.do", "app_id", "merchant_private_key","json","RSA","alipay_public_key","GBK"); AlipayUserUserinfoShareRequest request= new AlipayUserUserinfoShareRequest() ; AlipayUserUserinfoShareResponse response=client.execute(request);
PHP
$aop = new AopClient (); $aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do'; $aop->appId = 'your app_id'; $aop->rsaPrivateKeyFilePath = 'merchant_private_key_file'; $aop->alipayPublicKey='alipay_public_key_file'; $aop->apiVersion = '1.0'; $aop->postCharset='GBK'; $aop->format='json'; $request = new AlipayUserUserinfoShareRequest (); $result = $aop->execute ( $request);
HTTP源码
https://openapi.alipay.com/gateway.do?timestamp=2013-01-01 08:08:08&method= alipay.eco.edu.k12.billing.order.status.sysc&app_id=1360&sign_type=RSA&sign=ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE&version=1.0
2)响应示例
{ " alipay_openplatform_billing_modify_response":{ " status ":"Y" } }
3)异常示例
{ "alipay_openplatform_billing_modify_response":{ "code":"20000", "msg":"Service Currently Unavailable", "sub_code":"isp.unknow-error", "sub_msg":"系统繁忙" } }
4)错误码解释
错误码 | 错误描述 | 解决方案 |
---|---|---|
isv.invalid-argument-trade_no | 参数有误,参数trade_no不正确 | 输入正确的trade_no,查不到支付的账单 |
isv.invalid-argument-out_trade_or | 参数有误,参数trade_no或out_trade_no必须填一项 | 输入正确的账单参数,从支付宝异步回调参数里面拿 |
isv.invalid-argument-status | 参数有误,参数status不正确或为空 | 输入正确的状态参数 |
isv.invalid-argument-refund_reason | 参数有误,参数refund_reason不正确 | 输入退款时输入的退款原因 |
isv.invalid-argument-refund_change | 参数有误,参数fund_change不正确 | 输入正确的退款资金变动 |
isv.invalid-argument-out_request_no | 参数有误,参数out_request_no不正确 | 输入正确的退款时输入的参数 |
isv.invalid-argument-buyer_logon_id | 参数有误,参数buyer_logon_id不正确 | 输入正确的buyer_logon_id |
isv.invalid-argument-buyer_user_id | 参数有误,参数buyer_user_id不正确 | 输入正确的buyer_user_id |
isv.invalid-argument-gmt_refund | 参数有误,参数gmt_refund不正确 | 输入正确的退款时返回的退款时间 |
isv.invalid-argument-error_pay | 参数有误,账单未支付成功或其它错误 | 输入缴费成功后的账单 |
isv.invalid-argument-error_bill | 参数有误,账单状态不是缴费成功,不能退款 | 输入缴费成功后的账单 |
isv.invalid-argument-error_pay_status | 参数有误,账单已经支付,不能关闭 | 输入缴费成功后的账单 |
isv.invalid-argument-amount_error | 参数有误,参数amount不正确 | 输入正确的退款金额 |
isv.invalid-argument-refund_error | 参数有误,参数trade_no或out_trade_no或参数out_request_no不正确 | 找不到退款记录,请输入正确的退款信息 |
isv.invalid-argument | 参数有误,请输入正确参数 | 输入参数是空的 |
aop.unknow-error | 系统异常, 请联系支付宝小二 | 重试或联系小二 |
isp.unknow-error | 系统繁忙, 请联系支付宝小二 | 重试或请联系小二 |
【场景】
ISV需要对缴费账单的状态进行查询,确认账单的最终状态(返回接口超时),则调用缴费账单查询接口查询账单的状态
【调用流程】
【接口代码调用参考】
a)接口名:eco.edu.kt.billing.query
b)关键入参
参数 | 类型 | 必填 | 描述 | 示例值 |
---|---|---|---|---|
isv_pid | String(64) | 是 | ISV调用发送账单接口,返回给商户的order_no | 57de63cb1ef157595c005467 |
school_pid | String(64) | 是 | 学校支付宝pid | 2088101117955611 |
out_trade_no | String(64) | 是 | ISV调用发送账单接口,返回给商户的order_no | 58de07de7bb90a437553e464 |
c)关键出参
参数 | 类型 | 是否必填 | 描述 | 示例值 |
---|---|---|---|---|
order_status | String(64) | 是 | NOT_PAY 待缴费 PAYING 支付中 PAY_SUCCESS 支付成功,处理中 BILLING_SUCCESS 缴费成功 TIMEOUT_CLOSED 逾期关闭账单 ISV_CLOSED 账单关闭 |
NOT_PAY |
d)调用示例
1)请求示例
JAVA
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do","app_id","your private_key","json","GBK","alipay_public_key"); AlipayEcoEduKtBillingQueryRequest request = new AlipayEcoEduKtBillingQueryRequest (); AlipayEcoEduKtBillingQueryResponse response = alipayClient.execute(request);
.NET
IAopClient client = new DefaultAopClient("https://openapi.alipay.com/gateway.do", "app_id", "merchant_private_key","json","RSA","alipay_public_key","GBK"); AlipayEcoEduKtBillingQueryRequest request = new AlipayEcoEduKtBillingQueryRequest (); AlipayEcoEduKtBillingQueryResponse response = client.execute(request);
PHP
$aop = new AopClient (); $aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do'; $aop->appId = 'your app_id'; $aop->rsaPrivateKeyFilePath = 'merchant_private_key_file'; $aop->alipayPublicKey='alipay_public_key_file'; $aop->apiVersion = '1.0'; $aop->postCharset='GBK'; $aop->format='json'; $request = new AlipayEcoEduKtBillingQueryRequest (); $result = $aop->execute ( $request);
HTTP请求源码
https://openapi.alipay.com/gateway.do?timestamp=2013-01-01 08:08:08&method= alipay.eco.edu.k12.billing.order.query&app_id=1360&sign_type=RSA&sign=ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE&version=1.0
2)响应示例
{ "alipay_eco_edu_kt_billing_query_response":{ "order_status":"NOT_PAY" } }
3)异常示例
{ "alipay_ eco_edu_kt_billing_query_response":{ "code":"20000", "msg":"Service Currently Unavailable", "sub_code":"isp.unknow-error", "sub_msg":"系统繁忙" } }
4)错误码解释
错误码 | 错误描述 | 解决方案 |
---|---|---|
isv.invalid-argument-isv_pid | 参数有误,找不到对应的isv,请输入正确的isv_pid | 输入正确的对应的参数 |
isv.invalid-argument-school_pid | 参数有误,学校pid错误 | 输入正确的学校pid |
isv.invalid-argument- out_trade_no | 参数有误,请输入正确的账单编号 | 输入正确的账单编号 |
isv.invalid-isv-isv_not_exists | 参数有误,isv_pid不存在 | 输入正确的isv_pid |
isv.invalid-isv-isv_school_relation | 参数有误,请检查isv_pid、school_pid | 输入正确的isv_pid和学校pid |
Isv.invalid-order-order_not_exists | 参数有误,缴费账单查询不存在 | 输入正确的账单编号 |
【场景】
当学生信息发生变更时,比如姓名和学号发生了变化,ISV需要对学生信息进行更新,调用学生信息更新接口对学生信息进行更新
【调用流程】
【接口代码调用参考】
a)接口名:eco.edu.kt.student.modify
b)关键入参
参数 | 类型 | 必填 | 描述 | 示例值 |
---|---|---|---|---|
isv_pid | String(64) | 是 | Isvpid | 2014112611001004680073956707 |
school_pid | String(64) | 是 | 学校pid | 2014112611001004680073956707 |
school_no | String(64) | 是 | 学校编号,同步学校返回的编号 | 11010100000001 |
student_no | String(64) | 是 | 学生编号,发送账单接口返回的学生编号 | 57de63cb1ef157595c005467 |
child_name | String(16) | 特殊必填 | 修改后的姓名 | 张三 |
student_code | String(32) | 特殊必填 | 修改后的学号 | 6589154 |
student_identify | String(32) | 特殊必填 | 修改后的身份证号码 | 610824197812044680 |
users | UserDetails[] | 特殊可选 | 孩子的家长信息,最多一次输入20个家长 如果输入的家长信息不存在,则给改学生增加家长 |
|
└user_mobile | String(16) | 是 | 原家长的手机号 | 1300000000 |
└user_change_mobile | String(16) | 是 | 用户变更手机号,替换旧的手机号 | 1310000000 |
c)关键出参
参数 | 类型 | 是否必填 | 描述 | 示例值 |
---|---|---|---|---|
status | String(16) | 是 | 如果成功,返回Y | Y |
d)调用示例
1)请求示例
JAVA
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do","app_id","your private_key","json","GBK","alipay_public_key"); AlipayEcoEduKtStudentModifyRequest request = new AlipayEcoEduKtBillingQueryRequest (); AlipayEcoEduKtStudentModifyResponse response = alipayClient.execute(request);
.NET
IAopClient client = new DefaultAopClient("https://openapi.alipay.com/gateway.do", "app_id", "merchant_private_key","json","RSA","alipay_public_key","GBK"); AlipayEcoEduKtStudentModifyRequest request= new AlipayEcoEduKtStudentModifyRequest () ; AlipayEcoEduKtStudentModifyResponse response=client.execute(request);
PHP
$aop = new AopClient (); $aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do'; $aop->appId = 'your app_id'; $aop->rsaPrivateKeyFilePath = 'merchant_private_key_file'; $aop->alipayPublicKey='alipay_public_key_file'; $aop->apiVersion = '1.0'; $aop->postCharset='GBK'; $aop->format='json'; $request = new AlipayEcoEduKtStudentModifyRequest (); $result = $aop->execute ( $request);
HTTP请求源码
https://openapi.alipay.com/gateway.do?timestamp=2013-01-01 08:08:08&method= alipay.eco.edu.k12.student.modify&app_id=1360&sign_type=RSA&sign=ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE&version=1.0
2)响应示例
{ " alipay_eco_edu_kt_student_modify_response":{ " status ":"Y" } }
3)异常示例
{ "alipay_eco_edu_kt_student_modify_response":{ "code":"20000", "msg":"Service Currently Unavailable", "sub_code":"isp.unknow-error", "sub_msg":"系统繁忙" } }
4)错误码解释
错误码 | 错误描述 | 解决方案 |
---|---|---|
isv.invalid-argument-isv_pid | 参数有误,找不到对应的isv,请输入正确的isv_pid | 输入正确的对应的参数 |
isv.invalid-argument-school_pid | 参数有误,学校pid错误 | 输入正确的学校pid |
isv.invalid-argument-school_no | 参数有误,学校编号错误 | 输入正确的学校编号 |
Isv.invalid-argument-child_name | 参数有误,child_name参数不合法 | 输入正确的学生姓名 |
isv.invalid-argument-student_code | 参数有误,student_code参数不合法 | 输入正确的学号 |
isv.invalid-argument-student_identify | 参数有误,student_identify参数不合法 | 输入正确的身份证号 |
Isv.invalid-isv-not_exists | 参数有误,isv_pid不存在 | 输入正确的isv_pid信息 |
isv.invalid-isv-isv_school_relation | 参数有误,请检查isv_pid、school_pid | 传入正确的isv_pid和学校pid |
isv.invalid-school-school_no | 参数有误,请检查school_pid 、school_no | 输入正确的school_pid 和schoo_no |
isv.invalid-student-not_exists | 参数有误,请检查修改school_no、student_no | 输入正确的学校和学号信息 |
【场景】
当学生信息更新接口出现超时或者异常等情况时,ISV需要查询学生信息,调用学生信息查询接口获取学生的最新信息
【调用流程】
【接口代码调用参考】
a)接口名:eco.edu.kt.student.query
b)关键入参
参数 | 类型 | 必填 | 描述 | 示例值 |
---|---|---|---|---|
isv_pid | String(64) | 是 | Isvpid | 2014112611001004680073956707 |
school_pid | String(64) | 是 | 学校pid | 2014112611001004680073956707 |
school_no | String(64) | 是 | 学校编号,同步学校返回的编号 | 11010100000001 |
student_no | String(64) | 是 | 学生编号,发送账单接口返回的学生编号 | 57de63cb1ef157595c005467 |
c)关键出参
参数 | 类型 | 是否必填 | 描述 | 示例值 |
---|---|---|---|---|
school_name | String(300) | 是 | 学校名称 | 测试学校 |
class_name | String(128) | 是 | 班级名字 | 三年级6班 |
child_name | String(16) | 是 | 学生姓名 | 张三 |
student_code | String(32) | 否 | 学号 | 12912 |
student_identify | String(32) | 否 | 学生身份证号 | 610121192201029191 |
users | Array | 否 | 家长信息,ISV同步的家长所有家长信息 | |
└user_mobile | String(20) | 否 | 家长手机号 | 18291992024 |
└user_name | String(16) | 否 | 家长名字 | 张三 |
└user_relation | Integer(16) | 否 | 孩子与家长的关系: 1、爸爸 2、妈妈 3、爷爷 4、奶奶 5、外公 6、外婆 7、家长 | 1 |
d)调用示例
1)请求示例
JAVA
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do","app_id","your private_key","json","GBK","alipay_public_key"); AlipayEcoEduKtStudentQueryRequest request = new AlipayEcoEduKtStudentQueryRequest (); AlipayEcoEduKtStudentQueryResponse response = alipayClient.execute(request);
.NET
IAopClient client = new DefaultAopClient("https://openapi.alipay.com/gateway.do", "app_id", "merchant_private_key","json","RSA","alipay_public_key","GBK"); AlipayEcoEduKtStudentQueryRequest request= new AlipayEcoEduKtStudentQueryRequest () ; AlipayEcoEduKtStudentQueryResponse response=client.execute(request);
PHP
$aop = new AopClient (); $aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do'; $aop->appId = 'your app_id'; $aop->rsaPrivateKeyFilePath = 'merchant_private_key_file'; $aop->alipayPublicKey='alipay_public_key_file'; $aop->apiVersion = '1.0'; $aop->postCharset='GBK'; $aop->format='json'; $request = new AlipayEcoEduKtStudentQueryRequest (); $result = $aop->execute ( $request);
HTTP请求源码
https://openapi.alipay.com/gateway.do?timestamp=2013-01-01 08:08:08&method= alipay.eco.edu.k12.student.modify&app_id=1360&sign_type=RSA&sign=ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE&version=1.0
2)响应示例
"alipay_eco_edu_kt_student_modify_response": { "school_name": "杭州市西湖区实验小学", "class_name": "三年级6班", "child_name": "张三", "student_code": "1718491040", "student_identify": "610824197812044680", "users": [ { "user_mobile": "家长手机号", "user_name": "家长姓名", "user_relation": 1 } ]}
3)异常示例
{ "alipay_eco_edu_kt_student_modify_response":{ "code":"20000", "msg":"Service Currently Unavailable", "sub_code":"isp.unknow-error", "sub_msg":"系统繁忙" } }
4)错误码解释
错误码 | 错误描述 | 解决方案 |
---|---|---|
isv.invalid-argument-isv_pid | 参数有误,找不到对应的isv,请输入正确的isv_pid | 输入正确的对应的参数 |
isv.invalid-argument-school_pid | 参数有误,学校pid错误 | 输入正确的学校pid |
isv.invalid-argument-school_no | 参数有误,学校编号错误 | 输入正确的学校编号 |
Isv.invalid-argument-child_name | 参数有误,child_name参数不合法 | 输入正确的学生姓名 |
isv.invalid-argument-student_code | 参数有误,student_code参数不合法 | 输入正确的学号 |
isv.invalid-argument-student_identify | 参数有误,student_identify参数不合法 | 输入正确的身份证号 |
Isv.invalid-isv-not_exists | 参数有误,isv_pid不存在 | 输入正确的isv_pid信息 |
isv.invalid-isv-isv_school_relation | 参数有误,请检查isv_pid、school_pid | 传入正确的isv_pid和学校pid |
isv.invalid-school-school_no | 参数有误,请检查school_pid 、school_no | 输入正确的school_pid 和schoo_no |
isv.invalid-student-not_exists | 参数有误,请检查修改school_no、student_no | 输入正确的学校和学号信息 |