微信支付功能--PC端生成二维码,实现扫描支付功能
生成微信支付二维码如下:
public static String getQrocdePay(String notifyUrl,String productName,String orderNum,Double price,String ipLocal) throws Exception{
String url = "";
//金额转为分单位
Double expandPrice = price*100;
//转int类型
Integer totalFee = expandPrice.intValue();
//生成签名
String timeStamp = Sha1Util.getTimeStamp();
TreeMap<Object, Object> packageParams = new TreeMap<Object, Object>();
packageParams.put("appid",WeChatConfig.APP_ID);
packageParams.put("mch_id",WeChatConfig.PARTNER);//设置商户号
packageParams.put("nonce_str",Sha1Util.getNonceStr());
packageParams.put("time_stamp",timeStamp);//时间戳
packageParams.put("out_trade_no", orderNum); //商户订单号
packageParams.put("body", productName); //商品描述
packageParams.put("fee_type","CNY"); //银行币种
packageParams.put("total_fee", totalFee); //商品总金额,以分为单位
packageParams.put("spbill_create_ip",ipLocal); //订单生成的机器IP,指用户浏览器端IP
packageParams.put("notify_url", notifyUrl); //通知地址
packageParams.put("trade_type", "NATIVE"); //交易类型 JSAPI--公众号支付、NATIVE--原生扫码支付、APP--app支付,统一下单接口trade_type的传参可参考这里
//调用获取订单接口,并返回相关参数
try {
String str = WXPrepay.QRcodePay(packageParams);
if(str!=null){
url = TenpayUtil.QRfromOSchina(str);
}
} catch (Exception e) {
e.printStackTrace();
}
return url;
}
详细请查看附件中的WXUnifiedOrderUtil.java 文件,此文件只供参考,不可以直接使用。
业务流程时序图
业务流程说明:
(1)商户后台系统根据用户选购的商品生成订单。
(2)用户确认支付后调用微信支付【统一下单API】生成预支付交易;
(3)微信支付系统收到请求后生成预支付交易单,并返回交易会话的二维码链接code_url。
(4)商户后台系统根据返回的code_url生成二维码。
(5)用户打开微信“扫一扫”扫描二维码,微信客户端将扫码内容发送到微信支付系统。
(6)微信支付系统收到客户端请求,验证链接有效性后发起用户支付,要求用户授权。
(7)用户在微信客户端输入密码,确认支付后,微信客户端提交授权。
(8)微信支付系统根据用户授权完成支付交易。
(9)微信支付系统完成支付交易后给微信客户端返回交易结果,并将交易结果通过短信、微信消息提示用户。微信客户端展示支付交易结果页面。
(10)微信支付系统通过发送异步消息通知商户后台系统支付结果。商户后台系统需回复接收情况,通知微信后台系统不再发送该单的支付通知。
(11)未收到支付通知的情况,商户后台系统调用【查询订单API】。
(12)商户确认订单已支付后给用户发货。
二维码相关知识
二维码背景知识介绍:
http://www.thonky.com/qr-code-tutorial/
http://coolshell.cn/articles/10590.html
版权所属:SO JSON在线解析
原文地址:https://www.sojson.com/blog/180.html
转载时必须以链接形式注明原始出处及本声明。
如果本文对你有帮助,那么请你赞助我,让我更有激情的写下去,帮助更多的人。