[TOC]

一、接口说明

方案为商户使用的用户提供“通用缴款支撑服务”,提供在线缴款缴款方式,接入网银、银联等主流互联网支付渠道,为缴款人提供更丰富、更灵活的缴款选择,让缴款更方便。

二、 缴款流程

1.png

2.1 挂件展现

2.1.1 说明

用户访问商户页面时,商户页面通过加载缴款服务挂件提供thirdpay_widget.js接口,调用thirdpay_widget.init()方法。将要显示挂件位置的“Div”的id、商户号、金额、挂件类型、商户后端生成charge对象的URL等参数传递给缴款服务挂件,缴款服务挂件通过页面渲染展现对应的可视化挂件。
thirdpay_widget.js为我方提供的挂件地址:
测试环境为:
http://debug.epayservice.cn/thirdpay/resources/widget/js/thirdpay_widget.js

2.1.2 缴款挂件接口

属性 描述 类型 是否必填 补充
container 显示挂件位置div的id String
merchant_no 商户号 String
merchant_order_no 商户订单号 String
amount 订单金额 Integer 单位 分
widget_param 控件参数 String 如果提供业务参数文档,则必填
不提供,则为空
subject 商品标题 String
body 商品描述 String
charge_url 创建Charge对象的 URL String
charge_param 透传参数 String
device_type 设备类型 String pc、phone
effective_time 有效时间 String 1m~15d,m-分钟,h-小时,d-天
默认当天1c,24点失效
version_no 版本编码 String 1.1新接口

2.1.3 Demo

详见3.1部分

2.2 调用商户后端

2.2.1 说明

用户选择相应的支付方式,点击“确认支付”时缴款服务挂件会发起请求,调用商户页面传到js接口中的charge_url地址,并将商户号、控件类型参数等通过POST请求到商户后端服务商户后端需要接收相关参数,调用SDK中生成create的方法,通过商户后端对参数进行加密请求到我方后端。
统一接口为
com.bosssoft.sdk.model.Charge.create(chargeMap,serviceUrl,privateKey);
其中chargeMap为接口参数,见下方接口参数章节。
serviceUrl为我方提供的接口地址,在挂件js中已指定。
privateKey为数据传输时签名加密所需使用的商户私钥。

2.2.2 接口参数

chargeMap参数内容:

属性 描述 类型 是否必填 补充
merchant_no 商户号 String
widget_content 订单内容 String 转出时需使用私钥签名
front_url 前端通知地址 String
back_url 后端通知地址 String
charge_param 透传参数 String 后台通知时,返回
extra 扩展参数 String

2.2.3 接口响应

接口返回值统一使用String类型接收,再转为相应的值集类型进行后续处理。

属性 描述 类型 是否必填 补充
success 返回状态 Boolean true:成功
false:失败
extraInfo 返回跳转的信息 String 发生异常时字段为空
msg 返回的描述信息 String

2.2.4 Demo

详见3.2部分

2.3 跳转支付

缴款服务后端返回跳转支付所需的订单信息到商户后端,商户后端将信息返回到js接口,js接口自动进行跳转支付。

2.4 前台结果通知

2.4.1 说明

支付后会给商户前端返回响应通知,提示用户“成功”或“失败”。前台结果通知仅用于页面展现,前台通知因存在用户支付完毕后直接关闭浏览器的情况,不能保证每次都送达。商户不能以前台通知为准判定支付结果,不作为记账依据。

2.4.2 接口参数

1、前台通知商户需要接收我方后端发送的加密字符串,然后用私钥进行解密后,转成json对象,根据接口字段来获取商户需要的字段如下表:

属性 描述 类型 是否必填 补充
merchant_no 商户号 String
merchant_order_no 商户订单号 String
amount 支付金额 Integer 单位 分
result 支付结果 String 200 成功
500 失败
result_des 支付结果描述 String 失败时填写失败原因
extra 扩展参数 String

2、统一解密的方法
com.bosssoft.sdk.model.Message.decryptByPrivateKey(RsaStr, privateKey);
RsaStr为1中接收的加密后的字符串;
privateKey为数据传输时签名加密所需使用的商户私钥。
3、解密成功后商户可根据需要,跳转前台通知页面。

2.4.3 Demo

详见3.3部分

2.5 后台结果通知

2.5.1 说明

支付后会异步给商户后端返回通知,作为缴款的记账依据;
通过HttpClient发送POST请求。

2.5.2 接口参数

解析request请求,将输入流转换成StringBuffer类型的字符串,然后用私钥进行解密,调用SDK封装的统一解密方法,转成json对象,根据接口字段来获取商户对账需要的字段,如下表:

属性 描述 类型 是否必填 补充
merchant_no 商户号 String
merchant_order_no 商户订单号 String
amount 支付金额 Integer 单位 分
confirm_time 缴款时间 String yyyy-MM-dd hh:mm:ss
result 支付结果 String 200 成功
500 失败
result_des 支付结果描述 String 失败时填写失败原因
charge_param 透传参数 String
extra 扩展参数 String

extra参数说明:

属性 描述 类型 是否必填 补充
channel 缴款渠道 String
channel_name 缴款渠道名称 String
channel_trade_no 渠道订单号 String
third_trade_no 第三方订单号 String 微信支付第三方订单号
payer_id 付款人id String 支付宝支付,付款人id
bill_batch_code 票据代码 String
bill_no 票据号码 String
bill_random 票据校验码 String
einvoice_url 电子票查看地址 String
einvoice_data 电子票数据 String

2.5.3 接口响应

统一解密的方法
com.bosssoft.sdk.model.Message.decryptByPrivateKey(RsaStr, privateKey);
RsaStr为1中解析出加密后的字符串;
privateKey为数据传输时签名加密所需使用的商户私钥。
商户后端须给我方响应成功或失败,具体响应字段如下:

属性 描述 类型 是否必填 补充
result 响应结果 String 200 成功;500 失败
result_des 响应结果描述 String 失败时填写失败原因
extra 扩展参数 String

2.5.4 Demo

详见3.4部分

三、附录

3.1 Demo

引入js

调用js接口