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

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

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 请求头和响应

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

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

PHP 和 Laravel 获取当月的第一天和最后一天

做明细流水统计经常会遇到一些构建一周日期或一个月日期,主要实现方式就是获取到周或月的最后一个日期,然后循环构建数据结构:$year = '2021'; $month = '8'; $month = $month < 10 ? '0' . $month : $month; $data = []; for ($i = 1; $i <= $lastday; $i++) { $d =

laravel 获取 raw 数据

Request 有方法可以直接获取:$content = $request->getContent()PHP 标准输入方式获取:file_get_content ("php://input") fopen ("php://input")PHP 全局变量获取: $GLOBALS['HTTP_RAW_POST_DATA']参考地址:Laravel 中如何获

手动构建 PHP 微信支付 API v3 接口生成签名请求

因为懒所以不打算更新项目中的微信支付相关 API,考虑到接微信支付分,需要手动构建请求。然而在构建了创建微信支付分订单之后,却接连报错:微信创建支付分订单报错:“Http头缺少Accept或User-Agent” 解决。经过一番探索,最后找到了原由:API v3 接口推荐(强制)使用 json 格式的请求参数,并返回 json 格式参数(之前是 xml),且 签名生成 方式和位置发生了变化。按照文

微信创建支付分订单报错:“Http头缺少Accept或User-Agent” 解决

首先交代一下本人遇到 “Http头缺少Accept或User-Agent” 报错的情况:开发语言:PHP微信 SDK 版本:无报错 API:创建支付分订单API接手项目中并未使用微信 SDK v2 或者最新的 v3,而是使用 CURL 直接构造 clent 请求,请求参数还是 xml 格式(感觉比较古老)。因为微信支付等主要功能都还可以使用,所以暂未考虑使用最新版本的 SDK v3。而微信支付分属