学校教育缴费场景,缴费的类目很多,通过教育缴费可实现各类缴费业务线上缴费。
2.签约小程序支付
3.已下载并安装 小程序开发者工具(简称 IDE)。
要在您的小程序内使用小程序支付功能,您需要首先完成 开发者入驻 并 创建小程序。
第二步:添加功能
小程序创建完成后,开发者在 功能列表 部分可以点击 添加功能 来给创建的小程序添加功能,如下图所示;开发者勾选 小程序支付 功能后,点击右下角 确定 即完成添加功能。
注意:
第三方应用代商户实现小程序支付需要:
1、在三方应用上添加当面付功能。
2、代商户签约当面付,参考文档 alipay.open.agent.facetoface.sign 。
第三步:签约功能
小程序支付需要签约才能生效,在小程序上线后,请点击功能列表右侧对应功能的 签约 链接;签约成功后,需要 1 个工作日左右的审批时间(审批结果会以短信和邮件形式告知),审批成功后,功能状态会变为“已生效”,即可调用小程序支付功能。
第四步:集成并配置 SDK
服务端 SDK 需要商户集成在自己的服务端系统中,用于后续的服务端接口调用。
下载服务端 SDK
为了帮助开发者调用开放接口,我们提供了 开放平台服务端 SDK ,包含 JAVA、PHP、NodeJS、Python 和 .NET 五种语言,封装了签名 & 验签、HTTP 接口请求等基础功能。请先下载对应语言版本的 SDK 并引入您的开发工程。
在 SDK 调用前需要进行初始化,以 JAVA 代码为例:
AlipayClient alipayClient = new DefaultAlipayClient(URL,APP_ID,APP_PRIVATE_KEY,FORMAT,CHARSET,ALIPAY_PUBLIC_KEY,SIGN_TYPE);
关键参数说明:
配置参数 | 示例值解释 | 获取方式/示例值 |
URL | 支付宝网关(固定) | https://openapi.alipay.com/gateway.do |
APPID | APPID 即创建应用后生成 | 获取见 创建应用 |
APP_PRIVATE_KEY | 开发者私钥,由开发者自己生成 | 获取见 配置密钥 |
FORMAT | 参数返回格式,只支持 json | json(固定) |
CHARSET | 编码集,支持 GBK/UTF-8 | 开发者根据实际工程编码配置 |
ALIPAY_PUBLIC_KEY | 支付宝公钥,由支付宝生成 | 获取详见 配置密钥 |
SIGN_TYPE | 商户生成签名字符串所使用的签名算法类型,目前支持 RSA2 和 RSA,推荐使用 RSA2 | RSA2 |
接下来,就可以用 alipayClient 来调用具体的 API 了。alipayClient 只需要初始化一次,后续调用不同的 API 都可以使用同一个 alipayClient 对象。
注意:
ISV /开发者可以通过 第三方应用授权 得到商户授权令牌(app_auth_token)作为请求参数传入,实现代商户发起请求的能力。
如果您在调用 API 时出现报错,您可以:
在 公共错误码 中根据错误码的类型,查找相关错误码及解决方案;
在 小蚂哥 问答页面直接输入您遇到的错误码;
在技术支持 帮助中心 搜索相关错误码,找到解决方案。
第五步:调用接口
小程序支付调用流程如下图所示:
1.在小程序端调用 my.request 接口,连接到商户服务端。
my.request({ url: '商户服务端地址',//须加httpRequest域白名单 method: 'POST', data: {//data里的key、value是开发者自定义的 from: '支付宝', order: 'XXXXX',//订单信息 }, dataType: 'json', success: function(res) { my.alert({content: 'success'}); }, fail: function(res) { my.alert({content: 'fail'}); }, complete: function(res) { my.hideLoading(); my.alert({content: 'complete'}); } });
2.在服务端调用alipay.trade.create (统一收单交易创建接口),获得支付宝交易号 tradeNO(以 Java 代码为例)。
//实例化客户端 AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", APP_ID, APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2"); //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.create. AlipayTradeCreateRequest request = new AlipayTradeCreateRequest(); //SDK已经封装掉了公共参数,这里只需要传入业务参数。 request.setBizContent("{" + "\"out_trade_no\":\"20171115010101001\"," +//可以随机生成订单号:String outTradeNo = UUID.randomUUID().toString().replace("-", ""); "\"total_amount\":0.01," + "\"subject\":\"Iphone616G\"," + "\"buyer_id\":\"用户pid\"" + "}"); try { //使用的是execute AlipayTradeCreateResponse response = alipayClient.execute(request); String trade_no = response.getTradeNo();//获取返回的tradeNO。 } catch (AlipayApiException e) { e.printStackTrace(); }buyer_id是支付宝小程序授权登录成功后获取到的支付宝 user_id获取方法可以参考 用户授权文档。
注意:
在小程序场景内 alipay.trade.create 接口中的“buyer_id”为必填项,若未传入调式时会出现报错。推荐使用开放平台提供的服务端 SDK,并参考代码示例编写;点击下载开放平台服务端 SDK。具体业务参数请参考 API 文档。
3.在小程序端使用 tradeNO,调用 my.tradePay 接口唤起支付收银台。
my.tradePay({ tradeNO: '2017111521001104105336677922', success: function(res) { my.alert(res.resultCode); }, fail: function(res) { my.alert(res.resultCode); }, });
关键参数说明:
配置参数 |
示例值解释 |
获取方式/示例值 |
URL |
支付宝网关(固定) |
https://openapi.alipay.com/gateway.do |
APP_ID |
APPID 即创建应用后生成 |
|
APP_PRIVATE_KEY |
开发者应用私钥,由开发者自己生成 |
详见配置密钥 |
FORMAT |
参数返回格式,只支持 json 格式 |
json(固定) |
CHARSET |
请求和签名使用的字符编码格式,支持 GBK 和 UTF-8 |
开发者根据实际工程编码配置 |
ALIPAY_PUBLIC_KEY |
支付宝公钥,由支付宝生成 |
详见配置密钥 |
SIGN_TYPE |
商户生成签名字符串所使用的签名算法类型,目前支持 RSA2 和 RSA,推荐商家使用 RSA2。 |
RSA2 |
接下来,开发者就可以用 alipayClient 来调用具体的 API 了。alipayClient 只需要初始化一次,后续调用不同的 API 都可以使用同一个 alipayClient 对象。
注意:
ISV/开发者可以通过“第三方应用授权”得到商户授权令牌(app_auth_token)作为请求参数传入,商户签约完成后,可实现代商户发起请求的能力;具体方法请参考第三方应用授权)。
1) 常用小程序功能列表:
功能 |
场景描述 |
查看 |
获取会员信息 |
在用户授权的情况下获取用户信息,商户可根据自身需求,绑定支付宝user_id和商户会员标识 |
|
小程序支付 |
小程序支付唤起收银台进行支付,小程序支付支持核销口碑券及口碑商户优惠,已签约小程序支付或在口碑开店的商户建议接入小程序支付 |
|
获取位置 |
获取用户当前的地理位置my.getLocation |
|
扫码 |
调用支付宝小程序扫码功能 |
2)当面付相关产品接口:
接口英文名 |
接口中文名 |
描述 |
统一收单线下交易查询 |
通过调用该接口查询订单的状态 |
|
统一收单交易创建接口 |
创建支付宝交易订单 |
|
统一收单交易退款接口 |
支持部分和全部退款 |
|
查询对账单下载地址接口
|
查询并下载对账单 |
交易创建接口:alipay.trade.create接口传参说明:
business_params | 复杂类型 | BusinessParams | 否 | 可选 | r1 | {"data":"123"} |
商户传入业务信息,具体值要和支付宝约定,应用于安全,营销等参数直传场景,格式为json格式 |
|
campus_card | 基础类型 | String | 否 | 可选 | r1 | 64 | 0000306634 |
校园卡编号 |
card_type | 基础类型 | String | 否 | 可选 | r1 | 128 | T0HK0000 |
虚拟卡卡类型 |
campus_no |
基础类型 | String | 否 | 可选 | r1 | 256 | 201843206 |
学号 |
school_stdcode |
基础类型 | String | 否 | 可选 | r1 | 16 |
2135000005 |
学校标识码 |
school_name |
基础类型 | String | 否 | 可选 | r1 | 128 |
郑州大学 |
学校名称 |
expire_at | 基础类型 | String | 否 | 可选 | r1 | 32 |
2019-12-31 12:00:00 |
学籍有效时间 |
goods_detail |
GoodsDetail[] |
可选 |
订单包含的商品列表信息,json格式,其它说明详见商品明细说明 |
||
└ goods_id |
String |
必填 |
32 |
商品的编号 |
apple-01 |
└ goods_name |
String |
必填 |
256 |
商品名称 |
ipad |
└ quantity |
Number |
必填 |
10 |
商品数量 |
1 |
└ price |
Price |
必填 |
9 |
商品单价,单位为元 |
2000 |
└ goods_category |
String |
可选 |
24 |
商品类目 |
缴费类目:fee |
└ categories_tree |
String |
可选 |
128 |
商品类目树,从商品类目根节点到叶子节点的类目;缴费场景必传id组成,类目id值使用|分割 |
二级类目:business_tax/Non_tax/contribute |
└ body |
String |
可选 |
1000 |
商品描述信息 |
具体费用:学费(中文) |
└ show_url |
String |
可选 |
400 |
商品的展示地址 |
http://www.alipay.com/xxx.jpg |
operator_id |
String |
可选 |
28 |
商户操作员编号 |
yx_001 |
store_id |
String |
可选 |
32 |
商户门店编号 |
NJ_001 |
terminal_id |
String |
可选 |
32 |
商户机具终端编号 |
NJ_T_001 |
extend_params |
ExtendParams |
可选 |
业务扩展参数 |
||
└sys_service_provider_id |
String |
可选 |
64 |
系统商编号 |
2088511 |
通过sftp方式获取账单或者通过查询对账单下载地址接口(alipay.data.dataservice.bill.downloadurl.query)
通过退款接口进行退款。统一收单交易退款接口 (alipay.trade.refund)支持部分退款或者全额退款
线上技术问题反馈渠道:
一、在线IM
1、PC上访问open.alipay.com,选择右上角下拉菜单的"帮助支持-技术支持中心",进入右下角蓝色在线小宝-输入商户PID反馈技术问题
2、直接打开链接https://cschannel.alipay.com/newPortal.htm?scene=mt_zczx
(工作日早上9点-晚上6点)
二、技术邮箱
techservices@alipay.com (工作日早上9点-晚上6点)