package com.yeshi.fanli.util.wx;
|
|
import java.math.BigDecimal;
|
import java.net.URLEncoder;
|
import java.util.Map;
|
|
import org.yeshi.utils.entity.wx.WXAPPInfo;
|
import org.yeshi.utils.entity.wx.WXPlaceOrderParams;
|
import org.yeshi.utils.exception.WXOrderException;
|
import org.yeshi.utils.exception.WXPlaceOrderParamsException;
|
import org.yeshi.utils.wx.WXPayUtil;
|
import org.yeshi.utils.wx.WXUtil;
|
|
import com.yeshi.fanli.util.Constant;
|
import com.yeshi.fanli.util.shop.BanLiShopOrderUtil;
|
|
/**
|
* 板栗商城微信支付
|
*
|
* @author Administrator
|
*
|
*/
|
public class BanLiShopWXPayUtil {
|
|
private static String MCH_ID = "1520950211";
|
private static String MCH_KEY = "XYJkJ2018FAfaodCCx899mLl138rfGVd";
|
private static String MCH_CERT_PATH = "certificate/1520950211.p12";
|
|
/**
|
* 获取板栗商城H5支付链接
|
*
|
* @param orderNo
|
* @param money
|
* @return
|
*/
|
public static String getWXH5PayUrl(String orderNo, String ip, String goodsName, BigDecimal money, String platform) {
|
String wxOrderNo = BanLiShopOrderUtil.getWXPayOrderNo(orderNo);
|
WXPlaceOrderParams params = new WXPlaceOrderParams();
|
params.setBody(goodsName);
|
params.setFee(money);
|
params.setInfo(new WXAPPInfo(Constant.getWXAccount(null, null).getGzAppId(),
|
Constant.getWXAccount(null, null).getGzAppSecret(), MCH_ID, MCH_KEY));
|
params.setIp(ip);
|
params.setNotifyUrl("http://api.flqapp.com/fanli/client/v1/callback/banlishop/pay");
|
params.setOpenId(null);
|
params.setOrderNo(wxOrderNo);
|
params.setTradeType("MWEB");
|
try {
|
Map<String, String> map = WXPayUtil.produceOrder(params);
|
if ("ios".equalsIgnoreCase(platform))
|
return map.get("mweb_url") + "&redirect_url="
|
+ URLEncoder.encode("shop.banliapp.com://shop.banliapp.com/order.html?from=pay", "UTF-8");
|
else
|
return map.get("mweb_url") + "&redirect_url="
|
+ URLEncoder.encode("http://shop.banliapp.com/order.html?from=pay", "UTF-8");
|
} catch (WXPlaceOrderParamsException e) {
|
e.printStackTrace();
|
} catch (Exception e) {
|
}
|
return null;
|
}
|
|
/**
|
* 退款
|
*
|
* @param orderNo
|
* @param money
|
* @return
|
* @throws WXOrderException
|
*/
|
public static boolean refund(String orderNo, BigDecimal money) throws WXOrderException {
|
boolean success = WXPayUtil.refund(BanLiShopOrderUtil.getWXPayOrderNo(orderNo), money, money, null,
|
new WXAPPInfo(Constant.getWXAccount(null, null).getGzAppId(),
|
Constant.getWXAccount(null, null).getGzAppSecret(), MCH_ID, MCH_KEY),
|
MCH_ID, BanLiShopWXPayUtil.class.getClassLoader().getResourceAsStream(MCH_CERT_PATH));
|
return success;
|
}
|
|
public static boolean isRefundSuccess(String orderNo) throws WXOrderException {
|
return WXPayUtil.isRefundSuccess(BanLiShopOrderUtil.getWXPayOrderNo(orderNo),
|
new WXAPPInfo(Constant.getWXAccount(null, null).getGzAppId(),
|
Constant.getWXAccount(null, null).getGzAppSecret(), MCH_ID, MCH_KEY));
|
}
|
|
/**
|
* 是否支付成功
|
*
|
* @param orderNo
|
* @return
|
* @throws WXOrderException
|
*/
|
public static boolean isPaySuccess(String orderNo) throws WXOrderException {
|
return WXPayUtil.isPaySuccess(BanLiShopOrderUtil.getWXPayOrderNo(orderNo),
|
new WXAPPInfo(Constant.getWXAccount(null, null).getGzAppId(),
|
Constant.getWXAccount(null, null).getGzAppSecret(), MCH_ID, MCH_KEY));
|
}
|
|
/**
|
* 签名是否正确
|
*
|
* @param params
|
* @param sign
|
* @return
|
*/
|
public static boolean signIsRight(Map<String, String> params, String sign) {
|
String newSign = WXUtil.getSignMD5(params, MCH_KEY);
|
return newSign.equalsIgnoreCase(sign);
|
}
|
|
}
|