| | |
| | | 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);
|
| | | }
|
| | |
|
| | | }
|
| | | 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.setApp(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/wx_pay_finish.html", "UTF-8"); |
| | | else |
| | | return map.get("mweb_url") + "&redirect_url=" |
| | | + URLEncoder.encode("http://shop.banliapp.com/wx_pay_finish.html", "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); |
| | | } |
| | | |
| | | } |