公众号支付 + 回调解析 + 配置文件补充

This commit is contained in:
clunt 2022-04-11 15:16:21 +08:00
parent d11d8cb3f9
commit 9956a2bd7d
7 changed files with 53 additions and 14 deletions

View File

@ -1,6 +1,9 @@
package com.ghy.web.controller.pay;
import com.alibaba.fastjson.JSONObject;
import com.ghy.common.adapay.AdapayService;
import com.ghy.common.adapay.callback.model.WxLiteExpend;
import com.ghy.common.adapay.callback.reply.WxPubPayCallBack;
import com.ghy.common.core.controller.BaseController;
import com.ghy.common.core.domain.AjaxResult;
import com.ghy.common.utils.WxUtils;
@ -15,11 +18,13 @@ import javax.servlet.http.HttpServletRequest;
@RequestMapping("/pay/wx")
public class WxPayController extends BaseController {
private AdapayService adapayService;
/**
* 微信公众号支付.
* https://open.weixin.qq.com/connect/oauth2/authorize?
* appid=wx404f2439a8c24e15
* &redirect_uri=http%3A%2F%2Fwww.opsoul.com%2Fwx%2Fopenid
* &redirect_uri=http%3A%2F%2Fwww.opsoul.com%2Fpay%2Fwx%2Fpub
* &response_type=code
* &scope=snsapi_userinfo&state=STATE&connect_redirect=1#wechat_redirect
* */
@ -27,17 +32,21 @@ public class WxPayController extends BaseController {
@ResponseBody
public AjaxResult pubPay(HttpServletRequest request){
String code = request.getParameter("code");
String orderId = request.getParameter("orderId");
//测试时前端不带订单号.
// String orderId = request.getParameter("orderId");
// 查询回订单信息如果订单不存在则退出.
try {
JSONObject wxUser = WxUtils.getOpenid(code);
String openId = wxUser.getString("openid");
//调用adapay微信公众号支付.
WxLiteExpend expend = new WxLiteExpend();
expend.setOpen_id(openId);
adapayService.wxPubPay(new WxPubPayCallBack(), expend, "wxPay123456" + Math.ceil(Math.random()*100), "1.00",
"测试商品", "测试商品detail", "description");
//拼接消息给前端.前端通过JSAPI调用微信支付
}catch (Exception e){
e.printStackTrace();
logger.error(e.getMessage());
}
return AjaxResult.success();
}

View File

@ -148,8 +148,8 @@ qiniu:
mediaUrl: 'http://gqz.opsoul.com/'
adapay:
appId:
notifyUrl:
apiKey:
mockApiKey:
rsaPrivateKey:
appId: 'app_01af32e7-6173-414f-88e5-79cae64d5e24'
notifyUrl: 'http://www.opsoul.com/adapay/callback'
apiKey: 'api_live_93a2fb4f-a74a-416f-967d-68557bcde43f'
mockApiKey: 'api_test_88bf2958-583d-41cd-a987-01fe767ff056'
rsaPrivateKey: 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCxcoRizdqBD3pEYVlJg/BkmNoHA2T/craoCKKh2rjBo3GKmuug6mHi+gesxtiGe6arcNU7Yv20rSySHw/rKpp7pNHivLrV4lHWjIVfV/2OCTpPzAbEoWr2nfx9UhQxru5Jue/fsO6VjPv27sFMXJ8pRmqok+eRDUqjuEEKr74oQwIDAQAB'

View File

@ -12,7 +12,6 @@ import com.huifu.adapay.core.exception.BaseAdaPayException;
import com.huifu.adapay.model.Drawcash;
import com.huifu.adapay.model.Payment;
import com.huifu.adapay.model.Refund;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.Assert;
@ -23,7 +22,6 @@ import java.util.Map;
* @author HH 2022/3/25
*/
@Slf4j
@Setter
public class AdapayService {
AdapayProperties adapayProperties;
@ -68,6 +66,14 @@ public class AdapayService {
return pay(callback, PayChannelEnum.ALIPAY_QR.getCode(), expend, orderNo, payAmt, goodsTittle, goodsDesc, description);
}
/**
* 微信小程序支付
*/
public Map<String, Object> wxPubPay(PayCallback callback, WxLiteExpend expend, String orderNo, String payAmt,
String goodsTittle, String goodsDesc, String description) throws BaseAdaPayException {
return pay(callback, PayChannelEnum.WX_PUB.getCode(), expend, orderNo, payAmt, goodsTittle, goodsDesc, description);
}
/**
* 微信小程序支付
*/

View File

@ -8,7 +8,8 @@ package com.ghy.common.adapay;
public enum PayChannelEnum {
ALIPAY_QR("alipay_qr", "支付宝正扫"),
WX_LITE("wx_lite", "wx_lite");
WX_LITE("wx_lite", "微信小程序"),
WX_PUB("wx_pub", "微信公众号");
private final String code;
private final String description;

View File

@ -1,7 +1,14 @@
package com.ghy.common.adapay.callback.model;
import lombok.Data;
/**
* @author HH 2022/3/31
*/
@Data
public class Expend {
private String open_id;
}

View File

@ -0,0 +1,15 @@
package com.ghy.common.adapay.callback.reply;
import com.ghy.common.adapay.callback.PayCallback;
import com.ghy.common.adapay.callback.model.PayReply;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class WxPubPayCallBack implements PayCallback {
@Override
public void onReply(PayReply reply) {
// 更新工单状态
log.info("wx pub pay response is : " + reply.toString());
}
}

View File

@ -277,8 +277,9 @@ public class ShiroConfig
LinkedHashMap<String, String> filterChainDefinitionMap = new LinkedHashMap<>();
//部分接口不需要登陆校验
filterChainDefinitionMap.put("/wx/**", "anon");
// 对静态资源设置匿名访问
filterChainDefinitionMap.put("/adapay/**", "anon");
filterChainDefinitionMap.put("/MP_verify_bRFuvYpyQ4WLr0on.txt", "anon");
// 对静态资源设置匿名访问
filterChainDefinitionMap.put("/favicon.ico**", "anon");
filterChainDefinitionMap.put("/ruoyi.png**", "anon");
filterChainDefinitionMap.put("/html/**", "anon");