php isset 判断多个变量是否已设置

使用 isset 判断多个变量是否已设置主要用在请求参数的判断上,但这个判断正在被框架的 Request 类中的验证规则所取代。对于其他的方法体内的多个变量,一般会用 isset($var1) && isset($var2) ... 来实现。今天遇到一个需要判断 4 个参数是否存在的情况,找到了函数说明:(PHP 4, PHP 5, PHP 7, PHP 8)isset — 检测变

支付宝模板消息踩坑:tradeNo只能发送给实际付款人

支付宝的模板消息分为三类:订阅类、交易类和表单类。其中订阅类显而易见,需要用户的授权才能推送,也就是说小程序需要调起用户授权这样的显式弹框。参考其他同类产品,发现有的小程序存在静默授权的情况,即不用调起授权也可以发送模板消息的情况。研究了一会儿,能发现的只是小程序设置里的「消息管理」的「接收消息提醒」在新用户使用时默认是打开的。一开始尝试创建的是交易类的模板消息,但发现预授权冻结订单只有在转支付后

linux 网络抓包指令 ngrep

完整指令:sudo ngrep -W byline -d eth0 port 80-W byline 表示与换行符换行显示-d eth0 表示侦听 eth0 网卡, -d lo 就是指侦听本地网卡port 80 表示侦听端口 80

Laravel 中 Model `update()` 报错:`MassAssignmentException in Model.php line 452: _url`

Model.php 452 行是 fill() 函数,通过溯源找到调用位置 update():return $this->fill($attributes)->save($options);回到 fill() 函数,函数体内对 $attributes,也就是传入的更新数组参数,进行遍历,判断字段 key 是否可填充。如果可以填充则设置 model 属性,否则判断是否模型完全看守,如果是

Laravel 解决 ajax 跨域问题

网站需要临时获取后台数据,因与接口地址不一样,所以请求存在跨域的问题。在使用 tp 或 ci 框架时,处理跨域比较直接:header("Access-Control-Allow-Origin: *");。可以放在在请求的控制器构造函数里,表示控制器下的方法都支持跨域,也可以放在单个方法表示单个方法支持跨域。Laravel 与这些框架差不多,唯一需要注意的是,如果方法请求参数使用

底层服务解耦

业务代码上浮,通用代码下沉,服务化彻底。

创建微信支付分订单 curl 请求后处理返回数据

前面提到 微信创建支付分订单报错:“Http头缺少Accept或User-Agent” 解决,在解决了 $header 构建之后,对于处理请求返回数据犯了难。正常情况下 CURL 返回数据是够用了的,但微信支付分将后续 验签 需要的签名部分信息存放到了响应头部中。这就需要对初始版的 CURL 请求(一般的 CURL 请求只返回响应 body 部分)做一定的修改。参考 php CURL 请求头和响应

支付宝小程序一键(快捷)登录功能实现原理及验签、解密过程遇到的问题

支付宝小程序不知什么时候有了「获取会员手机号」的功能,很明显对标的是微信小程序。小程序中的一键登录就是通过获取当前会员手机号来实现快捷登录的。手机号属于会员敏感信息,所以在小程序端拿到的是加密的会员信息,需要后端去做验签和解密,以此获取手机号并实现会员一键登录。在写代码之前,需要做的几件事:支付宝小程序后台添加「获取会员手机号」能力,添加后还需要提交一个申请表单,申请通过之后前端才可以调起获取支付