| | |
| | | import com.ruoyi.order.service.order.OrderService; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import lombok.extern.log4j.Log4j2; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | |
| | | import java.io.IOException; |
| | | import java.nio.charset.StandardCharsets; |
| | | import java.security.GeneralSecurityException; |
| | | import java.util.Collection; |
| | | import java.util.Enumeration; |
| | | import java.util.Map; |
| | | import java.util.Objects; |
| | | |
| | |
| | | @Api(value = "微信通知控制", tags = "微信通知控制", description = "微信通知控制") |
| | | @RestController |
| | | @RequestMapping("/app/notify") |
| | | @Log4j2 |
| | | public class NotifyController extends BaseController { |
| | | |
| | | public static final String WECHAT_PAY_SERIAL = "Wechatpay-Serial"; |
| | |
| | | @ApiOperation(value = "微信支付/退款通知") |
| | | public String payNotify(@RequestBody String notifyData, HttpServletRequest request, HttpServletResponse response) throws WxPayException { |
| | | |
| | | Enumeration<String> headerNames = request.getHeaderNames(); |
| | | while (headerNames.hasMoreElements()){ |
| | | String name = headerNames.nextElement(); |
| | | log.info("request headerNames: {}", name); |
| | | } |
| | | |
| | | Collection<String> headerNames1 = response.getHeaderNames(); |
| | | for (String name : headerNames1) { |
| | | log.info("request headerNames: {}", name); |
| | | } |
| | | |
| | | // 获取请求头 |
| | | SignatureHeader signatureHeader = getSignatureHeader(response); |
| | | SignatureHeader signatureHeader = getSignatureHeader(request); |
| | | |
| | | log.info("微信支付/退款通知: {}", notifyData); |
| | | |
| | | NotifyResponse responseData = GSON.fromJson(notifyData, NotifyResponse.class); |
| | | String eventType = responseData.getEventType(); |
| | |
| | | // 保存支付/退款回调信息 |
| | | backMessageService.saveBackMessage(resultType, resultMessage); |
| | | |
| | | |
| | | return WxPayNotifyV3Response.success("成功"); |
| | | } |
| | | |
| | |
| | | public String profitSharingNotify(@RequestBody String notifyData, HttpServletRequest request, HttpServletResponse response) throws WxPayException { |
| | | ProfitSharingV3Service sharingV3Service = wxService.getProfitSharingV3Service(); |
| | | // ProfitSharingNotifyResult |
| | | log.info("微信分账通知: {}", notifyData); |
| | | |
| | | // 获取请求头 |
| | | SignatureHeader signatureHeader = getSignatureHeader(response); |
| | | |
| | | SignatureHeader signatureHeader = getSignatureHeader(request); |
| | | |
| | | ProfitSharingNotifyNewResult notifyResult = getProfitSharingNotifyData(notifyData, signatureHeader); |
| | | ProfitSharingNotifyResult result = notifyResult.getResult(); |
| | |
| | | beforeSign.getBytes(StandardCharsets.UTF_8), header.getSigned()); |
| | | } |
| | | |
| | | private SignatureHeader getSignatureHeader(HttpServletResponse response){ |
| | | private SignatureHeader getSignatureHeader(HttpServletRequest request){ |
| | | SignatureHeader signatureHeader = new SignatureHeader(); |
| | | signatureHeader.setSerialNo(response.getHeader(WECHAT_PAY_SERIAL)); |
| | | signatureHeader.setSigned(response.getHeader(WECHAT_PAY_SIGNATURE)); |
| | | signatureHeader.setNonce(response.getHeader(WECHAT_PAY_NONCE)); |
| | | signatureHeader.setTimeStamp(response.getHeader(WECHAT_PAY_TIMESTAMP)); |
| | | signatureHeader.setSerialNo(request.getHeader(WECHAT_PAY_SERIAL)); |
| | | signatureHeader.setSigned(request.getHeader(WECHAT_PAY_SIGNATURE)); |
| | | signatureHeader.setNonce(request.getHeader(WECHAT_PAY_NONCE)); |
| | | signatureHeader.setTimeStamp(request.getHeader(WECHAT_PAY_TIMESTAMP)); |
| | | |
| | | log.info("timeStamp:{} nonce : {} signed:{} serialNo:{}", |
| | | signatureHeader.getTimeStamp(), |
| | | signatureHeader.getNonce(), |
| | | signatureHeader.getSigned(), |
| | | signatureHeader.getSerialNo()); |
| | | |
| | | return signatureHeader; |
| | | } |
| | | } |