WxJava icon indicating copy to clipboard operation
WxJava copied to clipboard

新版商家转账 - 回调

Open yexua opened this issue 8 months ago • 2 comments

是否有大佬可以提供一个Controller demo处理转账回调,感谢

yexua avatar Apr 11 '25 08:04 yexua

自己试着写了写,解析正常给大家参考下

@PostMapping(value = "/transfer/notify")
    public ResponseEntity<String> transferNotify(HttpServletRequest request, @RequestBody String notifyData) {
        SignatureHeader header = getRequestHeader(request);
        try {
            TransferBillsNotifyResult transferBillsNotifyResult = this.wxPayService.parseTransferBillsNotifyV3Result(notifyData, header);
            log.info("转账通知: {}", transferBillsNotifyResult);
            String resp = WxPayNotifyV3Response.success("");
            return ResponseEntity.ok(resp);
        } catch (Exception e) {
            log.error("WxPayController#transferNotify", e);
            String resp = WxPayNotifyV3Response.fail("系统错误");
            return ResponseEntity.status(500).body(resp);
        }
    }

    /**
     * 组装请求头重的前面信息
     *
     * @param request
     * @return
     */
    private SignatureHeader getRequestHeader(HttpServletRequest request) {
        // 获取通知签名
        String signature = request.getHeader("Wechatpay-Signature");
        String nonce = request.getHeader("Wechatpay-Nonce");
        String serial = request.getHeader("Wechatpay-Serial");
        String timestamp = request.getHeader("Wechatpay-Timestamp");

        SignatureHeader signatureHeader = new SignatureHeader();
        signatureHeader.setSignature(signature);
        signatureHeader.setNonce(nonce);
        signatureHeader.setSerial(serial);
        signatureHeader.setTimeStamp(timestamp);
        return signatureHeader;
    }

yexua avatar Apr 11 '25 12:04 yexua

欢迎你把代码直接通过PR贡献到demo里

binarywang avatar Apr 11 '25 14:04 binarywang