生成微信支付二维码接口(2)| 学习笔记

简介: 快速学习 生成微信支付二维码接口(2)

开发者学堂课程【微服务+全栈在线教育实战项目演练(SpringCloud Alibaba+SpringBoot) 生成微信支付二维码接口(2)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/667/detail/11494


生成微信支付二维码接口(2)


目录:

一、生成支付二维码接口

二、总结


一、生成支付二维码接口

首先需要做微信的相关操作,需要引入微信支付的相关依赖,来到课件中:02创建支付模块和开法订单接口,把依赖做一个引入。

复制到 service_orders 文件中

<dependencies>

<dependency>

<groupId>com.githhub.wxpay</groupId>

<artifaceId>wxpay-sdk</artifactId>

<version>0.0.3</version>

</dependency>

<dependency>

<groupId>com.alibaba</groupId>

<artifactId>fastjson</artifactId>

</dependency>

</dependencies>

复制到 service pom.xml 文件中,第一个依赖是 wxpay-sdk,用的是0.0.3这个版本,第二个是 fast.json,是一个 json 转工具。

来到 PayLogServiceImpl.java

分成四步

//1 根据订单号查询信息    先把信息查出来,后面有需要

//2 使用 map 设置生成二维码需要参数

//3 发送 httpclient 请求,传递参数 xml 格式,微信支付提供的固定的地址

//4 得到发送请求返回结果   从结果里面可以得到需要的数据,最终 return 即可。

第一步需要订单,所以把 service 注入进来

@Autowired

private OrderService orderService;

//生成微信支付二维码接口

@Override

