java快速对接微信支付分(一)
维信支付分是对个人的身份特质、支付行为、使用历史等情况的综合计算分值,旨在为用户提供更简单便捷的生活方式。
用户在场景中开通示意图
说明:用户只需在某一个应用场景中开通一次(开通分数+开通免密代扣),即可在其他应用场景使用支付分功能,无需再次开通分数或开通免密代扣。
2.接入前准备
A--大致的接入流程大纲如下,可以先混个眼熟
3.需确定订单模式和免确定模式
A--需确定订单模式
【需确认订单模式】典型场景说明:
例如 免押租借场景,均是使用【需确认订单模式】,以租借充电宝为例
B--免确定订单模式
该模式只能添加只可传 先享模式字段
【免确认订单模式】典型场景说明:
例如 网约车先乘后付,是使用的【免确认订单模式】
补充一点为【免确认订单模式】是高级接口权限,目前只支持如下行业调用:
除以上行业/场景外,其他行业/场景均只能调用【需确认订单模式】接口。
接口调用权限与服务id相关,在申请服务id时,只有上述场景下的服务id,才有权限调用【免确认单定模式】接口。即只有在上述场景下,创单订单api接口中need_user_confirm字段才能传 false:免确认订单。
C--先免与先享字段的说明
在创建支付分订单的risk_fund字段里面的name
如图
先免模式:顾名思义就是比如免去押金,免去预付款,免去保证金,前提是评估通过,即免去此类的东西,进行服务,后进行扣款,当评估不通过,即在 确认订单页上进行押金/预付款/保证金支付,支付成功进行服务使用
先享模式:是指评估不通过,不能通过缴纳费用,继续进行服务使用。例如信用回收,用户评估通过,可先获得部分回收款,若评估不通过,则无法获得。
D--需确定模式和面确定模式的大致思路图
需确定模式
免确定模式
4.实际开发的细步骤
这里我选择的是需确定模式和先享模式
需确定模式的api为公共api和需确定模式api
以下为官网的链接
A--进行商户申请成功获取到service_id
B--进行创建支付分订单
以下为创建支付分订单的接口
我把我使用的发送http请求的工具类分享出来
public class HttpClientUtils {
/**
* 发送get请求
* @param url 请求地址
* @return 返回内容 json
*/
public static String httpGet(String url){
// 1 创建发起请求客户端
try {
HttpClient client = new HttpClient();
// 2 创建要发起请求-tet
GetMethod getMethod = new GetMethod(url);
// getMethod.addRequestHeader("Content-Type",
// "application/x-www-form-urlencoded;charset=UTF-8");
getMethod.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET,"utf8");
// 3 通过客户端传入请求就可以发起请求,获取响应对象
client.executeMethod(getMethod);
// 4 提取响应json字符串返回
String result = new String(getMethod.getResponseBodyAsString().getBytes("utf8"));
return result;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
在进行解析第三方接口返回的json的时候我一般使用FastJson
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.58</version>
</dependency>
大致的思路就是,先把请求需要的东西给填入进去,在使用工具类进行发送http请求,返回的结果使用工具类进行解析
注意:
此处应该为true 因为选的是需确定订单
请求示例
{
"out_order_no": "1234323JKHDFE1243252",
"appid": "wxd678efh567hg6787",
"service_id": "500001",
"service_introduction": "某某酒店",
"post_payments": [
{
"name": "就餐费用服务费",
"amount": 4000,
"description": "就餐人均100元服务费:100/小时",
"count": 1
}
],
"post_discounts": [
{
"name": "满20减1元",
"description": "不与其他优惠叠加"
}
],
"time_range": {
"start_time": "20091225091010",
"end_time": "20091225121010"
},
"location": {
"start_location": "嗨客时尚主题展餐厅",
"end_location": "嗨客时尚主题展餐厅"
},
"risk_fund": {
"name": "ESTIMATE_ORDER_COST",
"amount": 10000,
"description": "就餐的预估费用"
},
"attach": "Easdfowealsdkjfnlaksjdlfkwqoi&wl3l2sald",
"notify_url": "https://api.test.com",
"openid": "oUpF8uMuAJO_M2pxb1Q9zNjWeS6o",
"need_user_confirm": true
}
当发送成功之后会获取package数据,在使用封装的思想把数据返回去前端进行调起支付的请求
以上部分内容参考该文章 送上链接
第一次写博客,不足之处请指出,后续内容在第二部
