java实现微信扫码支付功能
本文实例为大家分享了java实现微信扫码支付的具体代码,供大家参考,具体内容如下
1、maven项目的pom.xml中添加如下jar包:
com.github.wxpay wxpay-sdk 0.0.3
2、编写WeWxConfig类:
packagecom.xx.wxpay; importcom.github.wxpay.sdk.WXPayConfig; importorg.springframework.beans.factory.annotation.Value; importorg.springframework.stereotype.Component; importjava.io.InputStream; /** *描述:微信支付配置信息 * *@authorssl *@create2018/04/2419:25 */ @Component publicclassWeWxConfigimplementsWXPayConfig{ @Value("${wechat.public.appid}") privateStringappId; @Value("${wechat.merchant}") privateStringmchId; @Value("${wechat.public.apikey}") privateStringapiKey; /** *公众账号ID:微信支付分配的公众账号ID(企业号corpid即为此appId) * *@return */ @Override publicStringgetAppID(){ returnappId; } /** *商户号:微信支付分配的商户号 * *@return */ @Override publicStringgetMchID(){ returnmchId; } /** *@return */ @Override publicStringgetKey(){ returnapiKey; } @Override publicInputStreamgetCertStream(){ returnnull; } @Override publicintgetHttpConnectTimeoutMs(){ return0; } @Override publicintgetHttpReadTimeoutMs(){ return0; } }
3、编写WeWxPayService:
packagecom.xx.wxpay; importcom.alibaba.fastjson.JSONObject; importcom.github.wxpay.sdk.WXPay; importcom.google.common.collect.Maps; importcom.xx.model.Order; importcom.xx.model.Product; importorg.slf4j.Logger; importorg.slf4j.LoggerFactory; importorg.springframework.beans.factory.annotation.Autowired; importorg.springframework.beans.factory.annotation.Value; importorg.springframework.stereotype.Component; importorg.springframework.stereotype.Service; importjava.text.MessageFormat; importjava.util.HashMap; importjava.util.Map; /** *描述: * *@authorssl *@create2018/04/2420:15 */ @Service publicclassWeWxPayService{ protectedLoggerlogger=LoggerFactory.getLogger(this.getClass()); @Value("${project.url}") privateStringprojectUrl; @Autowired privateWeWxConfigweWxConfig; /** *统一下单 * *@paramproduct *@paramorder *@return */ publicMapunifiedOrder(Productproduct,Orderorder){ Map data=Maps.newHashMap(); WXPaywxpay=newWXPay(weWxConfig); data.put("body","XX-"+product.getName()); data.put("detail","详细信息"); data.put("out_trade_no",order.getOrderNo()); data.put("device_info","WEB"); data.put("fee_type","CNY"); data.put("total_fee",order.getAmount()+""); data.put("spbill_create_ip","127.0.0.1"); data.put("notify_url",projectUrl+"/base/order/notifyUrl"); data.put("trade_type","NATIVE");//此处指定为扫码支付 data.put("product_id",product.getId()+""); try{ Map resp=wxpay.unifiedOrder(data); logger.debug(JSONObject.toJSONString(resp)); returnresp; }catch(Exceptione){ e.printStackTrace(); } returnnull; } /** *订单查询 * *@paramorderNo:订单号 *@return */ publicMap orderQuery(StringorderNo){ Map reqData=Maps.newHashMap(); reqData.put("out_trade_no",orderNo); WXPaywxpay=newWXPay(weWxConfig); try{ Map resp=wxpay.orderQuery(reqData); logger.debug(JSONObject.toJSONString(resp)); returnresp; }catch(Exceptione){ e.printStackTrace(); } returnnull; } publicstaticStringgetUrl(){ WXPaywxpay=newWXPay(newWeWxConfig()); Map data=newHashMap (); data.put("body","上屏名称"); data.put("detail","商品详情"); data.put("out_trade_no","2ab9071b06b9f739b950ddb41db2690d"); data.put("device_info",""); data.put("fee_type","CNY"); data.put("total_fee","1"); data.put("spbill_create_ip","218.17.160.245"); data.put("notify_url","http://www.example.com/wxpay/notify"); data.put("trade_type","NATIVE");//此处指定为扫码支付 data.put("product_id","12"); try{ Map resp=wxpay.unifiedOrder(data); System.out.println(resp); }catch(Exceptione){ e.printStackTrace(); } return""; } }
4、调用:
/**向微信支付系统下单,并得到二维码返回给用户*/ MapresData=weWxPayService.unifiedOrder(product,order);
5、resData.get("code_url")为微信下单成功后返回的二维码地址,页面中用QRCode.js来显示该二维码,且该页面用定时器定时查询订单支付状态
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。