php处理支付宝应用网关给接口发送的post参数

news2024/9/29 15:25:16

php如何接收支付宝应用网关发送的POST请求方式,参数又是GET请求的数据格式

    • 配置支付宝应用网关
    • 如何接收支付宝异步通知(应用网关接收请求)
    • 将&连接的参数分割成数组实例:
    • 难点

配置支付宝应用网关

首先要在服务器上写一个接口,然后将接口的访问地址设置在支付宝应用网关
在支付宝的开放平台中设置如图:
在这里插入图片描述

如何接收支付宝异步通知(应用网关接收请求)

上面配置好接口后,我就来接收post请求的数据,又不知道请求参数是啥?然后看文档、问客服、百度。然后使用file_get_contents(“php://input”);能接收到参数。并把接收到的参数保存在一个文件里面看看他的数据格式:
在这里插入图片描述
当我看到他的第一眼还以为是一个get请求。像这种post请求参数接收的时候没有参数名,并且还使用&拼接多个参数,处理起来有点小难受。

将&连接的参数分割成数组实例:

下面的实例里我将我的业务代码删除了的,要是想看拆分后的数据可以在sites.txt中将参数复制用postman看返回参数的具体值。
在这里插入图片描述

public function index(){
		//接收参数
        $postStr = file_get_contents("php://input");
		//调用支付宝的sdk包
        $aop = new \ AopClient ();

        //支付宝公钥赋值,配置在config文件中
        $aop->alipayrsaPublicKey=config('alipayrsaPublicKey');
        
        //签名方式
        $sign_type="RSA2";
        
        // 接收到的参数转urldecode
        $_POST=urldecode($postStr);
         
        // 测试将支付宝给的参数保存在public/sites.txt下
        // $file="sites.txt";
        // $url=str_replace("\\","/",  ROOT_PATH);
        
        // $url=$url."public/" .trim($file);

        // file_put_contents($url,$_POST);
    
        //把字符串通过&符号拆分成数组
        $data = explode('&', $_POST);

        $params = array();
        //遍历数组
        foreach ($data as $param) {
            $item = explode('=', $param,"2");
            
            // dump($item);
            $params[$item[0]] = $item[1];
        }
        
       	//校验支付宝传入的参数是否被修改过,只要不是支付宝发送的参数都是false
        $flag = $aop->rsaCheckV1($postStr, null, $sign_type);
        if (!$flag){
            return;
        }
        //打印分割好的值,在取对应的key即可
        dump($params);
      

难点

当时写这个接口难就难在是第三方来调用你的接口,然后接收参数得跟着别人的要求来,最关键的是我还不能打印接收到的参数。还遇到我的phpstorm不能DEBUG。这就很难受,所以我写了此篇博客;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/150131.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

手把手教Arthas,不再怕排查线上问题了

Arthas是alibaba开源的java诊断工具,支持jdk6,采用命令行交互模式,可以防败的定位和诊断线上的程序运行问题。官方文档:https://arthas.aliyun.com/doc/一、Arthas使用场景是否有一个全局视角来查看系统的运行状况?为什…

六种方式,教你在SpringBoot初始化时搞点事情!

前言 在实际工作中总是需要在项目启动时做一些初始化的操作,比如初始化线程池、提前加载好加密证书....... 那么经典问题来了,这也是面试官经常会问到的一个问题:有哪些手段在Spring Boot 项目启动的时候做一些事情? 方法有很多…

卷积层里的多输入多输出通道、池化层

多输入多通道每个通道都有一个卷积核,结果是所有通道卷积结果的和。无论有多少输入通道,到目前为止我们只用到单输出通道。可以有多个三维卷积核,每个核生成一个输出通道。输出通道数是卷积层的超参数。每个输入通道有独立的二维卷积核&#…

为什么JavaScript这么难学啊?

前言 觉得Js难其实是很正常的,首先这证明你在某些知识点上没有理解透彻,JS挺多的知识点点其实是比较抽象的,比如闭包、原型和原型链等,其次便是不会变通运用,这主要是敲代码熟练度的问题,所以我针对你这种…

架构运维篇(六):MySQL 8.0启用BinLog 支持

上一篇:架构运维篇(五):Centos7/Linux中安装RocketMQ 最新线上的项目终于到多个数据执行的问题,找了团队DBA发现云上的MySQL 默认是没有启用BinLog支持。 小编研究了一下很简单,不过中间也遇到一些坑可以给…

结构重参数化(Structural Re-Parameters)PipLine

文章目录BASICSstrcutural Inception算法思想算法核心算法架构Re-Parameter四部曲:ACNetACNet原理ACNet分析涨点原因推理阶段融合机制Re-Parameter四部曲:RepVGGRepVGG原理RepVGG分析RepVGG BlockStructural Re-Parameters融合conv2d和BN融合1x1conv转换…

【一文讲通】样本不均衡问题解决--下

1欠采样、过采样欠采样:减少多数类的数量(如随机欠采样、NearMiss、ENN)。过采样:尽量多地增加少数类的的样本数量(如随机过采样、以及2.1.2数据增强方法),以达到类别间数目均衡。还可结合两者做…

地址解析协议ARP

目录地址解析协议ARP1、流程2、动态与静态的区别3、ARP协议适用范围地址解析协议ARP 如何从IP地址找出其对应的MAC地址? 1、流程 ARP高速缓存表 当主机B要给主机C发送数据包时,会首先在自己的ARP高速缓存表中查找主机C的IP地址所对应的MAC地址&#xf…

Linux常用命令——lsblk命令

在线Linux命令查询工具 lsblk 列出块设备信息 补充说明 lsblk命令用于列出所有可用块设备的信息,而且还能显示他们之间的依赖关系,但是它不会列出RAM盘的信息。块设备有硬盘,闪存盘,cd-ROM等等。lsblk命令包含在util-linux-ng…

ES报文辅助生成工具-JavaFX

此程序为基于 Java8 开发的 JavaFX Maven 工程&#xff0c;是 Java 组装ElasticSearch请求报文工具的辅助 Java 代码生成工具&#xff0c;方便开发者快速编写代码。现学现用&#xff0c;写得不好。 工具界面 代码 pom.xml <project xmlns"http://maven.apache.org/P…

Android:URLEncoder空格被转码为“+”号

Android前段和后端接口交互时&#xff0c;经常会遇到特殊字符&#xff0c;比如表情、特殊标点等&#xff0c;这样在Url中是无法识别的&#xff0c;需要进行转码&#xff0c;后端进行解码交互。 但当使用URLEncoder时&#xff0c;会发现字符串中的空格被转换成“”号&#xff0…

客服系统即时通讯IM开发(四)网站实现实时在线访客列表【唯一客服】网站在线客服系统...

在使用我的客服系统时&#xff0c;如果引入了我的js &#xff0c;就可以实时看到网站上的所有访客了 使用 WebSocket 技术来实现实时通信。 在访客登录或退出时&#xff0c;向指定客服的 WebSocket 客户端发送消息。例如&#xff0c;你可以在访客登录时&#xff0c;向指定客服…

测试用例的设计? 万能公式

万能公式(必背)&#xff1a;功能测试性能测试界面测试兼容性测试易用性测试安全测试功能测试 &#xff1a;可能来自于需求文档&#xff0c;也可能来自生活经验性能测试 &#xff1a;功能没有问题不代表性能是ok的&#xff0c;性能往往体现在一些极端情况界面测试 &#xff1a;颜…

Prometheus-基于Consul的自动注册

一、背景介绍 如果我们的物理机有很多&#xff0c;不管是基于"file_sd_config"还是"kubernetes_sd_config"&#xff0c;我们都需要手动写入目标target及创建目标service&#xff0c;这样才能被prometheus自动发现&#xff0c;为了避免重复性工作过多&#…

【182】Java8利用二叉查找树实现Map

本文利用二叉查找树写了一个Map&#xff0c;用来保存键值对。 二叉查找树的定义 二叉查找树又名二叉搜索树&#xff0c;英文名称是 Binary Search Tree&#xff0c;缩写BST。 二叉排序树&#xff0c;英文名称是 Binary Sorted Tree&#xff0c;缩写BST。 二叉查找树、二叉搜…

excel实用技巧:如何构建多级下拉菜单

使用数据有效性制作下拉菜单对大多数小伙伴来说都不陌生&#xff0c;但说到二级和三级下拉菜单大家可能就不是那么熟悉了。什么是二级和三级下拉菜单呢&#xff1f;举个例子&#xff0c;在一个单元格选择某个省后&#xff0c;第二个单元格选项只能出现该省份所属的市&#xff0…

vue-router原理简单实现

vue-router简单实现 初步预习 动态路由 获取id方式 第一种强依赖路由 第二种父传子方式&#xff08;推荐&#xff09; 嵌套路由 相同的头和尾&#xff0c;默认index&#xff0c;替换为detail 编程时导航 this.$router.push() this.$router.repleace() this.$router.g…

吊炸天,springboot的多环境配置一下搞明白了!

1、 使用springboot的profile命名规则profile用于多环境的激活和配置&#xff0c;用来切换生产&#xff0c;测试&#xff0c;本地等多套不通环境的配置。如果每次去更改配置就非常麻烦&#xff0c;profile就是用来切换多环境配置的。在Spring Boot框架中&#xff0c;使用Profil…

漏洞优先级排序的六大关键因素

当我们谈及开源漏洞时&#xff0c;我们会发现其数量永远处于增长状态。根据安全公司 Mend 研究发现&#xff0c;在 2022 年前九个月发现并添加到其漏洞数据库中的开源漏洞数量比 2021 年增加了 33%。该报告从 2022 年 1 月到 2022 年 9 月对大约 1,000 家北美公司进行了代表性抽…

一篇文章解决C语言操作符

我的主页&#xff1a;一只认真写代码的程序猿本文章是关于C语言操作符的讲解收录于专栏【C语言的学习】 目录 1、算术操作符 2、赋值操作符 3、关系操作符 4、条件操作符&#xff08;三目&#xff09; 5、逻辑操作符 6、单目操作符 7、移位操作符 8、位操作符 9、逗号…