1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > java微信内h5调起支付_java微信支付--------公众号内H5调起支付

java微信内h5调起支付_java微信支付--------公众号内H5调起支付

时间:2022-02-18 02:49:06

相关推荐

java微信内h5调起支付_java微信支付--------公众号内H5调起支付

/*** 统一下单接口,获取prepay_id

*@paramrequest

*@return

*/@RequestMapping(value= "/unifiedOrder", method =RequestMethod.GET)

@ResponseBodypublic MapunifiedOrder(HttpServletRequest request,String openId,String totalFee) {try{//不带properties扩展名的文件名

ResourceBundle wx = ResourceBundle.getBundle("wx");//统一下单https://api.mch./pay/unifiedorder

String unifiedorder_url = "https://api.mch./pay/unifiedorder";//拼接统一下单地址参数

Map paraMap = new HashMap();//获取请求ip地址

String ip = request.getHeader("x-forwarded-for");if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)){

ip= request.getHeader("Proxy-Client-IP");

}if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)){

ip= request.getHeader("WL-Proxy-Client-IP");

}if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)){

ip=request.getRemoteAddr();

}if(ip.indexOf(",")!=-1){

String[] ips= ip.split(",");

ip= ips[0].trim();

}

String appid= wx.getString("wx_appid");

paraMap.put("appid", appid);

paraMap.put("body", "********");

paraMap.put("mch_id", "****");

paraMap.put("nonce_str", WXPayUtil.generateNonceStr());

paraMap.put("openid", openId);

paraMap.put("out_trade_no", new Date().getTime()+"");//订单号

paraMap.put("spbill_create_ip", ip);

paraMap.put("total_fee",totalFee);

paraMap.put("trade_type", "JSAPI");

paraMap.put("notify_url",wx.getString("red_url") + "/callback.do");//此路径是微信服务器调用支付结果通知路径随意写

String sign = WXPayUtil.generateSignature(paraMap, "********");

paraMap.put("sign", sign);

String xml= WXPayUtil.mapToXml(paraMap);//将所有参数(map)转xml格式

System.out.println(xml);

String xmlStr= wxMpService.post(unifiedorder_url, xml); //发送post请求"统一下单接口"返回预支付id:prepay_id//以下内容是返回前端页面的json数据

String prepay_id = "";//预支付id

if (xmlStr.indexOf("SUCCESS") != -1) {

Map map =WXPayUtil.xmlToMap(xmlStr);

prepay_id= (String) map.get("prepay_id");

}

Map payMap = new HashMap();

payMap.put("appId", appid);

payMap.put("timeStamp", WXPayUtil.getCurrentTimestamp()+"");

payMap.put("nonceStr", WXPayUtil.generateNonceStr());

payMap.put("signType", "MD5");

payMap.put("package", "prepay_id=" +prepay_id);

String paySign= WXPayUtil.generateSignature(payMap, "*******");

payMap.put("paySign", paySign);

String xml2= WXPayUtil.mapToXml(payMap);//将所有参数(map)转xml格式

System.out.println(xml2);returnpayMap;

}catch(Exception e) {

e.printStackTrace();return null;

}

}

@RequestMapping(value="/callback",method=RequestMethod.GET)publicString callBack(HttpServletRequest request,HttpServletResponse response){//System.out.println("微信支付成功,微信发送的callback信息,请注意修改订单信息");

InputStream is = null;try{

is= request.getInputStream();//获取请求的流信息(这里是微信发的xml格式所有只能使用流来读)

String xml = WXPayUtil.inputStream2String(is, "UTF-8");

Map notifyMap = WXPayUtil.xmlToMap(xml);//将微信发的xml转map

if(notifyMap.get("return_code").equals("SUCCESS")){//支付成功

}//告诉微信服务器收到信息了,不要在调用回调action了========这里很重要回复微信服务器信息用流发送一个xml即可

response.getWriter().write("");

is.close();

}catch(Exception e) {

e.printStackTrace();

}return null;

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。