# wxpay_plus **Repository Path**: lsq-itheima/wxpay_plus ## Basic Information - **Project Name**: wxpay_plus - **Description**: 本组件是对微信支付SDK的二次封装,代码中包含了微信支付SDK部分。使用本组件,可以极大减少微信支付对接的代码量。 本支付封装组件支持小程序支付和本地支付(扫码支付)两种方式。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2022-07-23 - **Last Updated**: 2022-07-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # wxpay_plus (微信支付plus) 本组件是对微信支付SDK的二次封装,代码中包含了微信支付SDK部分。使用本组件,可以极大减少微信支付对接的代码量。 本支付封装组件支持小程序支付和本地支付(扫码支付)两种方式。 ## 组件集成 1.下载本代码,使用maven的install命令安装到本地仓库。 2.在你工程的pom文件中添加依赖。 ```xml com.github wxpay_plus 1.0.0 ``` 3.在配置文件中,添加支付相关的配置,如以下格式: ```yaml wxpay: appId: appSecret: app密钥 mchId: 商户号 partnerKey: 商户密钥 notifyUrl: 回调地址 ``` 4.修改springboot启动类@SpringBootApplication注解的scanBasePackages属性,添加com.github.wxpay包。 ```java @SpringBootApplication(scanBasePackages = {"com.lkd","com.github.wxpay"}) public class OrderServiceApplication { public static void main(String[] args) { SpringApplication.run(OrderServiceApplication.class, args); } } ``` ## 方法调用 ### 下单支付 在下单的类中注入 WxPayTemplate ```java @Autowired private WxPayTemplate wxPayTemplate; ``` 在下单的方法中,只需一下几句即可实现微信支付的下单 ```java //封装支付请求参数 var wxPayParam=new WxPayParam(); wxPayParam.setBody(orderEntity.getSkuName());//商品名称 wxPayParam.setOutTradeNo(orderEntity.getOrderNo());//订单号 wxPayParam.setTotalFee(orderEntity.getAmount().intValue());//金额 wxPayParam.setOpenid(orderEntity.getOpenId());//用户id //调用微信支付 return wxPayTemplate.requestPay( wxPayParam); ``` 如上代码,将requestPay方法返回的内容返回给前端即可。 如果是本地支付(扫码支付),openid属性传空字符串即可。 ### 支付回调 wxPayTemplate的validPay方法用于判断支付回调,可参考以下代码 ```java /** * 微信支付回调接口 * @param request * @return */ @RequestMapping("/payNotify") @ResponseBody public void payNotify(HttpServletRequest request, HttpServletResponse response){ try { Map result = wxPayTemplate.validPay(request.getInputStream()); if("SUCCESS".equals( result.get("code") )){ //返回码成功 log.info("修改订单状态和支付状态"); String orderSn= result.get("order_sn");//获取订单号 //todo:成功的逻辑处理 } }catch (Exception e){ log.error("支付回调处理失败",e); } } ```