赵冬冬 4 жил өмнө
parent
commit
fb9ef62f69

+ 5 - 1
UtilsDemo-WX/pom.xml

@@ -36,7 +36,11 @@
             <version>3.10</version>
         </dependency>
 
-
+        <dependency>
+            <groupId>javax.xml.bind</groupId>
+            <artifactId>jaxb-api</artifactId>
+            <version>2.3.0</version>
+        </dependency>
         <!-- weixin-java-mp -->
         <dependency>
             <groupId>com.github.binarywang</groupId>

+ 114 - 0
UtilsDemo-WX/src/main/java/com/example/controller/WechatH5PayController.java

@@ -12,6 +12,8 @@ import com.example.util.RedisUtil;
 import com.example.util.UUIDUtils;
 import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult;
 import com.github.binarywang.wxpay.bean.notify.WxPayRefundNotifyResult;
+import com.github.binarywang.wxpay.bean.request.WxPayAuthcode2OpenidRequest;
+import com.github.binarywang.wxpay.bean.request.WxPayMicropayRequest;
 import com.github.binarywang.wxpay.bean.request.WxPayRefundRequest;
 import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest;
 import com.github.binarywang.wxpay.bean.result.WxPayOrderQueryResult;
@@ -334,5 +336,117 @@ public class WechatH5PayController extends BaseController {
         return responseSuccess(new ResultVO());
     }
 
+    @PostMapping("/pay/native")
+    public ResponseBase payNative(@RequestBody WxPayFrom wxPayFrom, HttpServletRequest request) {
+//        String orderId = wxPayFrom.getOrderId();
+//        String openid = wxPayFrom.getOpenid();
+        String tradeType = wxPayFrom.getTradeType();
+
+        WxPayUnifiedOrderRequest orderRequest = new WxPayUnifiedOrderRequest();
+        //商品id
+        orderRequest.setProductId("001");
+        //随机字符串
+        String s = UUIDUtils.randomUUID();
+
+        orderRequest.setNonceStr(s);
+        //商品描述
+        String productName = "测试商品";
+        orderRequest.setBody(productName);
+        //商户订单号(支付编号)
+        GeneratorIdUtils generatorIdUtils = new GeneratorIdUtils();
+        String orderNum = generatorIdUtils.nextId();
+        log.info("OutTradeNo:" + orderNum);
+        //设置商户订单号
+        orderRequest.setOutTradeNo(orderNum);
+        //设置金额
+        //data.getTotalPrice();
+        BigDecimal money = new BigDecimal("1");
+        //元转成分
+        money = money.multiply(new BigDecimal(100));
+        int i = money.intValue();
+        if ("test".equals(tradeType)) {
+            //测试环境一分钱
+            orderRequest.setTotalFee(1);
+        } else {
+            orderRequest.setTotalFee(i);
+        }
+        //终端ip
+        String ipAddress = getIpAddress(request);
+        orderRequest.setSpbillCreateIp(ipAddress);
+        // 通知地址 支付成功后回调地址
+        log.info("wxpayCallbackUrl=================>{}", wxpayCallbackUrl);
+        orderRequest.setNotifyUrl(wxpayCallbackUrl);
+        //交易类型
+        orderRequest.setTradeType(WxPayConstants.TradeType.NATIVE);
+        Object unOrder = null;
+        try {
+            unOrder = wxPayService.createOrder(orderRequest);
+        } catch (WxPayException e) {
+            //e.printStackTrace();
+            log.error(e.getMessage());
+            //签名完成新增支付订单
+            return responseError(500, "微信支付失败");
+        }
+        //更新本地订单支付id
+        //orderClient.update(data);
+
+        //签名完成新增支付订单
+        return responseSuccess(new ResultVO(ResultEnum.SUCCESS, unOrder));
+    }
+
+    @PostMapping("/pay/authcode")
+    public ResponseBase payauthcode(@RequestBody WxPayFrom wxPayFrom, HttpServletRequest request) {
+        //测试支付
+        String tradeType = wxPayFrom.getTradeType();
+        //付款码
+        String authCode = wxPayFrom.getAuthCode();
+        WxPayMicropayRequest orderRequest = new WxPayMicropayRequest();
+        orderRequest.setAuthCode(authCode);
+        //随机字符串
+        String s = UUIDUtils.randomUUID();
+        orderRequest.setNonceStr(s);
+        //商品描述
+        orderRequest.setBody("测试商品!");
+        //商户订单号(支付编号)
+        GeneratorIdUtils generatorIdUtils = new GeneratorIdUtils();
+        String orderNum = generatorIdUtils.nextId();
+        log.info("OutTradeNo:" + orderNum);
+        //设置商户订单号
+        orderRequest.setOutTradeNo(orderNum);
+        //商户订单号(支付编号)
+        //设置金额
+        //data.getTotalPrice();
+        BigDecimal money = new BigDecimal("1");
+        //元转成分
+        money = money.multiply(new BigDecimal(100));
+        int i = money.intValue();
+        if ("test".equals(tradeType)) {
+            //测试环境一分钱
+            orderRequest.setTotalFee(1);
+        } else {
+            orderRequest.setTotalFee(i);
+        }
+        //终端ip
+        String ipAddress = getIpAddress(request);
+        orderRequest.setSpbillCreateIp(ipAddress);
+        // 通知地址 支付成功后回调地址
+        log.info("wxpayCallbackUrl=================>{}", wxpayCallbackUrl);
+        //交易类型
+        Object unOrder = null;
+        try {
+            unOrder = wxPayService.micropay(orderRequest);
+        } catch (WxPayException e) {
+            //e.printStackTrace();
+            log.error(e.getMessage());
+            //签名完成新增支付订单
+            return responseError(500, "微信支付失败");
+        }
+        //更新本地订单支付id
+        //orderClient.update(data);
+
+        //签名完成新增支付订单
+        return responseSuccess(new ResultVO(ResultEnum.SUCCESS, unOrder));
+    }
+
 
 }

+ 3 - 0
UtilsDemo-WX/src/main/java/com/example/entity/WxPayFrom.java

@@ -16,4 +16,7 @@ public class WxPayFrom {
     @ApiModelProperty("是否开启测试一分钱 test一分钱 空 原价支付")
     private String tradeType;
 
+    @ApiModelProperty("微信条码")
+    private String authCode;
+
 }

+ 1 - 1
UtilsDemo-WX/src/main/java/com/example/filter/AuthGlobalFilter.java

@@ -26,7 +26,7 @@ public class AuthGlobalFilter implements WebMvcConfigurer {
                 "/wechat/h5/userInfo",
                 "/app/getJsapiTicket",
                 "/wechat/h5/code/{tel}",
-                "/app/payResult",
+                "/app/**",
                 "/app/refundResult",
                 "/**/*.html",            //html静态资源
                 "/swagger-ui.html",