public Map createNative(String orderNo){

try{

//1 根据订单号查询信息

QueryWrapper<Order> wrapper = new QueryWrapper<>();

wrapper.eq( column:”order_no”,orderNo);

设置的条件是因为用订单号设置查询,用订单号字段的名字

order_no,复制到代码中并把值得到,得到后调方法

Order order = orderService.getOne(wrapper)

Service 是查询的方法,查询重复订单。

//2 使用 map 设置生成二维码需要参数 设置里面的参数较固定

Map m = new HashMap();  用 map 转 xml 方便

m.put(“appid”,”wx74862e0dfcf69954”);

值有很多,是微信支付的 id 值,这个值可以写到配置文件中,写一个工具类读取。

m.put(“mch_id”,”1558950191”);

m.put(“nonce_str”,WXPayUntil.generateNonceStr());

m.put(“body”,order.getCourseTitle());

m.put(“out_trade_no”,orderNo);

m.put(“total_fee”,order.getTotalFee().multiply(new BigDecimal(“100”)).longValue()+””);

m.put(“spbill_create_ip”,”127.0.0.1”);

m.put(“notify_url”,http://guli.shop/api/order/weixinPay/weixinNotify\n)

m.put(“trade_type”,”NATIVE”);

括号前面的名字不能改,右边的名字可以改

第一个是微信 id,第二个是商户号,这两个是固定的。第三个是生成的随机字符串,第四个是 order 的课程名称,totalfee 是二维码订单价格。Spbill create ip 是订单 ip,如果在实际项目中应加上项目域名。

Notify url 暂时没有用到,是做回调的地址。Trade type 是支付的类型。

//3 发送 httpclient 请求,传递参数 xml 格式,微信支付提供的固定的地址

把 day15的源码中的工具类直接复制到项目中,放到 util 中。

HttpClientclient=new HttpClient(url:”https://api.mch.weixin.qq.com/pay/unifiedorder”);

//设置 xml 格式的参数

利用 setxmlparam 方法,用这个方法设置 xml 格式数据。在里面用到微信工具类,把 map 集合转换称 xml,还要传递到商户 key。发送请求时要传参数,参数需要加密,用商户 key 把参数加密保证其安全。

client.setXmlParam(WXPayUtil.generateSignedXml(mkey:”T6m9iK73b0kn9g5v426MKfHQH7X8rKwb);

client.setHttps(true);

//执行请求发送

client.post();

用 post 方法发送请求,发送过程完成。

设置微信地址,用 xml 做个加密,最终设置用 https 的请求,最后用 post 发送。

//4 得到发送请求返回结果

Client 里面有一个 getcontent 方法,表示得到返回的内容。返回的内容是使用 xml 格式返回的

//返回内容,是使用 xml 格式返回

传参数需要传 xml 格式,返回参数也需要 xml 格式。变成 map 返回更方便。

String content = client.getContent();

/把 xml 格式转换 map 集合,把 map 集合返回

Map<String,String> resultMap = WXPayUtil.xmlToMap(xml);

做个返回,resultmap 中有数据,但可能不完整,需要二维码地址,返回的结果,课程,价钱等等。

为了让结果更完整,所以用 map 进行封装,最后返回。

//最终返回数据的封装

Map map=new HashMap();

map.put(“out_trade_no”,orderNo);

map.put(“course_id”,order.getCourseId());

map.put(“total_fee”,order.getTotalFee());

map.put(“result_code”,resultMap.get(“result_code”));  //返回二维码操作状态码

map.put(“code_url”,resultMap.get(“code_url”));  //二维码地址

return map;

}catch(Exception e){

throw new GuliException(20001,“生成二维码失败”);

}

return null;

}


二、总结

在 control 中得到订单 id,最终包含 map、二维码地址和其他信息。在 service 中先根据订单号查询订单信息,设置生成二维码需要的参数,用 httpclient 发送请求,需要变成 xml 格式,改变完成后返回结果,结果也是 xml 格式,需要把 xml 改成 map 集合,从 map 中取值,最终返回。这些值是以后需要的。

相关文章
|
3月前
|
算法 iOS开发 CDN
“企业微信iPad协议”第 0x04 天:当朋友圈接口在凌晨 2:14 突然返回 404
新品上线紧急任务:300位经销商朋友圈同步海报。突破官方限制,利用企业微信iPad协议私有接口,自动化上传发布。凌晨遭遇404,迅速定位并修复算法版本问题,最终高效完成推送,点赞超4200。技术在文档之外,也在边界之内。
237 0
|
3月前
|
iOS开发
“企业微信iPad协议”第0x0B次编译:当朋友圈接口在凌晨悄然返回空数组
新品海报发布失败,排查发现企业微信iPad端因本地时间偏差超60秒,导致`ext_ticket`校验失败。NTP校准后恢复正常。问题根源:独立加签逻辑对时间敏感,且错误不提示。精准时间成合规关键。
262 0
|
10月前
|
自然语言处理 搜索推荐 小程序
微信公众号接口:解锁公众号开发的无限可能
微信公众号接口是微信官方提供的API,支持开发者通过编程与公众号交互,实现自动回复、消息管理、用户管理和数据分析等功能。本文深入探讨接口的定义、类型、优势及应用场景,如智能客服、内容分发、电商闭环等,并介绍开发流程和工具,帮助运营者提升用户体验和效率。未来,随着微信生态的发展,公众号接口将带来更多机遇,如小程序融合、AI应用等。
|
人工智能 JavaScript 定位技术
微信的接口都有哪些?
【10月更文挑战第17天】微信的接口都有哪些?
1118 43
|
6月前
|
Java API
wxid添加微信好友工具,免费微信wxid转换器二维码,jar实现仅供学习参考
本项目实现微信ID与wxid的转换及二维码生成功能,核心逻辑基于ZXing库完成QR编码,支持文件批量导入导出。
|
6月前
|
编解码 Java
wxid加微信好友工具,二维码转换工具,微信号转wxid插件【仅供学习参考】
本工具基于JAVA实现微信ID转换功能,支持wxid、微信号与二维码之间的相互转换。开发中使用ZXing库(版本3.5.1)完成二维码编解码,并设计核心类`WxidConverter`实现关键转换逻辑。
|
10月前
|
小程序 测试技术 数据安全/隐私保护
微信公众号接口测试实战指南
微信公众号接口测试是确保系统稳定性和功能完整性的重要环节。本文详细介绍了测试全流程,包括准备、工具选择(如Postman、JMeter)、用例设计与执行,以及常见问题的解决方法。通过全面测试,可以提前发现潜在问题,优化用户体验,确保公众号上线后稳定运行。内容涵盖基础接口、高级接口、微信支付和数据统计接口的测试,强调了功能验证、性能优化、安全保护及用户体验的重要性。未来,随着微信生态的发展,接口测试将面临更多挑战和机遇,如小程序融合、AI应用和国际化拓展。
|
JSON 前端开发 API
使用微信JS-SDK调用发票接口的完整开发指南
本文介绍了如何使用微信JS-SDK的`chooseInvoiceTitle`接口来调用微信的发票功能。通过微信发票接口,用户可以选择开具个人或单位发票,并获取相关发票信息,如抬头、税号、公司地址等。在文中,详细描述了JS-SDK的初始化、发票接口的调用方式,并提供了完整的代码示例。文章还介绍了如何处理返回的发票信息,帮助开发者快速集成微信发票功能。
558 2
|
算法 小程序 Java
java制作海报三:获取微信二维码详情,并改变大小,合成到海报(另一张图片)上
这篇文章介绍了如何使用Java获取微信小程序的二维码,并将其调整大小后合成到海报(另一张图片)上。
255 0

热门文章

最新文章