|
|
|
package com.ynxbd.common.action.pay;
|
|
|
|
|
|
|
|
import com.ynxbd.common.action.base.BaseAction;
|
|
|
|
import com.ynxbd.common.bean.enums.MerchantEnum;
|
|
|
|
import com.ynxbd.common.result.Result;
|
|
|
|
import com.ynxbd.common.result.ServiceException;
|
|
|
|
import com.ynxbd.common.service.*;
|
|
|
|
import com.ynxbd.wx.wxfactory.WxPayHelper;
|
|
|
|
import com.ynxbd.wx.wxfactory.bean.WxPayNotify;
|
|
|
|
import com.ynxbd.wx.wxfactory.utils.WxRespHelper;
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
import org.apache.struts2.convention.annotation.Action;
|
|
|
|
import org.apache.struts2.convention.annotation.Namespace;
|
|
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
|
import java.util.Date;
|
|
|
|
|
|
|
|
|
|
|
|
@Slf4j
|
|
|
|
@Namespace("/wx_pay")
|
|
|
|
public class WxPayAction extends BaseAction {
|
|
|
|
/**
|
|
|
|
* [微信]jsapi通知
|
|
|
|
*
|
|
|
|
* @return 是否成功
|
|
|
|
*/
|
|
|
|
@Action("apiNotify")
|
|
|
|
public Result apiNotify() {
|
|
|
|
try {
|
|
|
|
WxPayNotify notifyInfo = WxPayHelper.payNotify(request);
|
|
|
|
Result.respXml(WxRespHelper.respOk()); // 收到请求-解析成功
|
|
|
|
|
|
|
|
PayService.WxNotify(notifyInfo);
|
|
|
|
} catch (ServiceException e) {
|
|
|
|
Result.respXml(WxRespHelper.resp(e)); // 收到请求-解析失败
|
|
|
|
}
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* [微信]native支付通知
|
|
|
|
*
|
|
|
|
* @return 是否成功
|
|
|
|
*/
|
|
|
|
@Action("nativeNotify")
|
|
|
|
public Result nativeNotify() {
|
|
|
|
try {
|
|
|
|
WxPayNotify notifyInfo = WxPayHelper.payNotify(request);
|
|
|
|
Result.respXml(WxRespHelper.respOk()); // 收到请求-解析成功
|
|
|
|
|
|
|
|
String openid = notifyInfo.getOpenid();
|
|
|
|
String bankTransNo = notifyInfo.getTransactionId();
|
|
|
|
String outTradeNo = notifyInfo.getOutTradeNo();
|
|
|
|
String payInfo = notifyInfo.getPayInfo();
|
|
|
|
BigDecimal totalFee = notifyInfo.getTotalFee();
|
|
|
|
|
|
|
|
String notifyType = notifyInfo.getAttach();
|
|
|
|
|
|
|
|
log.info("notifyInfo={}", notifyInfo);
|
|
|
|
log.info("【微信】[{}] native收到通知 outTradeNo={}, bankTransNo={}", notifyType, outTradeNo, bankTransNo);
|
|
|
|
|
|
|
|
switch (PQREnum.toEnum(notifyType)) {
|
|
|
|
case OUT_COLLECT:
|
|
|
|
new OutCollectService().ocPayNotify(MerchantEnum.WX, openid, totalFee, bankTransNo, outTradeNo, payInfo);
|
|
|
|
break;
|
|
|
|
|
|
|
|
default:
|
|
|
|
log.info("【微信native支付】通知类型错误,结束请求");
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
} catch (ServiceException e) {
|
|
|
|
Result.respXml(WxRespHelper.resp(e)); // 收到请求-解析失败
|
|
|
|
}
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
}
|