下来讲一下微信公众号的支付,这种微信的支付模式相对于其他两种都相对的简单。
首先,进行正常的下单,获取单号和一下要支付的信息给微信,上代码
public static WeixinPay setRequestXML(OrderPay orderPay,HttpServletRequest request) {
WeixinPay weixinPay = new WeixinPay();
weixinPay.setAppid(appid);
weixinPay.setMch_id(mch_id);
weixinPay.setNotify_url(notify_url);
weixinPay.setNonce_str(nonceStr());//加密字符串,对key进行加密,默认MD5
weixinPay.setOut_trade_no(orderPay.getPayNumber());//商户订单号
weixinPay.setSpbill_create_ip(IPUtil.getRemortIP(request));//ip
int total_fee =Arith.changeY2F(orderPay.getPayment()); //金额,进行分的转化
weixinPay.setTotal_fee(total_fee);
weixinPay.setTrade_type(“NATIVE”);//公众号支付的标志
weixinPay.setBody(“哇哈哈”);//商品或支付单简要描述
weixinPay.setProduct_id(orderPay.getPayNumber());//商品ID
weixinPay.setSign(WxSignUtil.signStr(weixinPay));//签名
WeixinPay weixinPay2 = sendWxPay(weixinPay);//进行验签,传给微信获取参数信息
return weixinPay2;
}
private static WeixinPay sendWxPay(WeixinPay weixinPay){
String paramXml = XmlUtil.objToXml(weixinPay);//转xml
logger.info("微信请求的xml:"+paramXml);
/**https://apihk.mch.weixin.qq.com/pay/unifiedorder (建议接入点:东南亚)
https://apius.mch.weixin.qq.com/pay/unifiedorder (建议接入点:其它)
https://api.mch.weixin.qq.com/pay/unifiedorder (建议接入点:中国国内)**/
String requestURL = “”;//选择上面的路径
TreeMap<String, String> results = HttpUtil.doPostMsiData(requestURL, paramXml);
//这布操作是用来看调用第三方接口是否成功,详细请看之前写的H5支付
if(WxConstants.SUCCESS.equals(results.get(WxConstants.RETURN_CODE))){
if(WxConstants.SUCCESS.equals(results.get(WxConstants.RESULT_CODE))){
if(WxGZHSignUtil.isValidateSign(results)){
weixinPay.setPrepay_id(results.get(WxConstants.PREPAY_ID));//预支付id
weixinPay。setCode_url(results.get(WxConstants.CODE_URL));//二维码,可以通过草料网生成二维码,进行测试
}else{
//验签失败
}
}else{
//在这里输入错误信息
}
}else{
//在这里输入错误信息
}
return weixinPay;
}
到控制层只需要返回就好了,至于回调怎么写如果有需要请看我之前写的jsapi支付即可。
jsapi支付
H5支付
如果发现什么问题,请大家指出,我马上改正,谢谢!