微信公众号h5页面支付(MWEB)

news/2024/11/19 11:33:34/
/*** 官微-分期支付接口(h5页面支付)** @param request* @param response*/@SuppressWarnings("unchecked")@ResponseBody@RequestMapping(value = "/wxWapPrePayH5", method = RequestMethod.POST)public Map<String, Object> wxWapPrePayH5(HttpServletRequest request, HttpServletResponse response) throws ApplicationException {logger.info("wxWapPrePay start");Map<String, Object> resultMap = new HashMap<String, Object>();String number = request.getParameter("number");String count = request.getParameter("count");// 获取合同分期ContDto contDto = contBaseService.getContractByNumber(number);if (null == contDto) {resultMap.put("success", false);resultMap.put("code", "1");resultMap.put("body", null);resultMap.put("msg", "合同分期不存在");return resultMap;}String price = String.valueOf(contDto.installmentEachAmount);int price100 = new BigDecimal(price).multiply(new BigDecimal(100)).intValue();if (price100 <= 0) {resultMap.put("success", false);resultMap.put("code", "2");resultMap.put("body", null);resultMap.put("msg", "还款金额错误");return resultMap;}// 设置回调地址String notify_url = "回调地址";//用合同编号+期数+随机时间戳,生成唯一订单号String numberCount = number + count + "_" +System.currentTimeMillis();SortedMap<Object, Object> parameters = new TreeMap<Object, Object>();parameters.put("appid", ConfigUtil.WAP_APPID);parameters.put("mch_id", ConfigUtil.WAP_MCH_ID);parameters.put("nonce_str", PayCommonUtil.CreateNoncestr());parameters.put("body", "分期账单-还款支付");parameters.put("out_trade_no", numberCount); // 订单号parameters.put("fee_type", "CNY");parameters.put("total_fee", String.valueOf(price100));parameters.put("spbill_create_ip", CommonUtil.getIpAddress(request));parameters.put("notify_url", notify_url);parameters.put("trade_type", "MWEB");// openid需要获取
//        String openid = request.getParameter("openid");
//        parameters.put("openid", openid);parameters.put("scene_info","{'h5_info':{'type':'Wap','wap_url':'http://www.lizhenauto.com','wap_name':'利真延保'}}");// 设置签名// parameters.put("referer","http://www.lizhenauto.com");logger.info("得到的集合是-----------" + parameters.toString());String sign = PayCommonUtil.createWapSign("UTF-8", parameters);parameters.put("sign", sign);// 封装请求参数结束String requestXML = PayCommonUtil.getRequestXml(parameters);logger.info("requestXML:" + requestXML);// 调用统一下单接口String result = PayCommonUtil.httpsRequest(ConfigUtil.UNIFIED_ORDER_URL, "POST", requestXML);logger.info("\n" + result);String mweb_url = null;try {/** 统一下单接口返回正常的prepay_id,再按签名规范重新生成签名后,将数据传输给APP。参与签名的字段名为appId,partnerId,prepayId,nonceStr,timeStamp,package。注意:package的值格式为Sign=WXPay **/Map<String, String> map = XMLUtil.doXMLParse(result);String resultCode = map.get("result_code");if ("FAIL".equals(resultCode)) {if ("201 合同编号重复".equals(map.get("err_code_des"))) {resultMap.put("success", false);resultMap.put("code", "201");resultMap.put("body", null);resultMap.put("msg", "合同编号重复");return resultMap;}}logger.info(" map " + map.toString());String returnCode = map.get("return_code");if (returnCode.equals("SUCCESS") && resultCode.equals("SUCCESS")) {mweb_url = map.get("mweb_url");} else {resultMap.put("success", false);resultMap.put("code", "200");// 请求成功resultMap.put("body", null);resultMap.put("msg", "微信支付失败");return resultMap;}resultMap.put("success", true);resultMap.put("code", "200");// 请求成功resultMap.put("body", mweb_url);resultMap.put("msg", "微信支付成功,等待支付");} catch (JDOMException e) {resultMap.put("success", false);resultMap.put("code", "500");// 请求失败resultMap.put("body", null);resultMap.put("msg", "微信支付失败,请重试");logger.error(e.toString());} catch (IOException e) {resultMap.put("success", false);resultMap.put("code", "500");// 请求失败resultMap.put("body", null);resultMap.put("msg", "微信支付失败,请重试");logger.error(e.toString());}return resultMap;}

http://www.ppmy.cn/news/161776.html

相关文章

H5是什么?

自从从事于前端开发之后&#xff0c;总有朋友问我是做什么的&#xff0c;通俗的说&#xff0c;做H5的&#xff0c;然后闲时&#xff0c;坐车&#xff0c;吃饭&#xff0c;聚会&#xff0c;总会聊到工作&#xff0c;恩&#xff0c;h5&#xff0c;对方一脸懵逼的时候&#xff0c;…

H5微信公众号开发,微信支付

&#xff08;如需完整代码,开发遇到什么问题&#xff0c;可与本人联系&#xff0c;代码给大家下载并帮你解决问题&#xff0c;微信号&#xff1a;1131237188&#xff09; 1.公众号开发&#xff0c;首先需要微信公众号的appId,secret 相当于账号密码 2.到公众号后台配置域名&a…

H5的基础

网页的学名称作 HTML 文件&#xff0c;是一种可以在 www 网上传输&#xff0c;并被浏览器认识和翻译成页面显示出来的文件。 HTML是&#xff1a; Hypertext Marked Language 即超文本标记语言&#xff0c;是一种用来制作超文本文档的简单标记语言 超文本就是指页面内可以包含…

微信H5支付功能开发

本文介绍的是微信H5支付功能开发&#xff0c;也就是在微信之外的H5页面支付。 首先我们需要先看微信的官方文档https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter15_1&#xff0c;这里面几乎介绍了全部流程了。等你了解大概流程之后&#xff0c;需要在微信公众平台和微…

公众号H5微信生态

做个近期微信生态的总结 所有的前提是在微信公众平台 登录对应的微信公众号 公众号上配置对应的h5域名。 包括支付 分享等&#xff08;可自行百度 很多这种教程 官方文档也有搜索微信支付配置 里面有公众号配置等&#xff09; 首先是微信授权。主要拿用户的openId 进行支付操…

H5和HTML5的区别

注意注意&#xff1a;H5不HTML5 H5 是一个产品名词 HTML5是一个技术名词 对于知乎多个相关问题里批判H5的叫法&#xff0c;我只想说&#xff1a;图样图森破&#xff0c;上台拿衣服 打个比方&#xff0c;如果有个人跟你说&#xff1a;“我要做个网站&#xff0c;H5的”。 那TA是…

H5,Audio音乐播放器(移动版)

有些时候&#xff0c;总是感觉自己进步的没有以前快了。于是就怀疑自己是不是也被时间磨灭了&#xff0c;这可真是一件不幸的事儿。可能是自己会的东西太少了&#xff0c;总是有种莫名的危机感。 前一段时间&#xff0c;想写一个移动版音乐播放器&#xff0c;于是就开始利用下班…

微信H5开发(一)

H5开发&#xff0c;一般是指移动端的页面开发。移动端可分为app和普通浏览页面。从嵌入的环境来归类&#xff1a;可以分为app、微信H5及手机浏览器里面打开的页面。 以前粗略的涉略过h5开发的一些知识&#xff0c;感觉H5并不是很难。在这半年内&#xff0c;接手并完成了两个微…