h5调微信支付 unkonw url_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.weixin.qq.com/pay/unifiedorder

String unifiedorder_url = "https://api.mch.weixin.qq.com/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;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值