首页 > 其他分享 >支付宝-商家券通知接口服务

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

时间:2022-11-09 16:58:00浏览次数:60  
标签:ALIPAY 支付宝 String 商家 通知 接口 ACTIVITY

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

官方文档 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

标签:ALIPAY,支付宝,String,商家,通知,接口,ACTIVITY
From: https://www.cnblogs.com/zjh0420/p/16874325.html

相关文章

  • 支付宝-创建商家券活动
    支付宝-创建商家券活动官方文档https://opendocs.alipay.com/open/03s1jd?ref=api&scene=a0667e04ac87431eb7e6adc5f13cc8ba本篇只是附上创建代码!重要的事情说三遍!......
  • GO语言实战-小程序或公众号接口gin框架验证微信服务器消息签名
    在开发GO小程序或者公众号接口的时候,需要对接微信消息的token签名验证,这时候需要开发者验证来自微信,并返回指定的字符串微信文档里给的是PHP版本的代码,下面这个......
  • 系统接口安全设计
    1系统接口安全设计接口运行环境为互联网环境,接口安全尤为重要,我们设计三个机制保障接口数据安全。1.1客户端授权机制第三方单位需要向地环总站申请对接appKey客户端系......
  • PHP WebService接口开发
    生成wsdl文件,php不能生成入参对象的形式,用java生成比较简单。安装IntelliJIDEAsdk:1.8(不要使用高版本)打开项目下载soap.zip,IDEA打开项目。左侧项目列表,右键项目......
  • python一个好玩的库,可以直接调接口数据,进行数据分析,不用去爬取数据集再进行分析了
    python一个好玩的库,可以直接调接口数据,进行数据分析,不用去爬取数据集再进行分析了简介这个库的名字叫GoPUP,GitHub主页是:https://github.com/justinzm/gopup这其实是一个基......
  • 初识接口
    接口接口的定义和使用接口用关键字interface来定义接口不能实例化接口和类之间是实现关系,通过implments关键字表示publicclass类名implements接口名{}接......
  • Collection接口实现类的特点及常用方法
    特点:1.Collection实现子类可以存放多个元素,每个元素可以是object2.有些Collection的实现类,可以存放重复的元素,有些不可3.有些Collection的实现类,有些是有序地list,有些不......
  • 15-jmeter-压测带token的接口
    前言工作中我们需要压测的接口大部分都是需要先登陆后,带着token的接口(或者带着cookies),我们可以先登陆获取token再关联到下个接口。比如我现在要压测一个重置支付密码接口,......
  • 【luffy】前台全局样式、后台主页模块接口、跨域问题、自定义配置、git介绍和安装
    目录1.前台全局样式和js配置1.1bodydiv默认样式,统一去掉1.2全局配置2.后台主页模块接口2.1根据原型图分析出来2.2软件开发模式2.3轮播图表2.4轮播图接口编写3.......
  • 【AGC】云数据库Server调用接口报错“2016”问题分析
     问题背景: 开发者在服务器端的服务中集成云数据库服务的ServerSDK就可以在服务器上直接管理云侧数据库中的数据,调用它提供的接口,完成相关服务功能开发。可是有些开发者......