|
@@ -29,8 +29,7 @@ import com.gree.mall.manager.enums.OrderShareStatusEnum;
|
|
import com.gree.mall.manager.enums.PayStatusEnum;
|
|
import com.gree.mall.manager.enums.PayStatusEnum;
|
|
import com.gree.mall.manager.exception.RemoteServiceException;
|
|
import com.gree.mall.manager.exception.RemoteServiceException;
|
|
import com.gree.mall.manager.plus.entity.*;
|
|
import com.gree.mall.manager.plus.entity.*;
|
|
-import com.gree.mall.manager.plus.service.AdminCompanyWechatService;
|
|
|
|
-import com.gree.mall.manager.plus.service.OrderInfoService;
|
|
|
|
|
|
+import com.gree.mall.manager.plus.service.*;
|
|
import com.gree.mall.manager.utils.*;
|
|
import com.gree.mall.manager.utils.*;
|
|
import com.gree.mall.manager.utils.oss.OSSUtil;
|
|
import com.gree.mall.manager.utils.oss.OSSUtil;
|
|
import lombok.RequiredArgsConstructor;
|
|
import lombok.RequiredArgsConstructor;
|
|
@@ -92,6 +91,12 @@ public class WechatLogic {
|
|
@Autowired
|
|
@Autowired
|
|
WxPayService wxPayService;
|
|
WxPayService wxPayService;
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
+ AdminWebsitService adminWebsitService;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ AdminCompanyWechatPayConfigService adminCompanyWechatPayConfigService;
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 微信支付服务
|
|
* 微信支付服务
|
|
* @param companyWechatId
|
|
* @param companyWechatId
|
|
@@ -109,6 +114,22 @@ public class WechatLogic {
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
|
|
+ * 微信支付服务
|
|
|
|
+ * @param companyWechatId
|
|
|
|
+ * @param source 公众号 / 小程序
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ public WxPayService getPayWebstiService(String companyWechatId,String source){
|
|
|
|
+ if(StringUtils.equals(source,OrderInfoSourceEnum.A.getRemark())) {
|
|
|
|
+ //小程序
|
|
|
|
+ return WxConfiguration.wxSubPayWebsitServices.get(companyWechatId);
|
|
|
|
+ }else{
|
|
|
|
+ //公众号
|
|
|
|
+ return WxConfiguration.wxPayWebsitServices.get(companyWechatId);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
* 微信支付服务(小程序)
|
|
* 微信支付服务(小程序)
|
|
* @param companyWechatId
|
|
* @param companyWechatId
|
|
* @return
|
|
* @return
|
|
@@ -546,6 +567,34 @@ public class WechatLogic {
|
|
payRecord.insert();
|
|
payRecord.insert();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 记录支付流水
|
|
|
|
+ * @param adminCompanyWechat
|
|
|
|
+ * @param payment 支付金额
|
|
|
|
+ * @param mobile 付款人手机号
|
|
|
|
+ * @param ip 付款人ip地址
|
|
|
|
+ * @param tradeType JSAPI=小程序支付 NATIVE=扫码支付 MICROPAY=付款码
|
|
|
|
+ * @param orderId 订单号
|
|
|
|
+ * @param transacationId 微信支付流水号
|
|
|
|
+ */
|
|
|
|
+ public void addPayWebsitRecord(AdminCompanyWechatPayConfig adminCompanyWechat,BigDecimal payment,String mobile,String openId,String ip,String tradeType,String orderId,String transacationId){
|
|
|
|
+ PayRecord payRecord = new PayRecord();
|
|
|
|
+ payRecord.setCompanyWechatId(adminCompanyWechat.getCompanyWechatId());
|
|
|
|
+ payRecord.setCompanyWechatName(adminCompanyWechat.getCompanyName());
|
|
|
|
+ payRecord.setAppId(adminCompanyWechat.getAppId());
|
|
|
|
+ payRecord.setSubAppId(adminCompanyWechat.getSubAppId());
|
|
|
|
+ payRecord.setSubMchId(adminCompanyWechat.getSubMchId());
|
|
|
|
+ payRecord.setOpenId(openId);
|
|
|
|
+ payRecord.setIp(ip);
|
|
|
|
+ payRecord.setPayment(payment);
|
|
|
|
+ payRecord.setMobile(mobile);
|
|
|
|
+ payRecord.setTradeType(tradeType);
|
|
|
|
+ payRecord.setOutTradeNo(orderId);
|
|
|
|
+ payRecord.setTransactionId(transacationId);
|
|
|
|
+ payRecord.setCreateTime(new Date());
|
|
|
|
+ payRecord.insert();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -1034,4 +1083,35 @@ public class WechatLogic {
|
|
throw new RemoteServiceException("授权失败,请联系相关人员");
|
|
throw new RemoteServiceException("授权失败,请联系相关人员");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ public String paymentfkmWebsit(String id, BigDecimal payment, String profitSharingFlag, String ip, String companyWechatId, String authCode, String source) {
|
|
|
|
+
|
|
|
|
+ WxPayService payService = this.getPayWebstiService(companyWechatId,source);
|
|
|
|
+
|
|
|
|
+ WxPayMicropayRequest request = new WxPayMicropayRequest();
|
|
|
|
+ //request.setDeviceInfo(worker.getWorkerId());
|
|
|
|
+ request.setBody("售修宝费用");
|
|
|
|
+ request.setOutTradeNo(id);
|
|
|
|
+ request.setTotalFee(payment.multiply(new BigDecimal("100")).intValue());
|
|
|
|
+ request.setSpbillCreateIp(ip);
|
|
|
|
+ request.setAuthCode(authCode);
|
|
|
|
+ request.setProfitSharing(profitSharingFlag); // 分账标记 Y=分账 N=不分账
|
|
|
|
+
|
|
|
|
+ WxPayMicropayResult payResult = null;
|
|
|
|
+ try {
|
|
|
|
+ payResult = payService.micropay(request);
|
|
|
|
+ log.info("商户扫码支付生成订单响应: {}", payResult);
|
|
|
|
+ } catch (WxPayException e) {
|
|
|
|
+ log.error("商户扫码支付失败: {}", payResult);
|
|
|
|
+ throw new RemoteServiceException("扫码支付失败,请稍后再试");
|
|
|
|
+ }
|
|
|
|
+ if (payResult == null || WxPayConstants.ResultCode.FAIL.equals(payResult.getReturnCode())) {
|
|
|
|
+ throw new RemoteServiceException("扫码支付失败,请稍后再试");
|
|
|
|
+ }
|
|
|
|
+ //记录流水
|
|
|
|
+
|
|
|
|
+ AdminCompanyWechatPayConfig adminCompanyWechatPayConfig = adminCompanyWechatPayConfigService.getById(companyWechatId);
|
|
|
|
+ this.addPayWebsitRecord(adminCompanyWechatPayConfig,payment,"",payResult.getSubOpenid(),ip,payResult.getTradeType(),id,payResult.getTransactionId());
|
|
|
|
+ return payResult.getTransactionId();
|
|
|
|
+ }
|
|
}
|
|
}
|