微信公众号支付插件一闪而过


调起支付控件后一闪而过,一般是支付秘钥或者授权目录的问题。

解决办法:

1.重置支付秘钥(更换服务器地址必须更换)

2.检查授权目录

//支付中间业页 Lock-玄清 @RequestMapping("wap/wxp.html") public ModelAndView wxp(long orderid,HttpServletRequest request){ ModelAndView mv = new ModelAndView(); request.getSession().setAttribute("orderid", orderid); Orders orders = orderService.findBydetail(orderid); mv.addObject("orderid", orders.getId()); return mv; } //授权成功后用code换取openId @RequestMapping("wap/oauth.html") public ModelAndView oauth(HttpServletRequest request){ ModelAndView mv = new ModelAndView(); String code = request.getParameter("code");//Code,授权成功就存在该值 String token_url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid="+WxPayConfig.APPID+"&secret="+WxPayConfig.APPSECRET+"&code="+code+"&grant_type=authorization_code"; JSONObject jsonObject = CommonUtil.httpsRequestToJsonObject(token_url, "POST", null); logger.info("jsonObject:"+jsonObject); Object errorCode = jsonObject.get("errcode"); if(errorCode != null) { logger.info("code不合法"); }else{ String openId = jsonObject.getString("openid"); AuthUser wxUser = new AuthUser(); wxUser.setAccess_token(jsonObject.getString("access_token")); wxUser.setOpenid(jsonObject.getString("openid")); request.getSession().setAttribute("AuthUser", wxUser); logger.info(wxUser); logger.info("openId:"+openId); request.getSession().setAttribute("openId", openId); } long orderid = (long)request.getSession().getAttribute("orderid"); logger.info(orderid); mv.addObject("orderid", orderid); return mv; } /** * 支付方法 Lock-玄清 * @param orderid * @param request * @return */ @SuppressWarnings("unchecked") @ResponseBody @RequestMapping("wxpay/wxPay.html") public AjaxMessage<Object> wxpay(long orderid,HttpServletRequest request){ AjaxMessage<Object> ajax = new AjaxMessage<>(); logger.info("微信公众号支付 发起支付 jsapi h5"); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); Date date = new Date(); // 订单查询 Orders orders = orderService.selectByKey(orderid); logger.info(orders); //获取openID String openid = (String)request.getSession().getAttribute("openId"); try { //用户ip String user_ip = ZhifuController.localIp(); //创建随机数 String nonceStr = getNonceStr(); //统一订单发送参数 WxPaySendData data = new WxPaySendData(); data.setAppid(WxPayConfig.APPID); data.setAttach("上海葵鸿数码科技有限公司"); data.setBody("在线购物"); data.setMch_id(WxPayConfig.MCHID); data.setNonce_str(nonceStr); data.setNotify_url(WxPayConfig.wap_NOTIFY_URL); data.setOut_trade_no(orders.getOrderid().toString()); data.setTotal_fee((int)(orders.getPrice()*100));//单位:分 data.setTrade_type("JSAPI"); data.setSpbill_create_ip(user_ip); data.setOpenid(openid); data.setTime_start(sdf.format(date)); String result = unifiedorder(data, WxPayConfig.KEY); Map<String, String> map = new HashMap<String, String>(); try { map = ZhifuController.doXMLParse(result); logger.info(map+"lock-玄清"); logger.info("微信jsapi------------------return_code="+map.get("return_code")+"; result_code="+map.get("result_code")+"------------------------------"); } catch (Exception e) { logger.error("doXMLParse()--error",e); } if(map.get("return_code").toString().equals("SUCCESS") && map.get("result_code").toString().equals("SUCCESS")){ ajax.setIs(true); logger.info(map.get("prepay_id")); logger.info(map.get("prepay_id").toString()); //生成sign SortedMap<Object,Object> signMap = new TreeMap<Object,Object>(); signMap.put("appId", WxPayConfig.APPID); signMap.put("timeStamp", getTimeStamp()); signMap.put("nonceStr", nonceStr); signMap.put("package", "prepay_id="+map.get("prepay_id").toString()); signMap.put("signType", "MD5"); String paySin = createSign(signMap,WxPayConfig.KEY); logger.info("生成的签名PaySIGN:"+paySin); SignMap signMap1 = new SignMap(); logger.info(WxPayConfig.APPID); signMap1.setAppid(WxPayConfig.APPID); signMap1.setTimeStamp(getTimeStamp()); logger.info("时间戳为:"+getTimeStamp()); signMap1.setNonceStr(nonceStr); logger.info(nonceStr); signMap1.setPackageValue("prepay_id="+map.get("prepay_id").toString()); signMap1.setSignType("MD5"); logger.info("MD5"); signMap1.setPaySign(paySin); logger.info("生成的签名PaySIGN:"+paySin); logger.info(signMap1); ajax.setData(signMap1); }else{ ajax.setIs(false); } }catch (Exception e){ e.printStackTrace(); logger.error("微信支付错误",e); ajax.setIs(false); } return ajax; }
此时微信中配置的支付授权目录为:域名/wap,而不是:域名/wxpay



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值