|
@@ -5,6 +5,7 @@ import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
|
|
import com.github.binarywang.wxpay.bean.profitsharing.*;
|
|
|
import com.github.binarywang.wxpay.bean.request.WxPayMicropayRequest;
|
|
|
import com.github.binarywang.wxpay.bean.request.WxPayRefundRequest;
|
|
@@ -1245,4 +1246,65 @@ public class WechatLogic {
|
|
|
this.addPayWebsitRecord(adminCompanyWechatPayConfig,payment,"",payResult.getSubOpenid(),ip,payResult.getTradeType(),id,payResult.getTransactionId());
|
|
|
return payResult.getTransactionId();
|
|
|
}
|
|
|
+
|
|
|
+ public PayDetail paymentWebsitH5(String orderId, BigDecimal payAmount, String openId, String profitSharingFlag, String ip, String companyWechatId) throws WxPayException {
|
|
|
+ return this.paymentWebsit(orderId,payAmount,openId,profitSharingFlag,ip,companyWechatId,"MWEB",false);
|
|
|
+ }
|
|
|
+
|
|
|
+ private PayDetail paymentWebsit(String id, BigDecimal payment, String openId, String profitSharingFlag, String ip,
|
|
|
+ String companyWechatId, String tradeType, boolean b) throws WxPayException {
|
|
|
+
|
|
|
+ WxPayService payService = this.getPayWebstiService(companyWechatId,null);
|
|
|
+
|
|
|
+ if (payService == null)
|
|
|
+ throw new RemoteServiceException("未查到支付配置");
|
|
|
+
|
|
|
+ if(payment.doubleValue() <= 0){
|
|
|
+ //throw new RemoteServiceException("支付金额小于等于0,实际支付金额:"+payment);
|
|
|
+ PayDetail payDetail = new PayDetail();
|
|
|
+ payDetail.setIsPay(false);
|
|
|
+ payDetail.setId(IdWorker.getIdStr());
|
|
|
+ return payDetail;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ WxPayUnifiedOrderRequest wxPayUnifiedOrderRequest = new WxPayUnifiedOrderRequest();
|
|
|
+ wxPayUnifiedOrderRequest.setBody("商城支付费用");
|
|
|
+ wxPayUnifiedOrderRequest.setTotalFee((int)ArithUtils.mul(payment.doubleValue(), 100));
|
|
|
+ wxPayUnifiedOrderRequest.setSubOpenid(openId);
|
|
|
+ wxPayUnifiedOrderRequest.setNonceStr(StringUtil.getUUID());
|
|
|
+ wxPayUnifiedOrderRequest.setOutTradeNo(id +"-"+ StringUtil.getRandomSMS());
|
|
|
+ wxPayUnifiedOrderRequest.setAttach(id);//支付通过该方式回调处理
|
|
|
+ //wxPayUnifiedOrderRequest.setTradeType("JSAPI");
|
|
|
+ wxPayUnifiedOrderRequest.setTradeType(tradeType);
|
|
|
+ wxPayUnifiedOrderRequest.setProductId(id);
|
|
|
+ wxPayUnifiedOrderRequest.setNotifyUrl(payService.getConfig().getNotifyUrl());
|
|
|
+ wxPayUnifiedOrderRequest.setSpbillCreateIp(ip);
|
|
|
+ wxPayUnifiedOrderRequest.setProfitSharing(profitSharingFlag);
|
|
|
+ WxPayUnifiedOrderResult wxPayUnifiedOrderResult = payService.unifiedOrder(wxPayUnifiedOrderRequest);
|
|
|
+ log.info("服务商调起支付result:{}",JSONObject.toJSONString(wxPayUnifiedOrderResult));
|
|
|
+ String returnCode = wxPayUnifiedOrderResult.getReturnCode();
|
|
|
+ if (!StringUtils.equals(returnCode, "SUCCESS")) {
|
|
|
+ throw new RemoteServiceException( "微信调起支付失败:" + wxPayUnifiedOrderResult.getReturnMsg());
|
|
|
+ }
|
|
|
+
|
|
|
+ //二次签名
|
|
|
+ String time = System.currentTimeMillis() / 1000 + "";
|
|
|
+ String prepayId = "prepay_id=" + wxPayUnifiedOrderResult.getPrepayId();
|
|
|
+ String nonceStr = wxPayUnifiedOrderResult.getNonceStr();
|
|
|
+ String twoSign = this.getTwoSign(prepayId, nonceStr, time,payService.getConfig().getSubAppId(),payService.getConfig().getMchKey());
|
|
|
+ PayDetail payDetail = new PayDetail();
|
|
|
+ payDetail.setPayPackage(prepayId);
|
|
|
+ payDetail.setPaySign(twoSign);
|
|
|
+ payDetail.setNonceStr(wxPayUnifiedOrderResult.getNonceStr());
|
|
|
+ payDetail.setTimeStamp(time);
|
|
|
+ payDetail.setCodeUrl(wxPayUnifiedOrderResult.getCodeURL());
|
|
|
+ //h5的url
|
|
|
+ if(StringUtils.isNotBlank(wxPayUnifiedOrderResult.getMwebUrl())) {
|
|
|
+ payDetail.setCodeUrl(wxPayUnifiedOrderResult.getMwebUrl());
|
|
|
+ }
|
|
|
+ payDetail.setId(id);
|
|
|
+ log.info("payDetail:{}",JSONObject.toJSONString(payDetail));
|
|
|
+ return payDetail;
|
|
|
+ }
|
|
|
}
|