挂件收缴接口说明(手机挂件)
调用商户后端说明 #01
用户选择相应的收缴方式,点击“确认收缴”时缴款服务挂件会发起请求,调用商户页面传到js接口中的charge_url地址,并将商户号、控件类型参数等通过POST请求到商户后端服务商户后端需要接收相关参数, 调用SDK中生成create的方法,通过商户后端对参数进行加密请求到我方后端。
调用商户后端接口 #02
统一接口为com.bosssoft.sdk.model.Charge.create(chargeMap,serviceUrl,privateKey); 其中chargeMap为接口参数,见下方接口参数章节。 serviceUrl为我方提供的接口地址,在挂件js中已指定。 privateKey为数据传输时签名加密所需使用的商户私钥。
调用商户后端接口参数 #03
chargeMap参数内容:
属性 | 描述 | 类型 | 是否必填 | 补充 |
---|---|---|---|---|
merchant_no | 商户号 | String | 是 | |
widget_content | 订单内容 | String | 是 | 转出时需使用私钥签名 |
front_url | 前端通知地址 | String | 否 | |
back_url | 后端通知地址 | String | 是 | |
client_ip | 终端IP | String | 否 | 微信H5收缴时需传入终端(客户端)IP |
extra | 扩展参数 | String | 否 |
调用商户后端接口返回 #04
属性 | 描述 | 类型 | 是否必填 | 补充 |
---|---|---|---|---|
success | 返回状态 | Boolean | 是 | true:成功,false:失败 |
extraInfo | 返回跳转的信息 | String | 否 | 发生异常时字段为空 |
msg | 返回的描述信息 | String | 是 |
Demo
@RequestMapping(value = "/createCharge", method = RequestMethod.POST,
StringUtils.isEmpty(widget_content) && StringUtils.isEmpty(service_url)) {
@ResponseBody
public String createCharge(
@RequestParam(value = "merchant_no", required = true) String merchant_no,
@RequestParam(value = "merchant_order_no") String merchant_order_no,
@RequestParam(value = "amount") Integer amount,
@RequestParam(value = "channel") String channel,
@RequestParam(value = "charge_param") String charge_param,
@RequestParam(value = "widget_content", required = true) String widget_content,
@RequestParam(value = "service_url", required = true) String service_url,
HttpServletRequest request, HttpServletResponse response) {
if (StringUtils.isEmpty(merchant_no) && StringUtils.isEmpty(merchant_order_no)&&
StringUtils.isEmpty(channel) && StringUtils.isEmpty(charge_param) &&
StringUtils.isEmpty(widget_content) && StringUtils.isEmpty(service_url)) {
try {
BufferedReader br =request.getReader();
net.sf.json.JSONObject objStr= net.sf.json.JSONObject.fromObject(br.readLine());
merchant_no = (String) objStr.get("merchant_no");
merchant_order_no = (String) objStr.get("merchant_order_no");
amount = (Integer) objStr.get("amount");
channel = (String) objStr.get("channel");
charge_param = (String) objStr.get("charge_param");
widget_content = (String) objStr.get("widget_content");
service_url = (String) objStr.get("service_url");
} catch (IOException e) {
logger.error("获取请求参数失败{}", e);
e.printStackTrace();
}
}
// merchant_no,channel,merchant_order_no,amount用于验证订单一致性和获取信息。
logger.info(merchant_no);
logger.info(merchant_order_no);
logger.info(amount);
// 收缴渠道取值,用户选择收缴方式点提交后,会将channel传进来
logger.info(channel);
// charge_param用于信息透传,如果想看参数是否传入请参照例子自行解析输出。
JSONObject charge_param_obj = (JSONObject) JSONObject.parse(charge_param);
logger.info(charge_param_obj.get("a"));
//重要:构造chargeMap
Map chargeMap = new HashMap();
chargeMap.put("merchant_no", merchant_no);
// 商户号,应与js中传入的一致,接到的merchant_no参数
chargeMap.put("widget_content", widget_content);
// 接到的widdget_content参数(调用js接口时传进来参数)
chargeMap.put("front_url", ParamConstant.FRONT_URL);// 前端通知地址
chargeMap.put("back_url",ParamConstant.BACK_URL);// 后端通知地址
Map extra = new HashMap();
chargeMap.put("extra", extra);
// 扩展参数,如果有需要的话构造一个map然后将map转换成json串传入
String chargeString = "";
String privateKey = "";//私钥赋值
try{
//发起 create创建charge请求(参数为构造的的chargeMap,传入的controller的service_url)
chargeString = Charge.create(chargeMap, service_url ,privateKey);
logger.info(chargeString);
} catch (Exception e) {
e.printStackTrace();
}
return chargeString;
}
跳转收缴说明 #05
缴款服务后端返回跳转收缴所需的订单信息到商户后端,商户后端将信息返回到js接口,js接口自动进行跳转收缴。
关于我们
北京博思致新互联网科技有限责任公司成立于2016年,是行业领先的收缴服务提供商。
公司动态
其它信息
联系我们
获取方案