java中网页Native微信支付要点总结「终于解决」

java中网页Native微信支付要点总结「终于解决」//todo 发送 POST 请求 统一下单 API 并携带 xmlBody 内容,然后获得返回接口结果。注意:回调方法Controller层接

欢迎大家来到IT世界,在知识的湖畔探索吧!

一、首先申请认证微信公众号获得微信支付功能

二、从微信商户后台获得三个参数,APPID,MCH_ID(商户id),API_KEY(API密钥)

java中网页Native微信支付要点总结「终于解决」

三、同时在微信商户后台,开通Native支付功能,开通后才可以用微信网页支付功能

java中网页Native微信支付要点总结「终于解决」

四、配置Native支付回调链接地址:

java中网页Native微信支付要点总结「终于解决」

五、得到一些工具类,如签名,可以到微信开发平台获得

六、生成微信支付二维码

java中网页Native微信支付要点总结「终于解决」

@RequestMapping(value = “/createNative”)

public Map<String, String> createNative(@RequestParam(“outTradeNo”) String outTradeNo,

@RequestParam(“totalFee”) String totalFee,

HttpServletRequest request, HttpServletResponse response) {

try {

//todo 创建请求参数

SortedMap<String, String> req = new TreeMap<String, String>();

req.put(“appid”, ConfigUtil.APPID); //公众号

req.put(“mch_id”, ConfigUtil.MCH_ID); // 商户号

req.put(“nonce_str”, WXPayUtil.generateNonceStr()); // 32位随机字符串

req.put(“body”, “梦商城”); // 商品描述

req.put(“out_trade_no”, outTradeNo); // 商户订单号

req.put(“total_fee”, df.format(Double.parseDouble(totalFee) * 100)); // 标价金额(分)

req.put(“spbill_create_ip”, CommonUtil.getIp(request)); // 终端IP

req.put(“notify_url”, “http://xxx.com/weixin_notify.shtml”); // 回调地址

req.put(“trade_type”, “NATIVE”); // 交易类型

req.put(“sign”, WXPayUtil.generateSignature(req, ConfigUtil.API_KEY, WXPayConstants.SignType.MD5)); // 签名

//todo 生成要发送的 xml

String xmlBody = WXPayUtil.generateSignedXml(req, ConfigUtil.API_KEY);

System.err.println(String.format(“微信支付预下单请求 xml 格式:\n%s”, xmlBody));

//todo 发送 POST 请求 统一下单 API 并携带 xmlBody 内容,然后获得返回接口结果

String result = CommonUtil.httpsRequest(“https://api.mch.weixin.qq.com/pay/unifiedorder”, “POST”, xmlBody);

System.err.println(String.format(“%s”, result));

//todo 将返回结果从 xml 格式转换为 map 格式

Map<String, String> resultMap = WXPayUtil.xmlToMap(result);

Map<String, String> map = new HashMap<>();

map.put(“code_url”, resultMap.get(“code_url”)); // 支付地址

map.put(“total_fee”, totalFee); // 总金额

map.put(“out_trade_no”, outTradeNo); // 订单号

logger.info(“weixinzhifujson=”+String.format(“%s”, map));

return map;

} catch (Exception e) {

e.printStackTrace();

return null;

}

}

五、前端 接口调用生成二维码的方法,

需要引入 <script type=”text/javascript” src=”../js/qrcode.min.js”></script>

java中网页Native微信支付要点总结「终于解决」

function weixinzhifu() {

$(“#qrcode”).html(”);

// 跳转支付

var orderNo = $(“input[name=’orderNo’]”).val();

var money = $(“input[name=’money’]”).val();

var shopName = $(“input[name=’shopName’]”).val();

if(money==”0.00″){

alert(money)

updateOrder();

}

$.ajax({

url : “../WeiXinPay/createNative.shtml”,// 路径

type : “POST”,// 发送方式

data : {

“outTradeNo”:orderNo,”totalFee”:money,”shopName”:shopName

},

async : false,

dataType : “json”,

// contentType: “charset=utf-8”,

//cache : false,

success : function(result) {

var res = result;

console.log(res);

//alert(res[‘code_url’]);

new QRCode(document.getElementById(“qrcode”), res[‘code_url’]);

}

});

}

六、调取微信支付收银台界面

java中网页Native微信支付要点总结「终于解决」

七、微信支付成功后回调方法

注意:回调方法Controller层接收必须支持get和post请求,否则回调地址进不了该方法。

@RequestMapping(value = “/weixin_notify”, method = { RequestMethod.GET, RequestMethod.POST })

java中网页Native微信支付要点总结「终于解决」

八、前端页面每2秒轮询查询订单是否成功方法,如成功就返回成功支付的页面。

<script>

var iCount = setInterval(checkOrder, 2000); //每隔2秒执行一次check函数。

function checkOrder(){

var orderNo=$(“#orderNo”).val();

$.ajax({

url : “../get_weixin_orderstatus.shtml”,// 路径

type: “POST”,

dataType: “json”,

data: {

“orderNo”:orderNo

},

success: function (data) {

// console.log(data.status);

console.log(data);

if(data.status==0){

window.location.href = ‘/step4_Jump.shtml’;

}

else{

}

}

})

}

</script>

九、轮询查询支付成功后,显示订单支付成功的页面

java中网页Native微信支付要点总结「终于解决」

以上是JAVA开发网页微信支付流程的整个过程,后续会写JAVA网页支付宝支付要点,欢迎交流。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/17589.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信