支付宝开放平台第三方代小程序开发,消息服务推送通知总结

news/2024/7/20 4:08:00 标签: 支付宝开放平台, 小程序

大家好,我是小悟

关于支付宝开放平台第三方代小程序开发的消息服务推送通知,是开放平台代小程序实现业务的重要功能。

消息服务推送通知,支持商家两种通讯协议来接收消息,分别为websocket 长连接和http。

关于websocket方式,在之前的文章已分享过,可参考 WebSocket长连接接入支付宝消息服务,实现消息通知。

创建好第三方应用后,在产品绑定-绑定产品,添加【小程序开发管理】权限集。

在这里插入图片描述

只有添加了对应的权限集,消息服务控制台才会显示对应的消息名称用来订阅。与 http 相比,websocket 方式接入性能更优,通道安全,减少成本,接入快速等优势。但两种方式都可以实现,怎么方便怎么来。
图片

支付宝模板小程序开发这边主要用到了第三方应用授权取消通知、商户确认服务商代创建小程序结果通知、商户确认服务商代创建试用小程序结果通知、小程序审核通过通知、小程序审核驳回通知、小程序审核不可营销通知。

值得注意的是,服务商向商家发送授权链接(或授权二维码)的授权方式不会触发授权通知,商家订购模板服务时授权、服务商协助商家创建小程序时授权或商家签约即授权等场景,会触发授权通知。

消息服务推送通知

第三方应用授权取消通知,商户取消对服务商应用的授权时会触发此消息,服务商可以针对此消息做业务处理。websocket和http方式下分别是msgApi和msg_method对应取值为alipay.open.auth.appauth.cancelled。

ISV_GATEWAY_URL?charset=UTF-8&biz_content=
{
"app_auth_token":"211203BB6e8df9252c9e179d9f4c94d57d510X00",
"app_id":"2014072300007148",
"auth_app_id":"2013072300101234",
"user_id":"2088100000034011"
}
&msg_method=alipay.open.auth.appauth.cancelled&utc_timestamp=1516797622752&version=1.1&sign_type=RSA2&notify_id=d275fec564e62af6bedbcee73f3f05fi5x&app_id=2013121700999429&sign=I+Y/lvqYUEEc10EPdpntRhFIQ==

商户确认服务商代创建小程序结果通知,商户确认服务商代创建小程序申请后,通知服务商商户确认结果。websocket和http方式下分别是msgApi和msg_method对应取值为alipay.open.mini.merchant.confirmed。

ISV_GATEWAY_URL?charset=UTF-8&biz_content=
{
"order_no":"2394834823942343",
"out_order_no":"23948392483253534535",
"min_app_id":"20218324729872",
"status":"PROCESS",
"pid":"2088002306330746"
}
&msg_method=alipay.open.mini.merchant.confirmed&utc_timestamp=1516797622752&version=1.1&sign_type=RSA2&notify_id=d275fec564e62af6bedbcee73f3f05fi5x&app_id=2013121700999429&sign=I+Y/lvqYUEEc10EPdpntRhFIQ==

商户确认服务商代创建试用小程序结果通知,商户确认服务商代创建试用小程序申请后,通知服务商商户确认结果。websocket和http方式下分别是msgApi和msg_method对应取值为alipay.open.mini.merchant.fastregister.changed。

ISV_GATEWAY_URL?charset=UTF-8&biz_content=
{
"order_no":"2394834823942343",
"out_order_no":"23948392483253534535",
"merchant_app_id":"20218324729872",
"status":"CREATE_MINI_APP_SUCCESS",
"app_name":"张三的试用小程序",
"merchant_id":"208121234234324234234324"
}
&msg_method=alipay.open.mini.merchant.fastregister.changed&utc_timestamp=1516797622752&version=1.1&sign_type=RSA2&notify_id=d275fec564e62af6bedbcee73f3f05fi5x&app_id=2013121700999429&sign=I+Y/lvqYUEEc10EPdpntRhFIQ==

小程序审核通过通知,websocket和http方式下分别是msgApi和msg_method对应取值为alipay.open.mini.version.audit.passed。

