支付宝-商家券通知接口服务

支付宝-商家券通知接口服务

官方文档 https://opendocs.alipay.com/common/02km9j

配置沙箱环境

  1. 订阅所需要的消息

  2. 配置应用网关地址

  • 如果外网可以正常访问你的ip就不需要配置。如果是本地测试我们需要借助 内网穿透,可以让外网正常访问我们的ip,设置链接
  • 用配置好的ip + 我们的控制器名称即可,控制器名称在下面代码中。

编写接收通知服务代码

定义消息通知接口名称

public interface AlipayNotifyMsgMethod {

    // ***************************************** 商家劵 *****************************************
    /**
     * 商家券创建通知接口
     */
    String ALIPAY_MARKETING_ACTIVITY_MESSAGE_CREATED = "alipay.marketing.activity.message.created";

    /**
     * 商家券修改通知接口
     */
    String ALIPAY_MARKETING_ACTIVITY_MESSAGE_MODIFIED = "alipay.marketing.activity.message.modified";

    /**
     * 商家券停止通知接口
     */
    String ALIPAY_MARKETING_ACTIVITY_MESSAGE_STOPPED = "alipay.marketing.activity.message.stopped";

    /**
     * 商家券领取通知接口
     */
    String ALIPAY_MARKETING_ACTIVITY_MESSAGE_RECEIVED = "alipay.marketing.activity.message.received";

    /**
     * 商家券追加通知接口
     */
    String ALIPAY_MARKETING_ACTIVITY_MESSAGE_APPENDED = "alipay.marketing.activity.message.appended";

    /**
     * 过期优惠券的通知接口
     */
    String ALIPAY_MARKETING_ACTIVITY_MESSAGE_EXPIRED = "alipay.marketing.activity.message.expired";

    /**
     * 过期优惠券的通知接口
     */
    String ALIPAY_MARKETING_ACTIVITY_MESSAGE_USED = "alipay.marketing.activity.message.used";
}

接收异步消息方法

@Slf4j
@Api(tags = "支付宝-通知接口服务")
@RestController
@RequestMapping("/alipay/notify")
public class AlipayNotifyController {

    /**
     * 回调成功
     */
    private final static String ALIPAY_CALLBACK_SUCCESS = "success";

    /**
     * 回调失败
     */
    private final static String ALIPAY_CALLBACK_FAIL = "fail";


    @ApiOperation(value = "form蚂蚁消息通知接口", httpMethod = "POST")
    @PostMapping("/v1/receiveMessage")
    public String aliPayNotify(HttpServletRequest request){

        // 获取表单请求信息
        Map<String, String> mapParams = new HashMap<>(25);
        Map<String, String[]> requestParams = request.getParameterMap();
        if (requestParams.isEmpty()) {
            return ALIPAY_CALLBACK_FAIL;
        }

        // 解析表单参数
        for (String name : requestParams.keySet()) {
            String[] values = requestParams.get(name);
            String valueStr = "";
            for (int i = 0; i < values.length; i++) {
                valueStr = (i == values.length - 1) ? valueStr + values[i] : valueStr + values[i] + ",";
            }
            mapParams.put(name, valueStr);
        }

        log.warn("【接收通知接口信息】表单信息:{}", JSON.toJSONString(mapParams));

        // 消息转发内容-json字符串
        String content = mapParams.get("biz_content");
        // 解析消息内容
        JSONObject jsonObject = JSON.parseObject(content);
        // 请求时间戳
        String timestamp = mapParams.get("utc_timestamp");
        // 请求签名
        String sign = mapParams.get("sign");

        log.warn("【接口通知接口成功】消息内容:{}, 时间戳:{}, 签名:{}", content, timestamp, sign);

        // ********************************************** 蚂蚁通知 **********************************************
        // 获取蚂蚁消息通知的接口名
        String msgMethod = mapParams.get("msg_method");

        log.warn("【异步通知接口为】:{}", msgMethod);

        // 过滤非蚂蚁通知
        if (StringUtils.isNotEmpty(msgMethod)) {

            switch (msgMethod) {
                case AlipayNotifyMsgMethod.ALIPAY_MARKETING_ACTIVITY_MESSAGE_CREATED:
                    // 商家券创建通知接口
                    log.warn("【支付宝-商家卷-活动创建消息通知接口】:{}", content);
                    break;
                case AlipayNotifyMsgMethod.ALIPAY_MARKETING_ACTIVITY_MESSAGE_RECEIVED:
                    // 商家券领取通知接口
                    log.warn("【支付宝-商家卷-商家券领取通知接口】:{}", content);
                    break;
                case AlipayNotifyMsgMethod.ALIPAY_MARKETING_ACTIVITY_MESSAGE_MODIFIED:
                    // 商家券修改通知接口
                    log.warn("【支付宝-商家卷-商家券修改通知接口】:{}", content);
                    break;
                case AlipayNotifyMsgMethod.ALIPAY_MARKETING_ACTIVITY_MESSAGE_STOPPED:
                    // 商家券停止通知接口
                    log.warn("【支付宝-商家卷-商家券停止通知接口】:{}", content);
                    break;
                case AlipayNotifyMsgMethod.ALIPAY_MARKETING_ACTIVITY_MESSAGE_APPENDED:
                    // 商家券追加通知接口
                    log.warn("【支付宝-商家卷-商家券追加通知接口】:{}", content);
                    break;
                case AlipayNotifyMsgMethod.ALIPAY_MARKETING_ACTIVITY_MESSAGE_USED:
                    // 商家券核销消息接口
                    log.warn("【支付宝-商家卷-商家券核销通知接口】:{}", content);
                    break;
                case AlipayNotifyMsgMethod.ALIPAY_MARKETING_ACTIVITY_MESSAGE_EXPIRED:
                    // 商家券过期通知接口
                    log.warn("【支付宝-商家卷-商家券过期通知接口】:{}", content);
                    break;
                default:
            }
        }
        return ALIPAY_CALLBACK_SUCCESS;
    }
}

配置应用网关地址

内网穿透的ip + /alipay/notify/v1/receiveMessage

posted @ 2022-11-09 16:44  橙香五花肉  阅读(136)  评论(0编辑  收藏  举报