java实现微信扫码支付功能
程序员文章站
2024-02-20 14:04:16
本文实例为大家分享了java实现微信扫码支付的具体代码,供大家参考,具体内容如下
1、maven项目的pom.xml中添加如下jar包:
本文实例为大家分享了java实现微信扫码支付的具体代码,供大家参考,具体内容如下
1、maven项目的pom.xml中添加如下jar包:
<dependency> <groupid>com.github.wxpay</groupid> <artifactid>wxpay-sdk</artifactid> <version>0.0.3</version> </dependency>
2、编写wewxconfig类:
package com.xx.wxpay; import com.github.wxpay.sdk.wxpayconfig; import org.springframework.beans.factory.annotation.value; import org.springframework.stereotype.component; import java.io.inputstream; /** * 描述:微信支付配置信息 * * @author ssl * @create 2018/04/24 19:25 */ @component public class wewxconfig implements wxpayconfig { @value("${wechat.public.appid}") private string appid; @value("${wechat.merchant}") private string mchid; @value("${wechat.public.apikey}") private string apikey; /** * 公众账号id:微信支付分配的公众账号id(企业号corpid即为此appid) * * @return */ @override public string getappid() { return appid; } /** * 商户号:微信支付分配的商户号 * * @return */ @override public string getmchid() { return mchid; } /** * @return */ @override public string getkey() { return apikey; } @override public inputstream getcertstream() { return null; } @override public int gethttpconnecttimeoutms() { return 0; } @override public int gethttpreadtimeoutms() { return 0; } }
3、编写wewxpayservice:
package com.xx.wxpay; import com.alibaba.fastjson.jsonobject; import com.github.wxpay.sdk.wxpay; import com.google.common.collect.maps; import com.xx.model.order; import com.xx.model.product; import org.slf4j.logger; import org.slf4j.loggerfactory; import org.springframework.beans.factory.annotation.autowired; import org.springframework.beans.factory.annotation.value; import org.springframework.stereotype.component; import org.springframework.stereotype.service; import java.text.messageformat; import java.util.hashmap; import java.util.map; /** * 描述: * * @author ssl * @create 2018/04/24 20:15 */ @service public class wewxpayservice { protected logger logger = loggerfactory.getlogger(this.getclass()); @value("${project.url}") private string projecturl; @autowired private wewxconfig wewxconfig; /** * 统一下单 * * @param product * @param order * @return */ public map<string, string> unifiedorder(product product, order order) { map<string, string> data = maps.newhashmap(); wxpay wxpay = new wxpay(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<string, string> resp = wxpay.unifiedorder(data); logger.debug(jsonobject.tojsonstring(resp)); return resp; } catch (exception e) { e.printstacktrace(); } return null; } /** * 订单查询 * * @param orderno:订单号 * @return */ public map<string, string> orderquery(string orderno) { map<string, string> reqdata = maps.newhashmap(); reqdata.put("out_trade_no", orderno); wxpay wxpay = new wxpay(wewxconfig); try { map<string, string> resp = wxpay.orderquery(reqdata); logger.debug(jsonobject.tojsonstring(resp)); return resp; } catch (exception e) { e.printstacktrace(); } return null; } public static string geturl() { wxpay wxpay = new wxpay(new wewxconfig()); map<string, string> data = new hashmap<string, string>(); 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<string, string> resp = wxpay.unifiedorder(data); system.out.println(resp); } catch (exception e) { e.printstacktrace(); } return ""; } }
4、调用:
/** 向微信支付系统下单,并得到二维码返回给用户 */ map<string, string> resdata = wewxpayservice.unifiedorder(product, order);
5、resdata.get("code_url")为微信下单成功后返回的二维码地址,页面中用qrcode.js来显示该二维码,且该页面用定时器定时查询订单支付状态
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。