ISV_GATEWAY_URL?charset=UTF-8&biz_content=
{
"mini_app_id":"2014072300007148"
}
&msg_method=alipay.open.mini.version.audit.passed&utc_timestamp=1516797622752&version=1.1&sign_type=RSA2&notify_id=d275fec564e62af6bedbcee73f3f05fi5x&app_id=2013121700999429&sign=I+Y/lvqYUEEc10EPdpntRhFIQ==

小程序审核驳回通知,websocket和http方式下分别是msgApi和msg_method对应取值为alipay.open.mini.version.audit.rejected。

ISV_GATEWAY_URL?charset=UTF-8&biz_content=
{
"mini_app_id":"2014072300007148",
"bundle_id":"com.alipay.alipaywallet",
"mini_app_version":"0.0.1",
"audit_reason":"JS错误检测:发现JS错误,请及时优化",
"base_audit":"REJECT",
"promote_audit":"REJECT",
"base_audit_reason":{
        "audit_images":[
          "xxx.png"
        ],
        "memos":[{
          "memo":"JS错误检测:发现JS错误,请及时优化",
            "memo_image_list":[
              "xxx.png"
            ]
          }]
    },
"promote_audit_reason":{
        "audit_images":[
          "xxx.png"
        ],
        "memos":[{
          "memo":"JS错误检测:发现JS错误,请及时优化",
            "memo_image_list":[
              "xxx.png"
            ]
          }]
    }
}
&msg_method=alipay.open.mini.version.audit.rejected&utc_timestamp=1516797622752&version=1.1&sign_type=RSA2&notify_id=d275fec564e62af6bedbcee73f3f05fi5x&app_id=2013121700999429&sign=I+Y/lvqYUEEc10EPdpntRhFIQ==

小程序审核不可营销通知,websocket和http方式下分别是msgApi和msg_method对应取值为alipay.open.mini.version.baseaudit.passed。

ISV_GATEWAY_URL?charset=UTF-8&biz_content=
{
"mini_app_id":"2014072300007148",
"bundle_id":"com.alipay.alipaywallet",
"mini_app_version":"0.0.1",
"audit_reason":"JS错误检测:发现JS错误,请及时优化",
"base_audit":"PASS",
"promote_audit":"REJECT",
"base_audit_reason":{
        "audit_images":[
          "xxx.png"
        ],
        "memos":[{
          "memo":"JS错误检测:发现JS错误,请及时优化",
            "memo_image_list":[
              "xxx.png"
            ]
          }]
    },
"promote_audit_reason":{
        "audit_images":[
          "xxx.png"
        ],
        "memos":[{
          "memo":"JS错误检测:发现JS错误,请及时优化",
            "memo_image_list":[
              "xxx.png"
            ]
          }]
    }
}
&msg_method=alipay.open.mini.version.baseaudit.passed&utc_timestamp=1516797622752&version=1.1&sign_type=RSA2&notify_id=d275fec564e62af6bedbcee73f3f05fi5x&app_id=2013121700999429&sign=I+Y/lvqYUEEc10EPdpntRhFIQ==

收到异步通知后,商家输出success表示消息获取成功,支付宝就会停止发送异步,如果输出fail,表示消息获取失败,支付宝会重新发送消息到异步地址。

@PostMapping(value = "/notify/callback")
public String notifyCallBack(HttpServletRequest request) {
    Map<String, String> result = new HashMap<String, String>();
    Map requestParams = request.getParameterMap();
    for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext(); ) {
        String name = (String) iter.next();
        String[] values = (String[]) requestParams.get(name);
        String valueStr = "";
        for (int i = 0; i < values.length; i++) {
            valueStr = (i == values.length - 1) ? valueStr + values[i]
                    : valueStr + values[i] + ",";
        }
        result.put(name, valueStr);
    }
    String resultStr = JSON.toJSONString(result);
    logger.info("支付宝通知回调参数==========={}", resultStr);
    try {
        boolean flag = AlipaySignature.rsaCertCheckV1(result, alipayPublicCertPath, "utf-8", "RSA2");
        if (flag) {
            logger.info("支付宝通知回调参数success===========");
            String msgMethod = result.get("msg_method");
            if (StringUtils.equals("alipay.open.auth.appauth.cancelled", msgMethod)) {
                logger.info("第三方应用授权取消消息");
            } else if (StringUtils.equals("alipay.open.mini.merchant.confirmed", msgMethod)) {
                logger.info("商户确认服务商代创建小程序结果通知");
            } else if (StringUtils.equals("alipay.open.mini.merchant.fastregister.changed", msgMethod)) {
                logger.info("商户确认服务商代创建试用小程序结果通知");
            } else if (StringUtils.equals("alipay.open.mini.version.audit.passed", msgMethod)) {
                logger.info("小程序审核通过通知");
            } else if (StringUtils.equals("alipay.open.mini.version.audit.rejected", msgMethod)) {
                logger.info("小程序审核驳回通知");
            } else if (StringUtils.equals("alipay.open.mini.version.baseaudit.passed", msgMethod)) {
                logger.info("小程序审核不可营销通知");
            }
            return "success";
        } else {
            logger.info("支付宝通知回调参数failure===========");
            return "fail";
        }
    } catch (AlipayApiException e) {
        e.printStackTrace();
        logger.info("支付宝通知回调参数failure===========");
        return "fail";
    }
}

