微信小程序体验版的支付测试单怎样自动退款?
2026-11-06 3469095
2026-11-06 0
先判断错误来自统一下单响应还是收银台。V2 XML 用整数分,沙箱金额还应与对应验收用例一致。
以旧版免充值验收用例 1003 为例,订单金额为 5.51 元,现金部分为 5.50 元,券为 0.01 元。统一下单用订单总额 551 分。只发 550 虽然是合法整数,却与这个用例的总额不同。
import re
from decimal import Decimal
from xml.etree import ElementTree as ET
def to_fen(yuan):
if not re.fullmatch(r"[0-9]+(?:\.[0-9]{1,2})?", yuan):
raise ValueError("invalid yuan")
return int(Decimal(yuan) * 100)
def check(xml, expected):
value = ET.fromstring(xml).findtext("total_fee", "")
if not re.fullmatch(r"[0-9]+", value) or int(value) <= 0:
return "invalid integer fen"
return "matches fixture" if int(value) == expected else "fixture mismatch"
expected = to_fen("5.51")
for value in ("5.51", "550", "551"):
xml = f"{value} "
print(value, check(xml, expected))
# Python 3.9.6 实际输出
# 5.51 invalid integer fen
# 550 fixture mismatch
# 551 matches fixture
三个样例只改变 total_fee。结果是本地格式及用例检查。通过本地校验后,仍要看沙箱响应和查单。金额从十进制字符串换算,避免浮点运算后截断少一分。
服务端返回失败时,保存脱敏的 XML 和 return_code、result_code、err_code、err_code_des,先对照实际报错。再核对所用验收环境、接口路径、签名密钥及用例金额是否配套。不同验收产品的路径和用例可能不同。
如果沙箱下单成功,只有拉起真实微信收银台时出现 total_fee 提示,旧版免充值用例有说明,真实收银台的生产环境查不到沙箱订单。该验收用例可直接走沙箱查单并核对金额和状态。不要将同一解释用于真实生产订单。
V2 统一下单的 XML 使用 total_fee,普通商户 API v3 JSAPI 下单的 JSON 使用 amount.total。先确认你接入的产品与版本,再核对测试环境支持的用例。本文在本地执行金额检查,未调用商户接口。