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,证书路径等参数, 此时最好填上证书的绝对路径。

完。

最新文章

  1. clr 元数据
  2. 如何使用dos命令打开当前用户、当前日期、当前时间以及当前用户加当前时间?
  3. 如何使 WebAPI 自动生成漂亮又实用在线API文档
  4. call()和原型继承的方法
  5. loadrunner --global schedule设置
  6. typeid详解(转)
  7. 画之国 Le tableau (2011)
  8. 使用AndroidStudio自动生成JavaDoc文档
  9. HTML5 Video与Audio 视频与音频
  10. HDU 2369 Broken Keyboard(字符串)
  11. JSON字符串转换成JSON对象
  12. inflate, findViewById与setContentView的区别与联系
  13. CodeForces 577A Multiplication Table 质因子数
  14. Android:mimeType
  15. JavaEE 配置文件 应用首选项存储
  16. 利用 Forcing InnoDB Recovery 特性解决 MySQL 重启失败的问题
  17. SparkMLib分类算法之朴素贝叶斯分类
  18. Chinese Rings hdu 2842 矩阵快速幂
  19. uboot中 make xxx_config 的作用(以make smdk2410_config为例)
  20. C语言 求两数的最大公约数和最小公倍数

热门文章

  1. 栈的数学性质:n个不同元素入栈,出栈元素不同排列的个数的推导,卡特兰数(明安图数)的推导
  2. 【MySQL 服务器参数优化】
  3. WDA学习(26):Phase Indicator使用
  4. JavaSE 日期时间类整理
  5. Centos操作系统在虚拟机VMware上的安装(二)
  6. java ArrayList 原理
  7. ntpq 详解
  8. linux 高并发系统限制 设置
  9. Java-封装结果集示例
  10. Ubuntu子系统shell脚本自动连接xfce4界面