|
|
@@ -52,7 +52,7 @@ public class FubeiPayService {
|
|
|
* @param paramMap
|
|
|
* @return
|
|
|
*/
|
|
|
- private JSONObject createRequest(String url, Map<String, Object> paramMap, String appKey) {
|
|
|
+ private JSONObject createRequest(String url, Map<String, Object> paramMap, String appId, String appKey) {
|
|
|
// 应用ID
|
|
|
paramMap.put("appId", appId);
|
|
|
// 接口版本
|
|
|
@@ -83,44 +83,43 @@ public class FubeiPayService {
|
|
|
* @return
|
|
|
*/
|
|
|
public PayVo createPayOrder(PayBo bo) {
|
|
|
- return new PayVo();
|
|
|
-// FubeiPayWay payWay = bo.getPayWay();
|
|
|
-// Map<String, Object> paramMap = new HashMap<>();
|
|
|
-// // 门店商户号
|
|
|
-// paramMap.put("mchNo", bo.getMchNo());
|
|
|
-// // 商户订单号
|
|
|
-// paramMap.put("mchOrderNo", bo.getMchOrderNo());
|
|
|
-// // 支付方式
|
|
|
-// paramMap.put("wayCode", payWay.getMsg());
|
|
|
-// // 支付金额,单位分
|
|
|
-// paramMap.put("amount", bo.getAmount());
|
|
|
-// // 货币代码
|
|
|
-// paramMap.put("currency", "cny");
|
|
|
-// // 商品标题
|
|
|
-// paramMap.put("subject", bo.getSubject());
|
|
|
-// // 商品描述
|
|
|
-// paramMap.put("body", bo.getBody());
|
|
|
-// // 分账模式(业务是走余额分账)
|
|
|
-// paramMap.put("divisionMode", 0);
|
|
|
-//
|
|
|
-// JSONObject channelExtraJson = new JSONObject();
|
|
|
-// if (FubeiPayWay.W_WX_LITE.equals(payWay)) {
|
|
|
-// // 当前小程序用户的openId
|
|
|
-// channelExtraJson.put("openid", bo.getUserInfoId());
|
|
|
-// // 当前小程序的AppId传过去
|
|
|
-// channelExtraJson.put("subAppId", wxAppId);
|
|
|
-// } else if (FubeiPayWay.W_ALI_LITE.equals(payWay)) {
|
|
|
-// // 支付宝用户ID
|
|
|
-// channelExtraJson.put("buyerUserId", bo.getUserInfoId());
|
|
|
-// }
|
|
|
-// paramMap.put("channelExtra", channelExtraJson);
|
|
|
-//
|
|
|
-// // 异步通知地址
|
|
|
-// paramMap.put("notifyUrl", payBackUrl);
|
|
|
-//
|
|
|
-// JSONObject resultJson = this.createRequest("/api/pay/unifiedOrder", paramMap, bo.getStoreKey());
|
|
|
-// JSONObject dataJson = resultJson.getJSONObject("data");
|
|
|
-// return JSONObject.parseObject(dataJson.toJSONString(), PayVo.class);
|
|
|
+ FubeiPayWay payWay = bo.getPayWay();
|
|
|
+ Map<String, Object> paramMap = new HashMap<>();
|
|
|
+ // 门店商户号
|
|
|
+ paramMap.put("mchNo", bo.getMchNo());
|
|
|
+ // 商户订单号
|
|
|
+ paramMap.put("mchOrderNo", bo.getMchOrderNo());
|
|
|
+ // 支付方式
|
|
|
+ paramMap.put("wayCode", payWay.getMsg());
|
|
|
+ // 支付金额,单位分
|
|
|
+ paramMap.put("amount", bo.getAmount());
|
|
|
+ // 货币代码
|
|
|
+ paramMap.put("currency", "cny");
|
|
|
+ // 商品标题
|
|
|
+ paramMap.put("subject", bo.getSubject());
|
|
|
+ // 商品描述
|
|
|
+ paramMap.put("body", bo.getBody());
|
|
|
+ // 分账模式(业务是走余额分账)
|
|
|
+ paramMap.put("divisionMode", 0);
|
|
|
+
|
|
|
+ JSONObject channelExtraJson = new JSONObject();
|
|
|
+ if (FubeiPayWay.W_WX_LITE.equals(payWay)) {
|
|
|
+ // 当前小程序用户的openId
|
|
|
+ channelExtraJson.put("openid", bo.getUserInfoId());
|
|
|
+ // 当前小程序的AppId传过去
|
|
|
+ channelExtraJson.put("subAppId", wxAppId);
|
|
|
+ } else if (FubeiPayWay.W_ALI_LITE.equals(payWay)) {
|
|
|
+ // 支付宝用户ID
|
|
|
+ channelExtraJson.put("buyerUserId", bo.getUserInfoId());
|
|
|
+ }
|
|
|
+ paramMap.put("channelExtra", channelExtraJson);
|
|
|
+
|
|
|
+ // 异步通知地址
|
|
|
+ paramMap.put("notifyUrl", payBackUrl);
|
|
|
+
|
|
|
+ JSONObject resultJson = this.createRequest("/api/pay/unifiedOrder", paramMap, bo.getAppId(), bo.getStoreKey());
|
|
|
+ JSONObject dataJson = resultJson.getJSONObject("data");
|
|
|
+ return JSONObject.parseObject(dataJson.toJSONString(), PayVo.class);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -138,7 +137,7 @@ public class FubeiPayService {
|
|
|
// 支付订单号
|
|
|
paramMap.put("payOrderId", bo.getPayOrderId());
|
|
|
|
|
|
- JSONObject resultJson = this.createRequest("/api/pay/query", paramMap, bo.getStoreKey());
|
|
|
+ JSONObject resultJson = this.createRequest("/api/pay/query", paramMap, bo.getAppId(), bo.getStoreKey());
|
|
|
return resultJson.getJSONObject("data");
|
|
|
}
|
|
|
|
|
|
@@ -150,15 +149,15 @@ public class FubeiPayService {
|
|
|
*/
|
|
|
public Boolean closePayOrder(PayBo bo) {
|
|
|
try {
|
|
|
-// Map<String, Object> paramMap = new HashMap<>();
|
|
|
-// // 商户号
|
|
|
-// paramMap.put("mchNo", bo.getMchNo());
|
|
|
-// // 商户订单号
|
|
|
-// paramMap.put("mchOrderNo", bo.getMchOrderNo());
|
|
|
-// // 支付订单号
|
|
|
-// paramMap.put("payOrderId", bo.getPayOrderId());
|
|
|
-//
|
|
|
-// this.createRequest("/api/pay/close", paramMap, bo.getStoreKey());
|
|
|
+ Map<String, Object> paramMap = new HashMap<>();
|
|
|
+ // 商户号
|
|
|
+ paramMap.put("mchNo", bo.getMchNo());
|
|
|
+ // 商户订单号
|
|
|
+ paramMap.put("mchOrderNo", bo.getMchOrderNo());
|
|
|
+ // 支付订单号
|
|
|
+ paramMap.put("payOrderId", bo.getPayOrderId());
|
|
|
+
|
|
|
+ this.createRequest("/api/pay/close", paramMap, bo.getAppId(), bo.getStoreKey());
|
|
|
} catch (Exception e) {
|
|
|
log.error(" --- 关闭订单异常 ---> {}", e.getMessage());
|
|
|
}
|
|
|
@@ -172,29 +171,31 @@ public class FubeiPayService {
|
|
|
* @return
|
|
|
*/
|
|
|
public String createRefundOrder(PayBo bo) {
|
|
|
- return null;
|
|
|
-// Map<String, Object> paramMap = new HashMap<>();
|
|
|
-// // 商户号
|
|
|
-// paramMap.put("mchNo", bo.getMchNo());
|
|
|
-// // 商户订单号
|
|
|
-// paramMap.put("mchOrderNo", bo.getMchOrderNo());
|
|
|
-// // 支付订单号
|
|
|
-// paramMap.put("payOrderId", bo.getPayOrderId());
|
|
|
-// // 商户退款订单号
|
|
|
-// paramMap.put("mchRefundNo", bo.getMchRefundNo());
|
|
|
-// // 退款金额,单位分
|
|
|
-// paramMap.put("refundAmount", bo.getAmount());
|
|
|
-// // 货币代码
|
|
|
-// paramMap.put("currency", "cny");
|
|
|
-// // 退款原因
|
|
|
-// paramMap.put("refundReason", bo.getRefundReason());
|
|
|
-// // 异步通知地址
|
|
|
-// paramMap.put("notifyUrl", refundBackUrl);
|
|
|
-//
|
|
|
-// JSONObject resultJson = this.createRequest("/api/refund/refundOrder", paramMap, bo.getStoreKey());
|
|
|
-// JSONObject dataJson = resultJson.getJSONObject("data");
|
|
|
-// // 返回支付系统 退款订单号,业务需要
|
|
|
-// return dataJson.getString("refundOrderId");
|
|
|
+ Map<String, Object> paramMap = new HashMap<>();
|
|
|
+ // 商户号
|
|
|
+ paramMap.put("mchNo", bo.getMchNo());
|
|
|
+ // 商户订单号
|
|
|
+ paramMap.put("mchOrderNo", bo.getMchOrderNo());
|
|
|
+ // 支付订单号
|
|
|
+ paramMap.put("payOrderId", bo.getPayOrderId());
|
|
|
+ // 商户退款订单号
|
|
|
+ paramMap.put("mchRefundNo", bo.getMchRefundNo());
|
|
|
+ // 退款金额,单位分
|
|
|
+ paramMap.put("refundAmount", bo.getAmount());
|
|
|
+ // 货币代码
|
|
|
+ paramMap.put("currency", "cny");
|
|
|
+ // 退款原因
|
|
|
+ paramMap.put("refundReason", bo.getRefundReason());
|
|
|
+ // 异步通知地址
|
|
|
+ paramMap.put("notifyUrl", refundBackUrl);
|
|
|
+
|
|
|
+ JSONObject resultJson = this.createRequest("/api/refund/refundOrder", paramMap, bo.getAppId(), bo.getStoreKey());
|
|
|
+ JSONObject dataJson = resultJson.getJSONObject("data");
|
|
|
+ if (dataJson == null) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ // 返回支付系统 退款订单号,业务需要
|
|
|
+ return dataJson.getString("refundOrderId");
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -212,7 +213,7 @@ public class FubeiPayService {
|
|
|
// 退款订单号
|
|
|
paramMap.put("refundOrderId", bo.getRefundOrderId());
|
|
|
|
|
|
- JSONObject resultJson = this.createRequest("/api/refund/query", paramMap, bo.getStoreKey());
|
|
|
+ JSONObject resultJson = this.createRequest("/api/refund/query", paramMap, bo.getAppId(), bo.getStoreKey());
|
|
|
return resultJson.getJSONObject("data");
|
|
|
}
|
|
|
|
|
|
@@ -235,8 +236,11 @@ public class FubeiPayService {
|
|
|
paramMap.put("useSysAutoDivisionReceivers", Constants.NUM_ZERO);
|
|
|
paramMap.put("receivers", bo.getReceivers());
|
|
|
|
|
|
- JSONObject resultJson = this.createRequest("/api/division/exec", paramMap, bo.getStoreKey());
|
|
|
+ JSONObject resultJson = this.createRequest("/api/division/exec", paramMap, bo.getAppId(), bo.getStoreKey());
|
|
|
JSONObject dataJson = resultJson.getJSONObject("data");
|
|
|
+ if (dataJson == null) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
// 返回支付系统 系统分账批次号,业务需要
|
|
|
return dataJson.getString("batchOrderId");
|
|
|
}
|
|
|
@@ -248,35 +252,69 @@ public class FubeiPayService {
|
|
|
* @return
|
|
|
*/
|
|
|
public String createBalanceDivisionExec(PayBo bo) {
|
|
|
- return null;
|
|
|
-// Map<String, Object> paramMap = new HashMap<>();
|
|
|
-// // 门店商户号
|
|
|
-// paramMap.put("mchNo", bo.getMchNo());
|
|
|
-// // 出款方渠道商户号
|
|
|
-// paramMap.put("lenderChannelMchNo", bo.getLenderChannelMchNo());
|
|
|
-// //收款方商户号
|
|
|
-// paramMap.put("payeeMchNo", mchNo);
|
|
|
-// //收款方渠道商户号
|
|
|
-// paramMap.put("payeeChannelMchNo", channelMchNo);
|
|
|
-// //支付渠道
|
|
|
-// paramMap.put("ifCode", FubeiIfCode.dgpay.getCode());
|
|
|
-// //分账原因
|
|
|
-// paramMap.put("independentAccountReason", FubeiIndependentReason.FEN_RU.getCode());
|
|
|
-// //费用承担方
|
|
|
-// paramMap.put("feeBearer", 0);
|
|
|
-// //交易订单号
|
|
|
-// paramMap.put("payOrderNo", bo.getPayOrderNo());
|
|
|
-// //分账金额 单位:分
|
|
|
-// paramMap.put("dividedAmount", bo.getAmount());
|
|
|
-// //是否延迟交易
|
|
|
-// paramMap.put("isDelay", 0);
|
|
|
-// //备注
|
|
|
-// paramMap.put("remark", bo.getRemark());
|
|
|
-//
|
|
|
-// JSONObject resultJson = this.createRequest("/api/balance/division/exec", paramMap, bo.getStoreKey());
|
|
|
-// JSONObject dataJson = resultJson.getJSONObject("data");
|
|
|
-// // 返回渠道订单号
|
|
|
-// return dataJson.getString("channelOrderId");
|
|
|
+ Map<String, Object> paramMap = new HashMap<>();
|
|
|
+ // 门店商户号
|
|
|
+ paramMap.put("mchNo", bo.getMchNo());
|
|
|
+ // 出款方渠道商户号
|
|
|
+ paramMap.put("lenderChannelMchNo", bo.getLenderChannelMchNo());
|
|
|
+ //收款方商户号
|
|
|
+ paramMap.put("payeeMchNo", mchNo);
|
|
|
+ //收款方渠道商户号
|
|
|
+ paramMap.put("payeeChannelMchNo", channelMchNo);
|
|
|
+ //支付渠道
|
|
|
+ paramMap.put("ifCode", FubeiIfCode.dgpay.getCode());
|
|
|
+ //分账原因
|
|
|
+ paramMap.put("independentAccountReason", FubeiIndependentReason.FEN_RU.getCode());
|
|
|
+ //费用承担方
|
|
|
+ paramMap.put("feeBearer", 0);
|
|
|
+ //交易订单号
|
|
|
+ paramMap.put("payOrderNo", bo.getPayOrderNo());
|
|
|
+ //分账金额 单位:分
|
|
|
+ paramMap.put("dividedAmount", bo.getAmount());
|
|
|
+ //是否延迟交易
|
|
|
+ paramMap.put("isDelay", 0);
|
|
|
+ //备注
|
|
|
+ paramMap.put("remark", bo.getRemark());
|
|
|
+
|
|
|
+ JSONObject resultJson = this.createRequest("/api/balance/division/exec", paramMap, bo.getAppId(), bo.getStoreKey());
|
|
|
+ JSONObject dataJson = resultJson.getJSONObject("data");
|
|
|
+ if (dataJson == null) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ // 返回渠道订单号
|
|
|
+ return dataJson.getString("channelOrderId");
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询余额分账商户可用余额 单位分
|
|
|
+ */
|
|
|
+ public Long queryBalanceDivisionAvailableBalance(PayBo bo) {
|
|
|
+ Map<String, Object> paramMap = new HashMap<>();
|
|
|
+ paramMap.put("mchNo", bo.getMchNo());
|
|
|
+ paramMap.put("payChannel", FubeiIfCode.dgpay.getCode());
|
|
|
+ paramMap.put("channelMchNo", bo.getLenderChannelMchNo());
|
|
|
+ JSONObject resultJson = this.createRequest("/api/balance/division/balance", paramMap, bo.getAppId(), bo.getStoreKey());
|
|
|
+ JSONObject dataJson = resultJson.getJSONObject("data");
|
|
|
+ if (dataJson == null) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ return dataJson.getLong("balance");
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 对分账用户的渠道余额发起提现
|
|
|
+ */
|
|
|
+ public Boolean createBalanceDivisionWithdraw(PayBo bo) {
|
|
|
+ Map<String, Object> paramMap = new HashMap<>();
|
|
|
+ paramMap.put("mchNo", bo.getMchNo());
|
|
|
+ paramMap.put("receiverId", bo.getReceiverId());
|
|
|
+ paramMap.put("cashoutAmount", bo.getAmount());
|
|
|
+ JSONObject resultJson = this.createRequest("/api/division/receiver/channelBalanceCashout", paramMap, bo.getAppId(), bo.getStoreKey());
|
|
|
+ JSONObject dataJson = resultJson.getJSONObject("data");
|
|
|
+ if (dataJson == null) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ // 渠道订单号
|
|
|
+ return 1 == dataJson.getIntValue("state");
|
|
|
+ }
|
|
|
}
|