您的一键三连,是我更新的最大动力,谢谢

山水有相逢,来日皆可期,谢谢阅读,我们再会

我手中的金箍棒,上能通天,下能探海


http://www.niftyadmin.cn/n/5085441.html

相关文章

『heqingchun-ubuntu系统下安装cuda与cudnn』

ubuntu系统下安装cuda与cudnn 一、安装依赖 1.更新 sudo apt updatesudo apt upgrade -y2.基础工具 sudo apt install -y build-essential python二、安装CUDA 1.文件下载 网址 https://developer.nvidia.com/cuda-toolkit-archive依次点击 (1)“CUDA Toolkit 11.6.2”…

windows10系统-15-markdown编辑器和文本复制工具Textify

1 markdown编辑器 Markdown是一种轻量级标记语言&#xff0c;创始人为约翰格鲁伯。 它允许人们使用易读易写的纯文本格式编写文档&#xff0c;然后转换成有效的XHTML&#xff08;或者HTML&#xff09;文档。这种语言吸收了很多在电子邮件中已有的纯文本标记的特性。 1.1 Typo…

【LeetCode:201. 数字范围按位与 | 位运算】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

11在SpringMVC中响应到浏览器的数据格式,@ResponseBody注解和@RestController复合注解的功能详解

响应数据/转发或重定向页面 参考文章数据交换的常见格式,如JSON格式和XML格式 服务器将接收到请求处理完以后需要将处理结果告知给浏览器即响应,通常有响应要转发/重定向到的页面和响应数据(文本数据/json数据)两种方式 如果控制器方法返回值类型为void并且没有通过response…

C++项目:【负载均衡式在线OJ】

文章目录 一、项目介绍 二、技术栈与开发环境 1.所用技术: 2.开发环境&#xff1a; 三、项目演示 1.运行代码 2.进入项目首页 3.题目列表 4.点击具体一道题 5.编辑代码并提交 四、项目思维导图 五、项目宏观结构 六、Comm公共模块 1.日志工具log.hpp 2.其他工具…

java最低位怎么取_java简单的二进制位操作,取位数据,设置位数据

java最低位怎么取_java简单的二进制位操作&#xff0c;取位数据&#xff0c;设置位数据 int转二进制转16进制字符串二进制字符串转int十六进制字符串转int16进制字符串转byte取高位的数据取低位的数据取中间几位 int转二进制 Integer.toBinaryString(123)转16进制字符串 Stri…

【TensorFlow2 之012】TF2.0 中的 TF 迁移学习

#012 TensorFlow 2.0 中的 TF 迁移学习 一、说明 在这篇文章中&#xff0c;我们将展示如何在不从头开始构建计算机视觉模型的情况下构建它。迁移学习背后的想法是&#xff0c;在大型数据集上训练的神经网络可以将其知识应用于以前从未见过的数据集。也就是说&#xff0c;为什么…

MDG产品近10年最大变革综述 - MDG on S/4HANA 2023

前言 SAP Master Data Governance on SAP S/4HANA 2023 &#xff08;私有云和OP&#xff09;带来了主数据治理的众多创新内容&#xff0c;包括新的“cloud-read mode”&#xff0c;该模式将作为配置和使用MDG产品的一个全新额外选项。作为MDG产品近10年来的最大版本更新&#…