# wxpaydemo **Repository Path**: nemoCoder/wxpaydemo ## Basic Information - **Project Name**: wxpaydemo - **Description**: 微信支付v3版本java后台支付代码 - **Primary Language**: Java - **License**: MulanPSL-2.0 - **Default Branch**: release-2.0 - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 6 - **Created**: 2021-12-16 - **Last Updated**: 2021-12-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # wxpaydemo #### 介绍 微信支付v3版本java后台支付代码 #### 项目起因 1. 看了很久的微信文档整理的java后台代码,微信文档不太清楚,建议要看的先看微信的流程图,再根据流程图找自己需要的 另一方面东西也不少,所以看得很难受。想让同行不要这么痛苦 :smile: :smile: #### 实用人群 1. 想便捷开发微信支付功能的程序员,只要配置springboot的yml文件,就可以使用。不需关心微信里的签名,加解密。 把开发重心放到配置微信支付所需要的的信息中,短时间完成开发。 :laughing: :laughing: #### 使用说明 1. 在searverImpl中写入代码 ```java @Service @Slf4j public class WxPayServiceImpl implements WxPayService { @Autowired private WxPayV3Util wxPayV3Util; @Override public CommonResult unfiedOrder(String openId, Integer produceCode) throws IOException, NoSuchAlgorithmException, InvalidKeyException, SignatureException { /*新的订单号*/ String orderCode = "OE202103261650475709"; // 微信请求 EasyBody easyBody = wxPayV3Util.easyWxPayPost(orderCode, openId, "产品测试名字", //注意微信要的金额单位 (分) new BigDecimal(1)); if (easyBody.getStatusCode() == StatusCode.CODE_SUCCESS.getCode()) { //TODO 以下业务逻辑 // 最后返给前段 return CommonResult.success(easyBody.getPrepayId(), "message"); } else { // 以下业务逻辑 return CommonResult.failed("网络繁忙"); } } @Override public CommonResult notifyWeiXinPayV3(HttpServletRequest request) throws IOException, GeneralSecurityException { EasyNotifyBody easyNotifyBody = wxPayV3Util.easyNotifyWeiXinPayV3(request); if (!easyNotifyBody.isWx()) { //非微信发送 return CommonResult.failed("非微信发送"); } NotifyBody notifyBody = easyNotifyBody.getNotifyBody(); if (notifyBody.getTrade_state().equals(TradeType.TRADETYPE_SUCCESS.getCode())) { //以下支付成功业务逻辑 return null; } else { // 以下支付未成功 return null; } } } ``` 2. 主要函数 #### 下单函数 ```java String orderCode = "OE202103261650475709"; // 微信请求 EasyBody easyBody = wxPayV3Util.easyWxPayPost(orderCode, openId, "产品测试名字", //注意微信要的金额单位 (分) new BigDecimal(1)); ``` #### 微信支付回调接口 ```java EasyNotifyBody easyNotifyBody = wxPayV3Util.easyNotifyWeiXinPayV3(request); ``` #### 特别说明 1. 平台证书,不需要关心,服务启动时会自动获得有用的平台证书,每月自动获取一次。 2. 微信回调接口中不要放及时业务,因为根据网络会延迟。 3. 获取商户证书的官方文档[http]: https://kf.qq.com/faq/161222NneAJf161222U7fARv.html (请务必记得证书保存在自己电脑的位置!!!)