From a3e1aec60d2f886b8c48966c889b567719d0c5ea Mon Sep 17 00:00:00 2001 From: yujian <yujian@123.com> Date: 星期三, 16 十月 2019 16:50:25 +0800 Subject: [PATCH] Merge branch 'div' of ssh://193.112.35.168:29418/fanli-server into div --- utils/src/main/java/org/yeshi/utils/wx/WXPayUtil.java | 106 ++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 89 insertions(+), 17 deletions(-) diff --git a/utils/src/main/java/org/yeshi/utils/wx/WXPayUtil.java b/utils/src/main/java/org/yeshi/utils/wx/WXPayUtil.java index 15006fc..d2878a4 100644 --- a/utils/src/main/java/org/yeshi/utils/wx/WXPayUtil.java +++ b/utils/src/main/java/org/yeshi/utils/wx/WXPayUtil.java @@ -8,6 +8,9 @@ import org.yeshi.utils.HttpUtil; import org.yeshi.utils.StringUtil; import org.yeshi.utils.entity.wx.RedPackParams; +import org.yeshi.utils.entity.wx.WXAPPInfo; +import org.yeshi.utils.entity.wx.WXPlaceOrderParams; +import org.yeshi.utils.exception.WXPlaceOrderParamsException; /** * 寰俊鏀粯甯姪绫� @@ -42,9 +45,9 @@ return null; } - /** * 鍙戞斁寰俊绾㈠寘 + * * @param params * @param pwd * @param cert @@ -54,7 +57,7 @@ // 杞寲鎴愬垎 BigDecimal money = params.getMoney(); money = money.multiply(new BigDecimal(100)).setScale(0, BigDecimal.ROUND_DOWN); - + Map<String, String> map = new HashMap<>(); map.put("nonce_str", StringUtil.getRandomCode(32)); map.put("mch_billno", params.getBillno()); @@ -63,43 +66,46 @@ map.put("send_name", params.getSendName()); map.put("re_openid", params.getOpenid()); map.put("total_amount", money.toString()); - map.put("total_num", params.getTotalNum()+ ""); + map.put("total_num", params.getTotalNum() + ""); map.put("wishing", params.getWishing()); map.put("client_ip", params.getClientIp()); map.put("act_name", params.getActName()); map.put("remark", params.getRemark()); - + if (!StringUtil.isNullOrEmpty(params.getSceneId())) map.put("scene_id", params.getSceneId()); - + if (!StringUtil.isNullOrEmpty(params.getRiskInfo())) map.put("risk_info", params.getRiskInfo()); - + map.put("sign", WXUtil.getSignMD5(map, params.getKey())); String entity = WXUtil.loadWXMessage(map); try { - String result = HttpUtil.httpsPost("https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack", - entity, pwd, cert); + String result = HttpUtil.httpsPost("https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack", entity, + pwd, cert); return result; } catch (Exception e) { e.printStackTrace(); } return null; } - - + /** * 鏌ヨ绾㈠寘棰嗗彇璁板綍 - * @param billno 鍟嗘埛璁㈠崟鍙� - * @param mchId 鍟嗘埛鍙� + * + * @param billno + * 鍟嗘埛璁㈠崟鍙� + * @param mchId + * 鍟嗘埛鍙� * @param key - * @param appId Appid + * @param appId + * Appid * @param pwd * @param cert * @return */ - public static String getRedPackRecord(String billno, String mchId, String appId, String key, - String pwd, InputStream cert) { + public static String getRedPackRecord(String billno, String mchId, String appId, String key, String pwd, + InputStream cert) { Map<String, String> map = new HashMap<>(); map.put("mch_billno", billno); map.put("mch_id", mchId); @@ -109,12 +115,78 @@ map.put("sign", WXUtil.getSignMD5(map, key)); String entity = WXUtil.loadWXMessage(map); try { - String result = HttpUtil.httpsPost("https://api.mch.weixin.qq.com/mmpaymkttransfers/gethbinfo", - entity, pwd, cert); + String result = HttpUtil.httpsPost("https://api.mch.weixin.qq.com/mmpaymkttransfers/gethbinfo", entity, pwd, + cert); return result; } catch (Exception e) { e.printStackTrace(); } return null; } + + /** + * 寰俊鏀粯缁熶竴涓嬪崟 + * + * @param params + * @return + * @throws WXPlaceOrderParamsException + */ + public static Map<String, String> produceOrder(WXPlaceOrderParams params) throws WXPlaceOrderParamsException { + if (params == null) + throw new WXPlaceOrderParamsException(1, "璇蜂紶鍏ヤ笅鍗曞弬鏁�"); + + if (params.getInfo() == null) + throw new WXPlaceOrderParamsException(2, "璇蜂紶鍏ヤ笅鍗曞簲鐢ㄤ俊鎭�"); + + if (StringUtil.isNullOrEmpty(params.getInfo().getAppId())) + throw new WXPlaceOrderParamsException(201, "璇蜂紶鍏ヤ笅鍗曞簲鐢ㄤ俊鎭�-appId"); + if (StringUtil.isNullOrEmpty(params.getInfo().getAppSecret())) + throw new WXPlaceOrderParamsException(202, "璇蜂紶鍏ヤ笅鍗曞簲鐢ㄤ俊鎭�-appSecret"); + if (StringUtil.isNullOrEmpty(params.getInfo().getMchId())) + throw new WXPlaceOrderParamsException(203, "璇蜂紶鍏ヤ笅鍗曞簲鐢ㄤ俊鎭�-mchId"); + if (StringUtil.isNullOrEmpty(params.getInfo().getMchKey())) + throw new WXPlaceOrderParamsException(204, "璇蜂紶鍏ヤ笅鍗曞簲鐢ㄤ俊鎭�-mchKey"); + if (StringUtil.isNullOrEmpty(params.getBody())) + throw new WXPlaceOrderParamsException(3, "璇蜂紶鍏ody"); + + if (StringUtil.isNullOrEmpty(params.getOrderNo())) + throw new WXPlaceOrderParamsException(4, "璇蜂紶鍏rderNo"); + + if (params.getFee() == null) + throw new WXPlaceOrderParamsException(5, "璇蜂紶鍏ee"); + + if (StringUtil.isNullOrEmpty(params.getIp())) + throw new WXPlaceOrderParamsException(6, "璇蜂紶鍏p"); + + if (StringUtil.isNullOrEmpty(params.getNotifyUrl())) + throw new WXPlaceOrderParamsException(7, "璇蜂紶鍏otifyUrl"); + + if (StringUtil.isNullOrEmpty(params.getTradeType())) + throw new WXPlaceOrderParamsException(8, "璇蜂紶鍏radeType"); + +// if (StringUtil.isNullOrEmpty(params.getOpenId())) +// throw new WXPlaceOrderParamsException(9, "璇蜂紶鍏penId"); + + Map<String, String> map = new HashMap<String, String>(); + map.put("appid", params.getInfo().getAppId()); + map.put("mch_id", params.getInfo().getMchId()); + map.put("nonce_str", StringUtil.getRandomCode(32)); + map.put("body", params.getBody()); + map.put("out_trade_no", params.getOrderNo()); + map.put("total_fee", "" + params.getFee().multiply(new BigDecimal(100)).intValue()); + map.put("spbill_create_ip", params.getIp()); + map.put("notify_url", params.getNotifyUrl()); + map.put("trade_type", params.getTradeType()); + if (!StringUtil.isNullOrEmpty(params.getOpenId())) + map.put("openid", params.getOpenId()); + map.put("sign", WXUtil.getSignMD5(map, params.getInfo().getMchKey())); + + String entity = WXUtil.loadWXMessage(map); + + String result = HttpUtil.post("https://api.mch.weixin.qq.com/pay/unifiedorder", entity); + System.out.println("缁熶竴涓嬪崟缁撴灉:" + result); + Map<String, String> resultMap = WXUtil.parseXML(result); + + return resultMap; + } } -- Gitblit v1.8.0