支付宝EasySdk(PHP版)支付回调验签无法通过问题

亲身经历,官方文档坑
THPHP6,正常导入

composer require alipaysdk/easysdk

直接上内容,官方验签

//1. 设置参数(全局只需设置一次)Factory::setOptions(getOptions());
$result = Factory::payment()->common()->verifySign($_POST);

然而不好意思出现错误无法通过;主要原因fund_bill_list数据JSON字符串传递时序列化问题

// 请求数据处理
$data = request()->post();
$data = http_build_query($data);
$data = explode('&', $data);
$new_data = [];
foreach ($data as $key=>$val){
$rows = explode('=', $val);
    $new_data[$rows[0]] = urldecode($rows[1]);
}
if (!empty($new_data['fund_bill_list'])){
    $new_data['fund_bill_list'] = str_replace('"', '"', $new_data['fund_bill_list']);
    $json = json_decode($new_data['fund_bill_list'], true);
    if (json_last_error() !== JSON_ERROR_NONE) {
         $this->consoleLog('Failed to decode JSON: ' . json_last_error_msg());
    }
    $new_data['fund_bill_list'] = json_encode($json);
}
// 才能去验证
$result = Factory::payment()->common()->verifySign($new_data);

如对你有帮助记得点赞哦~

TypeScript环境安装与运行

(1)安装node.js(10以上的版本都可以)

(2)控制台:npm i -g typescript

(3)查看TypeScript的版本:tsc -v

(4)创建tsconfig.js文件:tsc --init

运行方式一:

(1)创建app.ts文件

(2)进入app.ts文件所在目录,执行命令:tsc app.ts

(3)运行:node app.js

运行方式二(直接运行):

(1)安装全局的ts-node模块 :npm install -g ts-node

(2)运行ts文件:ts-node app.ts

自动编译:

(1)终端 -> 运行任务 -> 选择里面的tsc:监视

使用tsconfig进行构建:

(1)tsc --build tsconfig.json

linux 磁盘重启后盘符发生变化导致之前挂载点失效问题

使用UUID来代替代/dev/vdx设备,UUID是Linux系统为磁盘分区提供的唯一的标识字符串。

1.查询磁盘分区的UUID

blkid

效果图效果图

2.使用VI编辑器打开“fstab”文件

vi /etc/fstab

3.按“i”,进入编辑模式,将光标移至文件末尾如:“wq”保存

UUID=0fd85a4f-a8e4-4dda-b8f1-eb56e3e48a43 /www ext4 defaults 0 0

4.在重新加载一下fstab内容看看是否报错

mount -a

最后在重启Linux系统