java微信支付功能模块整合好获取openid代码块
时间: 2024-01-31 11:02:45 浏览: 144
以下是使用Java实现的微信支付功能模块整合和获取openid的代码块:
1. 配置微信支付参数
```java
public class WXPayConfigImpl extends WXPayConfig {
private String appID = "your_app_id"; // 微信公众号appid
private String mchID = "your_mch_id"; // 微信商户号
private String apiKey = "your_api_key"; // API密钥
@Override
public String getAppID() {
return appID;
}
@Override
public String getMchID() {
return mchID;
}
@Override
public String getKey() {
return apiKey;
}
@Override
public InputStream getCertStream() {
// 支付证书(选填)
return null;
}
@Override
public IWXPayDomain getWXPayDomain() {
return WXPayDomainSimpleImpl.instance();
}
}
```
2. 创建微信支付请求对象
```java
public class WXPayRequest {
private WXPay wxpay;
private String notifyUrl = "your_notify_url"; // 支付结果通知地址
public WXPayRequest() throws Exception {
WXPayConfigImpl config = new WXPayConfigImpl();
wxpay = new WXPay(config);
}
/**
* 统一下单
*
* @param body 商品描述
* @param outTradeNo 商户订单号
* @param totalFee 标价金额(分)
* @param spbillCreateIp 用户IP地址
* @return
* @throws Exception
*/
public Map<String, String> unifiedOrder(String body, String outTradeNo, int totalFee, String spbillCreateIp) throws Exception {
Map<String, String> data = new HashMap<>();
data.put("body", body);
data.put("out_trade_no", outTradeNo);
data.put("fee_type", "CNY");
data.put("total_fee", String.valueOf(totalFee));
data.put("spbill_create_ip", spbillCreateIp);
data.put("notify_url", notifyUrl);
data.put("trade_type", "JSAPI");
data.put("openid", ""); // openid
return wxpay.unifiedOrder(data);
}
/**
* 查询订单
*
* @param outTradeNo 商户订单号
* @return
* @throws Exception
*/
public Map<String, String> orderQuery(String outTradeNo) throws Exception {
Map<String, String> data = new HashMap<>();
data.put("out_trade_no", outTradeNo);
return wxpay.orderQuery(data);
}
}
```
3. 获取openid
```java
public class WXPayUtil {
private static final String TOKEN_URL = "https://api.weixin.qq.com/sns/oauth2/access_token";
/**
* 获取openid
*
* @param code
* @return
* @throws Exception
*/
public static String getOpenid(String code) throws Exception {
String url = TOKEN_URL + "?appid=your_app_id&secret=your_app_secret&code=" + code + "&grant_type=authorization_code";
String result = HttpsUtil.httpsRequestToString(url, "GET", null);
JSONObject json = JSONObject.fromObject(result);
String openid = json.getString("openid");
return openid;
}
}
```
其中,`HttpsUtil.httpsRequestToString()`方法是一个封装了https请求的工具类,具体实现可以自行搜索。
在使用时,只需要调用`WXPayRequest`中的`unifiedOrder`方法进行支付,调用`WXPayRequest`中的`orderQuery`方法查询订单状态,调用`WXPayUtil`中的`getOpenid`方法获取openid即可。
阅读全文