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. 爬虫下载rockchip的规格书

    #file-name: pdf_download.py import os import requests from bs4 import BeautifulSoup def download_fil ...

  2. 【补题】The 2022 SDUT Summer Trials

    比赛链接 The 2022 SDUT Summer Trials A. Ginger's number 样例恶臭(恼) 签到题 简单分解因数就会发现要求的就是\(gcd\),直接算即可,时间复杂度\( ...

  3. k8s之pod的生命周期

    pod生命周期 和一个个独立的应用容器一样,Pod 也被认为是相对临时性(而不是长期存在)的实体. Pod 会被创建.赋予一个唯一的 ID(UID),并被调度到节点,并在终止(根据重启策略)或删除之前 ...

  4. 去除button默认样式

    不加样式之前的: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> < ...

  5. 流(stream)如何理解?

    前言 如果你搜索输入输出函数,那么你会看到各种各样的流.那么这个流到底是什么东西呢,本文将形象地类比介绍通用的流. 怎样理解通用的流 流,顾名思义就是像水流一样可以流动的事物,可以在不同的领域来去自如 ...

  6. Maven项目中配置文件资源导出问题

    标准的Maven项目都会有一个resources目录来存放我们所有的资源配置文件,但是我们往往在项目中不会把所有的资源配置文件都放在resources文件夹中,我们有可能放在项目中的其他位置,那么默认 ...

  7. npm报错最好的办法就是删掉依赖然后重装

    之前有个node工程,现在要新增antd主题,那得增加安装 craco 并修改 package.json 里的 scripts 属性 改吧改,安装一直报错: Cannot find module 'w ...

  8. React父组件如何调用子组件方法,访问子组件State

    /** * * Author: shujun * Date: 2020-10-25 */ import React from 'react'; import {message} from 'antd' ...

  9. 新的学习历程-python1 Hello World

    1 print('hello world!') 2 if 2 > 0: 3 print('ok') 4 print('yes') 5 6 x = 3; y = 4 7 print(x + y) ...

  10. KMP 算法实现

    # coding=utf-8 def get_next_list(findding_str): # O(m) # 求一个字符串序列每个位置的最长相等前.后缀 j = 0 # 最长相等前缀的末位 nex ...