详情

首页手游攻略 微信小程序体验版的支付测试单怎样自动退款?

微信小程序体验版的支付测试单怎样自动退款?

佚名 2026-11-06 08:50:01

体验版可能走生产支付。后端先识别并确认测试订单已付款,再生成可重试的退款任务。

下面以普通商户 API v3 小程序支付为例。先将代码保存为 policy.py,用 Python 3.9.6 运行。基线为同一笔 30 分测试订单,逐项改变支付状态和测试资格。这里的金额上限是示例业务策略。

import sys
from dataclasses import dataclass, replace

@dataclass(frozen=True)
class Order:
    number: str
    paid: bool
    approved_test: bool
    merchant: str
    amount: int

def plan(order):
    if not (order.paid and order.approved_test
            and order.merchant == "allowlisted" and 0 < order.amount <= 100):
        return None
    return f"auto-{order.number}", order.amount

base = Order("demo-01", True, True, "allowlisted", 30)
cases = [
    ("approved test", base),
    ("ordinary order", replace(base, approved_test=False)),
    ("unpaid test", replace(base, paid=False)),
    ("retry", base),
]
case = int(sys.argv[1])
name, order = cases[case]
print(name, plan(order))
assert plan(base) == ("auto-demo-01", 30)
assert plan(cases[1][1]) is None and plan(cases[2][1]) is None

1. 通过白名单的已支付测试单

用服务端验证过的支付结果和内部测试标记生成退款任务。

python3 policy.py 0
# approved test ('auto-demo-01', 30)

2. 普通订单

只去掉测试资格,其余条件一致。

python3 policy.py 1
# ordinary order None

3. 尚未付款的测试单

恢复测试资格,只改变支付状态。

python3 policy.py 2
# unpaid test None

4. 任务重试

重新使用基线输入,退款任务保留原编号。

python3 policy.py 3
# retry ('auto-demo-01', 30)

将退款任务持久化,以商户和退款单号设唯一约束。编号应符合接口要求,适配实际订单号的长度与字符范围。发起退款前查询并扣除已申请或已完成的退款额度。遇到响应超时,用原退款单号查单,再按原编号重试。

调用申请退款后,通过已验签并解密的通知或查询退款单确认终态。生产体验版仅用于授权的真实联调范围,并限制测试人和订单。客户端的 envVersion 可辅助诊断,测试标记应由服务端写入。本文仅执行本地筛选样例,未发真实支付或退款请求。

相关资讯
点击查看更多
游戏推荐
推荐专题
热门阅读
推荐下载