package com.ks.vip.util;
|
|
import com.alipay.api.AlipayApiException;
|
import com.google.gson.Gson;
|
import org.apache.commons.io.IOUtils;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.yeshi.utils.alipay.AlipayH5PayUtil;
|
import org.yeshi.utils.entity.alipay.AlipayAppInfo;
|
import org.yeshi.utils.entity.wx.WXAPPInfo;
|
import org.yeshi.utils.entity.wx.WXPlaceOrderParams;
|
import org.yeshi.utils.wx.WXPayV3Util;
|
|
import java.io.IOException;
|
import java.math.BigDecimal;
|
import java.util.Properties;
|
|
public class PayUtil {
|
|
final static Logger logger = LoggerFactory.getLogger(PayUtil.class);
|
|
|
public static AlipayAppInfo getAlipayApp() {
|
try {
|
Properties properties = new Properties();
|
properties.load(PayUtil.class.getClassLoader().getResourceAsStream("alipay.properties"));
|
String appId = properties.getProperty("app_id");
|
String privateKey = properties.getProperty("private_key");
|
String publicKey = properties.getProperty("alipay_public_key");
|
AlipayAppInfo appInfo = new AlipayAppInfo(appId, privateKey, publicKey);
|
return appInfo;
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
|
return null;
|
}
|
|
/**
|
* 获取微信app
|
*
|
* @return
|
*/
|
|
public static WXAPPInfo getWXAPP() {
|
String privateKey = "";
|
try {
|
String content = IOUtils.toString(PayUtil.class.getClassLoader().getResourceAsStream("wx/apiclient_key.pem"));
|
privateKey = content.replace("-----BEGIN PRIVATE KEY-----", "")
|
.replace("-----END PRIVATE KEY-----", "")
|
.replaceAll("\\s+", "");
|
} catch (Exception e) {
|
|
}
|
|
Properties properties = new Properties();
|
try {
|
properties.load(PayUtil.class.getClassLoader().getResourceAsStream("wxpay.properties"));
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
String appId = properties.getProperty("app_id");
|
String mchId = properties.getProperty("mch_id");
|
String mchSerialNo = properties.getProperty("mch_serial_no");
|
String apiV3Key = properties.getProperty("api_v3_key");
|
|
|
WXAPPInfo app = new WXAPPInfo(appId, mchId, mchSerialNo, privateKey, apiV3Key);
|
|
return app;
|
}
|
|
/**
|
* 获取会员充值支付宝支付表单
|
*
|
* @param orderNo
|
* @param money
|
* @return
|
*/
|
public static String getVipChargeAlipayForm(String goodsTitle, String orderNo, BigDecimal money, String notifyUrl, String returnUrl) {
|
try {
|
AlipayAppInfo appInfo = getAlipayApp();
|
String form = AlipayH5PayUtil.createOrderForm(appInfo, orderNo, money, goodsTitle, returnUrl, notifyUrl);
|
return form;
|
} catch (AlipayApiException e) {
|
e.printStackTrace();
|
}
|
return null;
|
}
|
|
|
/**
|
* 微信下单
|
*
|
* @param ip
|
* @param orderNo
|
* @param money
|
* @param title
|
* @return
|
* @throws Exception
|
*/
|
public static String createWXOrder(String ip, String orderNo, BigDecimal money, String title, String notifyUrl, String returnUrl) throws Exception {
|
WXPlaceOrderParams params = new WXPlaceOrderParams();
|
params.setIp(ip);
|
params.setOrderNo(orderNo);
|
params.setNotifyUrl(notifyUrl);
|
params.setFee(money);
|
params.setBody(title);
|
params.setApp(getWXAPP());
|
|
logger.info("微信支付表单数据:{}", new Gson().toJson(params));
|
String payUrl = WXPayV3Util.createH5Order(params, returnUrl);
|
return payUrl;
|
}
|
|
|
}
|