前言
记录个示例,怕以后忘了又去找
正文
接口
/**
* <pre>
* 微信支付成功回调函数
* 此函数会被执行多次,通知频率为15s/15s/30s/3m/10m/20m/30m/30m/30m/60m/3h/3h/3h/6h/6h - 总计 24h4m
* 请求入参示例:
* <xml><appid><![CDATA[XXXXX]]></appid><bank_type><![CDATA[OTHERS]]></bank_type><cash_fee><![CDATA[10]]></cash_fee><fee_type><![CDATA[CNY]]></fee_type><is_subscribe><![CDATA[N]]></is_subscribe>
* <mch_id><![CDATA[XXXXX123]]></mch_id><nonce_str><![CDATA[4GICBgXzvwngnfsHQPQeC7dKmxXsmcpi]]></nonce_str><openid><![CDATA[oFd-P5VFL6KYQMVD6YGMT8wSHAlY]]></openid>
* <out_trade_no><![CDATA[f7b1c1c820cd41b1b8029d49655e9031]]></out_trade_no><result_code><![CDATA[SUCCESS]]></result_code><return_code><![CDATA[SUCCESS]]></return_code>
* <sign><![CDATA[33AD26158C9AC8C6F3DFCECF932DD73E35DB97A7AB22CCE9850A6A280F4F596D]]></sign><time_end><![CDATA[20210623153126]]></time_end><total_fee>10</total_fee><trade_type><![CDATA[JSAPI]]></trade_type>
* <transaction_id><![CDATA[4200001168202106236790274028]]></transaction_id></xml>
* </pre>
* @param param 支付成功通知信息
* @return java.lang.String
* @date 2021/6/4 10:37
* @author wei.heng
*/
@ApiIgnore
@PostMapping(value = "/success", produces = MediaType.TEXT_PLAIN_VALUE)
@ResponseBody
@AppLog(title = "微信平台-支付成功回调通知", businessType = BusinessType.PAY, operatorType = OperatorType.APPLET)
public String successNotify(@RequestBody WxPayNotifyParam param) {
log.info("successNotify WxPayNotifyParam:{}", param);
return payOrderService.successNotify(param);
}
回调参数对象
/**
* 微信支付成功回调接口入参
* @date 2021/6/4 14:47
* @author wei.heng
*/
@JacksonXmlRootElement(localName = "xml")
@Data
@NoArgsConstructor
@AllArgsConstructor
@ApiIgnore
public class WxPayNotifyParam {
/** 应用ID */
private String appid;
/** 附加数据 */
private String attach;
/** 付款银行 - 见官方 《银行类型对照表》 */
private String bank_type;
/** 货币类型 - 见 FeeType 枚举 */
private String fee_type;
/** */
private String is_subscribe;
/** 商户ID */
private String mch_id;
/** 随机字符串 */
private String nonce_str;
/** 用户唯一标识 */
private String openid;
/** 平台侧订单ID */
private Long tradeId;
/** 订单编号 */
private String out_trade_no;
/** 结果编码 */
private String result_code;
/** 返回编码 */
private String return_code;
/** 加签信息 */
private String sign;
/** 结束时间 */
private String time_end;
/** 支付总金额 */
private String total_fee;
/** 订单支付类型 - 见 TradeType 枚举 */
private String trade_type;
/** 微信支付系统生成的订单号 */
private String transaction_id;
/** 这个字段没找到是干撒用的 - 不影响业务,先不管 */
private String cash_fee;
/** 优惠卷ID */
private String coupon_id;
/** 优惠卷金额 */
private String coupon_fee;
/** 优惠卷数量 */
private String coupon_count;
/** 优惠卷类型 */
private String coupon_type;
}
依赖
<!-- controller xml入参解析为参数对象 -->
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
</dependency>