微信退款报错 400 the ssl certificatie error / no required SSL certificate was sent ; Guzzle json_encode Type is not supported;
bug随笔
一 起因。
在做一个点餐类小程序,本地测试ok。上测试的时候,突然就报错,微信退款失败。
二 Debug。
1. Debug trace到页面直接显示的是 : Type is not supported。一个莫名其妙的错误。
2. 定位代码,发现用的是 easywechat 库。以为是测试环境 composer 安装错了版本,或依赖库有冲突。于是重新安装,无果。
3. 网上搜罗了一下,Guzzle json_encode Type is not supported; 出来有价值的答案是 StackOverflow的前2条。 仔细看了回答,又对比了代码,发现不了问题。
4. 尝试不用 easywechat库,使用微信支付SDK,结果调用微信退款,报错 400 the ssl certificatie error;
5. 遂在微信开放社区搜索答案,但发现官方回答并不够清晰,很多答案基本是这样,然底下评论都在追问如何填写。
6. 发现是证书路径问题后,决定先使用 file_get_contents() 检查所填路径是否能够读取到文件。结果发现路径下并无文件。
7. 问题一下明确了,再深入排查,发现点餐系统的会将 所填写的微信配置,放入到 runtime/ 里面,然后后台有个清理缓存功能,点了清理后,runtime下所有文件被删除。真相大白。重新将证书放入到此目录后,问题解决。
三 反思。
1. Guzzle json_encode Type is not supported; 这个错误, StackOverflow 给出的解决方案是正确的。但是,并不适合我遇到的情况,尝试了上面给的方案,依旧无效。
2. 微信退款,报错 400 the ssl certificatie error;这个错误的排查方式是:首先,确保 证书 放在了可读写目录,可使用 file_get_contents() 检查所填路径是否能够读取到文件 ;其次,使用SDK时,需要配置 app_id , secret_key,证书路径等参数, 此时最好填上证书的绝对路径。
完。
最新文章
- clr 元数据
- 如何使用dos命令打开当前用户、当前日期、当前时间以及当前用户加当前时间?
- 如何使 WebAPI 自动生成漂亮又实用在线API文档
- call()和原型继承的方法
- loadrunner --global schedule设置
- typeid详解(转)
- 画之国 Le tableau (2011)
- 使用AndroidStudio自动生成JavaDoc文档
- HTML5 Video与Audio 视频与音频
- HDU 2369 Broken Keyboard(字符串)
- JSON字符串转换成JSON对象
- inflate, findViewById与setContentView的区别与联系
- CodeForces 577A Multiplication Table 质因子数
- Android:mimeType
- JavaEE 配置文件 应用首选项存储
- 利用 Forcing InnoDB Recovery 特性解决 MySQL 重启失败的问题
- SparkMLib分类算法之朴素贝叶斯分类
- Chinese Rings hdu 2842 矩阵快速幂
- uboot中 make xxx_config 的作用(以make smdk2410_config为例)
- C语言 求两数的最大公约数和最小公倍数