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

完。

微信退款报错 400 the ssl certificatie error / no required SSL certificate was sent ; Guzzle json_encode Type is not supported;的更多相关文章

  1. RSS阅读器“阅读原文”报错400

    问题 使用SpringMVC框架,实现了RSS订阅,在FoxMail的RSS订阅页面,点击[阅读原文],报错400 . 每个RSS文章的链接是:https://jiashubing.cn/forum/ ...

  2. 微信支付报错:统一下单和拉起支付的appid不一致(原创)

    微信支付报错:统一下单和拉起支付的appid不一致 错误码:-2 提示参考: 参考统一下单的API (谦信君原创,转载请注明来源) 原因排查: 我们做的是APP微信支付 客户端向我服务端发请求,获取预 ...

  3. 使用yum安装应用程序时候,报错:[Errno 14] PYCURL ERROR 7 - "Failed to connect to 2001:da8:8000:6023::230: 网络不可达"

    使用yum安装应用程序时候,报错:[Errno 14] PYCURL ERROR 7 - "Failed to connect to 2001:da8:8000:6023::230: 网络不 ...

  4. 【Xamarin报错】 COMPILETODALVIK : UNEXPECTED TOP-LEVEL error java.lang.OutOfMemoryError: Java heap space

    Xamarin Android 编译报错: COMPILETODALVIK : UNEXPECTED TOP-LEVEL error java.lang.OutOfMemoryError: Java ...

  5. 11gR2数据库日志报错:Fatal NI connect error 12170、

    11gR2数据库日志报错:Fatal NI connect error 12170.TNS-12535.TNS-00505 [问题点数:100分,结帖人MarkIII]             不显示 ...

  6. sqlplus 连接数据库报错SP2-0642: SQL*Plus internal error state 2130, context 0:0:0

    sqlplus 连接数据库报错SP2-0642: SQL*Plus internal error state 2130, context 0:0:0 问题描述: 使用sqlplus客户端登录数据库,报 ...

  7. 巨坑npm run dev 报错 终于找到正确答案 Error: EPERM: operation not permitted, open '/data/public/build/css/add.p

    Windows10环境 npm run dev 报错  终于找到正确答案 Error: EPERM: operation not permitted, open '/data/public/build ...

  8. 配置web pack loader 报错:Module build failed: Error: The node API for `babel` has been moved to `babel-core`.

    报错如下 Module build failed: Error: The node API for `babel` has been moved to `babel-core`. 在我配置loader ...

  9. mysql报错sql injection violation, syntax error: syntax error, expect RPAREN, actual IDENTIFIER

    mysql报错sql injection violation, syntax error: syntax error, expect RPAREN, actual IDENTIFIER 处理,在控制台 ...

  10. service mysqld start 报错:service mysqld start 报错 090517 13:34:15 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it. 090Can't open the mysql.plugin table. Please run mysql

    service mysqld start 报错 090517 13:34:15 [ERROR] Can't open the mysql.plugin table. Please run mysql_ ...

随机推荐

  1. fabric学习笔记5

    fabric学习笔记5 20201303张奕博 2023.1.15 fabric中的docker命令 1.查看本机的镜像列表 docker images 2.拉取镜像 docker pull hype ...

  2. Go指南:方法和接口

    方法与指针重定向 带指针参数的函数必须接受一个指针: func ScaleFunc(v *Vertex, f float64) { v.X = v.X * f v.Y = v.Y * f} 以指针为接 ...

  3. Java虚拟机中 -XX:+PrintFlagsFinal与XX:+PrintCommandLineFlags 中MaxHeapSize的值不同的原因

    size_t CollectorPolicy::compute_heap_alignment() { // The card marking array and the offset arrays f ...

  4. golang json字符串合并操作

    用于两个json格式的字符串合并,当B向A合并时,共有的字段,将用B字段的值(伴随类型一起覆盖),非共有的,A的字段保留,B的字段新增. example代码: package main import ...

  5. leetcode 31. 下一个排列 【时间击败 100%】 【内存击败 92.17%】

    对于该题,我本来兴致勃勃地想到了两个优化,但从提交结果来看根本看不出来有什么区别,但我发4我说的都是真的 -3- 1 public void nextPermutation(int[] nums) { ...

  6. Mybatis的几种传参方式

    前言 单个参数 多个参数 使用索引[不推荐] 使用@Param 使用Map POJO[推荐] List传参 数组传参 总结 单个参数 单个参数的传参比较简单,可以是任意形式的,比如#{a}.#{b}或 ...

  7. ubuntu安装nvidia-docker2

    1.配置源: distribution=$(. /etc/os-release;echo $ID$VERSION_ID) && curl -s -L https://nvidia.gi ...

  8. SQLServer中使用between查询日期

    SQL Server中字段是Datetime型 以" YYYY-MM-DD 00:00:00" 存放的 between and是包括边界值的,not between不包括边界值,不 ...

  9. 四、流程控制、break、continue、return

    一. 程序流程控制概述 流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块. 流程控制方式采用结构化程序设计中规定的只有三种基本流程结构,即:1.顺序结构程序 ...

  10. jekins+shell

    1.安装jekins,常规的有直接下载war包,或者安装docker版本的安装. 2.启动命令 #war版本启动 nohup java -jar jenkins.war --ajp13Port=-1 ...