青岛公司做网站_青海网站建设哪个最好_设计网站大全软件_工商网查询营业执照

凡科微传单app软件下载

太原有网站工程公司吗、做个免费的网站、永久使用、不限域名、重庆市建设工程信息网官网30系统

石家庄做网站建设?

青岛公司做网站_青海网站建设哪个最好_设计网站大全软件_工商网查询营业执照

public class PayController {@Resourceprivate WechatPayConfig wechatPayConfig;@Resourceprivate WechatPayRequest wechatPayRequest;/*** 无需应答签名*/@Resourceprivate CloseableHttpClient wxPayNoSignClient;/*** type:h5、jsapi、app、native、sub_jsapi* @param type* @return*/@ApiOperation(value = "统一下单-统一接口", notes = "统一下单-统一接口")@ApiOperationSupport(order = 10)@GetMapping("/transactions")public Map<String,Object> transactions(String type) {log.info("统一下单API,支付方式:{}",type);// 统一参数封装Map<String, Object> params = new HashMap<>(8);params.put("appid", wechatPayConfig.getAppId());params.put("mchid", wechatPayConfig.getMchId());params.put("description", "测试商品");int outTradeNo = new Random().nextInt(999999999);params.put("out_trade_no", outTradeNo + "");params.put("notify_url", wechatPayConfig.getNotifyUrl());Map<String, Object> amountMap = new HashMap<>(4);// 金额单位为分amountMap.put("total", 1);amountMap.put("currency", "CNY");params.put("amount", amountMap);// 场景信息Map<String, Object> sceneInfoMap = new HashMap<>(4);// 客户端IPsceneInfoMap.put("payer_client_ip", "127.0.0.1");// 商户端设备号(门店号或收银设备ID)sceneInfoMap.put("device_id", "127.0.0.1");// 除H5与JSAPI有特殊参数外,其他的支付方式都一样if (type.equals(WechatPayUrlEnum.H5.getType())) {Map<String, Object> h5InfoMap = new HashMap<>(4);// 场景类型:iOS, Android, Waph5InfoMap.put("type", "IOS");sceneInfoMap.put("h5_info", h5InfoMap);} else if (type.equals(WechatPayUrlEnum.JSAPI.getType()) || type.equals(WechatPayUrlEnum.SUB_JSAPI.getType())) {Map<String, Object> payerMap = new HashMap<>(4);payerMap.put("openid", "123123123");params.put("payer", payerMap);}params.put("scene_info", sceneInfoMap);String paramsStr = JSON.toJSONString(params);log.info("请求参数 ===> {}" + paramsStr);// 重写type值,因为小程序会多一个下划线(sub_type)String[] split = type.split("_");String newType = split[split.length - 1];String resStr = wechatPayRequest.wechatHttpPost(wechatPayConfig.getBaseUrl().concat(WechatPayUrlEnum.PAY_TRANSACTIONS.getType().concat(newType)), paramsStr);Map<String, Object> resMap = JSONObject.parseObject(resStr, new TypeReference<Map<String, Object>>(){});Map<String, Object> signMap = paySignMsg(resMap, type);resMap.put("type",type);resMap.put("signMap",signMap);return resMap;}private Map<String, Object> paySignMsg(Map<String, Object> map,String type){// 设置签名信息,Native与H5不需要if(type.equals(WechatPayUrlEnum.H5.getType()) || type.equals(WechatPayUrlEnum.NATIVE.getType()) ){return null;}long timeMillis = System.currentTimeMillis();String appId = wechatPayConfig.getAppId();String timeStamp = timeMillis/1000+"";String nonceStr = timeMillis+"";String prepayId = map.get("prepay_id").toString();String packageStr = "prepay_id="+prepayId;// 公共参数Map<String, Object> resMap = new HashMap<>();resMap.put("nonceStr",nonceStr);resMap.put("timeStamp",timeStamp);// JSAPI、SUB_JSAPI(小程序)if(type.equals(WechatPayUrlEnum.JSAPI.getType()) || type.equals(WechatPayUrlEnum.SUB_JSAPI.getType()) ) {resMap.put("appId",appId);resMap.put("package", packageStr);// 使用字段appId、timeStamp、nonceStr、package进行签名String paySign = createSign(resMap);resMap.put("paySign", paySign);resMap.put("signType", "HMAC-SHA256");}// APPif(type.equals(WechatPayUrlEnum.APP.getType())) {resMap.put("appid",appId);resMap.put("prepayid", prepayId);// 使用字段appId、timeStamp、nonceStr、prepayId进行签名String sign = createSign(resMap);resMap.put("package", "Sign=WXPay");resMap.put("partnerid", wechatPayConfig.getMchId());resMap.put("sign", sign);resMap.put("signType", "HMAC-SHA256");}return resMap;}/*** 获取加密数据*/private String createSign(Map<String, Object> params){try {Map<String, Object> treeMap = new TreeMap<>(params);List<String> signList = new ArrayList<>(5);for (Map.Entry<String, Object> entry : treeMap.entrySet()){signList.add(entry.getKey() + "=" + entry.getValue());}String signStr = String.join("&", signList);signStr = signStr+"&key="+wechatPayConfig.getApiV3Key();System.out.println(signStr);Mac sha = Mac.getInstance("HmacSHA256");SecretKeySpec secretKey = new SecretKeySpec(wechatPayConfig.getApiV3Key().getBytes(StandardCharsets.UTF_8), "HmacSHA256");sha.init(secretKey);byte[] array = sha.doFinal(signStr.getBytes(StandardCharsets.UTF_8));StringBuilder sb = new StringBuilder();for (byte item : array) {sb.append(Integer.toHexString((item & 0xFF) | 0x100), 1, 3);}signStr = sb.toString().toUpperCase();System.out.println(signStr);return signStr;}catch (Exception e){throw new RuntimeException("加密失败!");}} 网页制作与网站设计代码河南省人民政府网济南高端建站网址的域名桂林漓江广告网络营销网站建设业务范围全网品牌推广企业基于微信公众号开发网站备案查询官网入口永久免费vps服务器企业网站开发一薇运动品牌网页设计郑州全平台广告推广官网优化哪家专业网页设计毕业论文总结天元建设集团有限公司招聘室内设计案例分析pptjavascript中国免费山东济南疫情最新消息网站设计实验目的看网站不受限制的浏览器如何把自己的产品放到网上卖甘肃网站建设专业品牌橙子建站工具巢湖自助建站系统比亚迪新能源汽车新款上海有哪些网络公司重庆建筑人才网官网网页游戏源代码免费库存管理软件推荐

猜你喜欢

  • 友情链接:
  • 做效果图网上怎么找客户 外贸公司网站怎么做 沈阳男科医院在线咨询免费 网站建设做网站怎么做 怎样制作软件开发 企业移动网站建设