微信,支付宝,支付异步通知验签,notify_url
在支付接口开发中
,当用户支付完成之后,阿里或者微信会向我们服务器发送一个支付结果的通知,里边带有一系列参数;其中特殊的是签名类型,和签名(他们根据这些参数做出来的签名)。
我们的得到这些参数之后要去除签名类型和签名(他们根据这些参数做出来的签名);之后我们再用这些参数做好排序生成一个签名,与他们返回来的这个签名做比较。
支付宝SDK里边有一套验签工具,微信方面可以自行做一个验签。
1、支付宝验签文档:https://help.alipay.com/lab/help_detail.htm?help_id=243094
支付宝的验签:AlipaySignature.rsaCheckV1();这个方法是支付宝sdk里自带的。alipay-sdk-java20170725114550版本的
https://docs.open.alipay.com/54/103419这个地址可以下载支付宝给出的SDK。
2、下单之后支付宝和微信都会在下单返回的数据中放置一个支付二维码内容的链接,我们可以用这个链接自行生成一个二维码供用户支付。
3、接收微信服务器发送过来的通知数据:
// 读取参数
Map<String, Object> items = HttpUtil.convertModel(request);
InputStream inputStream;
StringBuffer sb = new StringBuffer();
inputStream = request.getInputStream();
String s;
BufferedReader in = new BufferedReader(new InputStreamReader(
inputStream, "UTF-8"));
while ((s = in.readLine()) != null) {
sb.append(s);
}
in.close();
inputStream.close();
其中的sb即是接收过来的xml数据;后续我们可以通过自己工程里的xml解析工具即可解析得到map格式的数据或者json格式的数据,以供之后的验签,存储等业务操作。
4、接收阿里返回通知的数据
Map<String, String> params = new HashMap<String, String>();
Map requestParams = request.getParameterMap();
for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext();) {
String name = (String) iter.next();
String[] values = (String[]) requestParams.get(name);
String valueStr = "";
for (int i = 0; i < values.length; i++) {
valueStr = (i == values.length - 1) ? valueStr + values[i] : valueStr + values[i] + ",";
}
// 乱码解决,这段代码在出现乱码时使用。如果mysign和sign不相等也可以使用这段代码转化
// valueStr = new String(valueStr.getBytes("ISO-8859-1"), "gbk");
params.put(name, valueStr);
}
// 获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表(以下仅供参考)//
// 商户订单号
String out_trade_no = new String(request.getParameter("out_trade_no").getBytes("ISO-8859-1"), "UTF-8");
可以通过这块代码得到通知的数据,转换之后的map数据在params 里边,也可以直接从request里读取数据如上的订单号。
之后我们就可以根据这些参数做验签,存储,更新等的操作了。
相关文章
- 【年终总结】微信前端社招有感
- 微信开发,获取用户昵称,并将其存入数据库,微信昵称存入数据库出错
- 微信支付
- 微信小程序 图片 宽度100%, 高度自适应
- 微信小程序发布新版本的小程序之后,从发现-小程序中启动,还是看的到旧版本。[转]
- 微信小程序超市购物+后台管理系统|前后分离VUE
- 微信公众号开发之用户地理位置坐标转百度坐标
- 异步将远程链接上的内容(图片或内容)写到本地--微信头像
- 小程序调用微信支付返回错误
- 微信支付开发本地接收异步通知回调【实战】
- 微信APP支付(Java后台生成签名具体步骤)
- 微信--高效解决token及授权用户openid的持久化处理办法
- 微信小程序进行地图导航使用地图功能
- 王家林人工智能AI第14课:通过K-Nearest Neighbors改进在Social Network上销售汽车推荐系统的精准性 老师微信13928463918
- 微信小程序----button组件
- 微信小程序-知亦行(选项卡切换,shoush不滑动)
- 微信小程序-一个跑步app