增加微信H5由payment项目地址统一跳转

This commit is contained in:
dingzhiwei 2022-01-26 00:44:22 +08:00
parent 71b4cc667f
commit f5ee97aed4
4 changed files with 70 additions and 5 deletions

View File

@ -15,6 +15,7 @@
*/
package com.jeequan.jeepay.pay.channel.wxpay.payway;
import cn.hutool.core.codec.Base64;
import com.github.binarywang.wxpay.bean.order.WxPayMwebOrderResult;
import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest;
import com.github.binarywang.wxpay.constant.WxPayConstants;
@ -34,6 +35,8 @@ import com.jeequan.jeepay.pay.util.ApiResBuilder;
import com.jeequan.jeepay.pay.model.MchAppConfigContext;
import org.springframework.stereotype.Service;
import java.nio.charset.StandardCharsets;
/*
* 微信 H5 支付
*
@ -72,14 +75,13 @@ public class WxH5 extends WxpayPaymentService {
WxPayMwebOrderResult wxPayMwebOrderResult = wxPayService.createOrder(req);
String payUrl = wxPayMwebOrderResult.getMwebUrl();
payUrl = sysConfigService.getDBApplicationConfig().getPaySiteUrl() + "/api/common/payUrl/" + Base64.encode(payUrl);
if(CS.PAY_DATA_TYPE.FORM.equals(bizRQ.getPayDataType())){ //表单方式
res.setFormContent(payUrl);
}else if (CS.PAY_DATA_TYPE.CODE_IMG_URL.equals(bizRQ.getPayDataType())){ //二维码图片地址
res.setCodeImgUrl(sysConfigService.getDBApplicationConfig().genScanImgUrl(payUrl));
}else{ // 默认都为 payUrl方式
res.setPayUrl(payUrl);
}

View File

@ -15,6 +15,7 @@
*/
package com.jeequan.jeepay.pay.channel.wxpay.paywayV3;
import cn.hutool.core.codec.Base64;
import com.alibaba.fastjson.JSONObject;
import com.github.binarywang.wxpay.constant.WxPayConstants;
import com.github.binarywang.wxpay.exception.WxPayException;
@ -88,11 +89,10 @@ public class WxH5 extends WxpayPaymentService {
JSONObject resJSON = WxpayV3Util.unifiedOrderV3(reqUrl, reqJSON, wxPayService.getConfig());
String payUrl = resJSON.getString("h5_url");
payUrl = sysConfigService.getDBApplicationConfig().getPaySiteUrl() + "/api/common/payUrl/" + Base64.encode(payUrl);
if (CS.PAY_DATA_TYPE.CODE_IMG_URL.equals(bizRQ.getPayDataType())){ //二维码图片地址
res.setCodeImgUrl(sysConfigService.getDBApplicationConfig().genScanImgUrl(payUrl));
}else{ // 默认都为 payUrl方式
res.setPayUrl(payUrl);
}

View File

@ -0,0 +1,62 @@
/*
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
* <p>
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.gnu.org/licenses/lgpl.html
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.jeequan.jeepay.pay.ctrl;
import cn.hutool.core.codec.Base64;
import com.jeequan.jeepay.core.ctrls.AbstractCtrl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import java.io.IOException;
/*
* 通用处理
*
* @author jmdhappy
* @site https://www.jeequan.com
* @date 2022/01/25 23:38
*/
@Slf4j
@Controller
@RequestMapping("/api/common")
public class CommonController extends AbstractCtrl {
/**
* 跳转到支付页面(适合网关支付form表单输出)
* @param payData
* @return
*/
@RequestMapping(value = "/payForm/{payData}")
private String toPayForm(@PathVariable("payData") String payData){
request.setAttribute("payHtml", Base64.decodeStr(payData));
return "common/toPay";
}
/**
* 跳转到支付页面(适合微信H5跳转与referer一致)
* @param payData
* @return
*/
@RequestMapping(value = "/payUrl/{payData}")
private String toPayUrl(@PathVariable("payData") String payData) {
String payUrl = Base64.decodeStr(payData);
request.setAttribute("payHtml", "<script>window.location.href = '"+payUrl+"';</script>");
return "common/toPay";
}
}

View File

@ -0,0 +1 @@
${payHtml!''}