java实现微信扫码支付功能

网友投稿 342 2023-01-25


java实现微信扫码支付功能

本文实例为大家分享了java实现微信扫码支付的具体代码,供大家参考,具体内容如下

1、maven项目的pom.xml中添加如下jar包:

com.github.wxpay

wxpay-sdk

0.0.3

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());

@VwydDuhSalue("${project.url}")

private String projectUrl;

@Autowired

private WeWxConfig weWxConfig;

/**

* 统一下单

*

* @param product

* @param order

* @return

*/

public Map unifiedOrder(Product product, Order order) {

Map 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"); // 此wydDuhS处指定为扫码支付

data.put("product_id", product.getId() + "");

try {

Map resp = wxpay.unifiedOrder(data);

logger.debug(JSONObject.toJSONString(resp));

return resp;

} catch (Exception e) {

e.printStackTrace();

}

retuwydDuhSrn null;

}

/**

* 订单查询

*

* @param orderNo:订单号

* @return

*/

public Map orderQuery(String orderNo) {

Map reqData = Maps.newHashMap();

reqData.put("out_trade_no", orderNo);

WXPay wxpay = new WXPay(weWxConfig);

try {

Map 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 data = new HashMap();

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://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 (Exception e) {

e.printStackTrace();

}

return "";

}

}

4、调用:

/** 向微信支付系统下单,并得到二维码返回给用户 */

Map resData = weWxPayService.unifiedOrder(product, order);

5、resData.get("code_url")为微信下单成功后返回的二维码地址,页面中用QRCode.js来显示该二维码,且该页面用定时器定时查询订单支付状态


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:全链路接口自动化测试用例(常见的接口自动化测试框架)
下一篇:内存共享文件系统设置方法(内存共享文件系统设置方法有哪些)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~