You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Base64编码触发格式无效错误,该如何排查解决?

解决Base64编码时的格式无效错误

你的问题出在手动构造JSON字符串时的语法错误,导致生成的内容不是有效的JSON,进而使得Base64编码后的内容不符合格式要求。以下是具体问题和解决方案:

问题分析

你写的f-string存在两个关键错误:

  1. JSON的键必须用双引号包裹,但代码里的键(如threeDSServerTransID)没有加引号,会被Python当成变量名而非字符串键。
  2. 要插入的变量(threeDSServerTransID、acsTransID)没有用{}包裹,无法正确替换为变量值,最终生成的字符串完全不是有效的JSON结构。

解决方案

方法一:修正f-string写法

手动修正f-string的语法,确保生成有效的JSON字符串:

import base64

# 注意:大括号需要用双大括号转义,变量用{}包裹,键和字符串值用双引号
creqBytes = bytes(f'{{"threeDSServerTransID":"{threeDSServerTransID}","transStatus":"Y","acsTransID":"{acsTransID}","messageType":"CRes","messageVersion":"2.1.0"}}', 'utf-8')
creq2 = base64.b64encode(creqBytes).decode("ascii")
print(creq2)

方法二:使用json模块生成JSON(推荐)

手动拼接JSON容易出错,用json模块可以自动处理语法细节,更可靠:

import json
import base64

# 先构造Python字典
creq_data = {
    "threeDSServerTransID": threeDSServerTransID,
    "transStatus": "Y",
    "acsTransID": acsTransID,
    "messageType": "CRes",
    "messageVersion": "2.1.0"
}
# 转换为标准JSON字符串
creq_json = json.dumps(creq_data)
# 编码为Base64
creq2 = base64.b64encode(creq_json.encode('utf-8')).decode("ascii")
print(creq2)

内容的提问来源于stack exchange,提问作者Maxii Paguera

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 19:25:25