流程通了

This commit is contained in:
yml2213
2026-08-12 17:30:00 +08:00
parent 03f5b8a6c4
commit cebbd94ae8
7 changed files with 124 additions and 56 deletions
@@ -0,0 +1,50 @@
"""YYB 付款表单的离线回归测试。"""
from __future__ import annotations
import importlib.util
import sys
import unittest
from pathlib import Path
from urllib.parse import parse_qs
_SCRIPT = Path(__file__).resolve().parents[1] / "scripts" / "jsdom-pay.py"
_SPEC = importlib.util.spec_from_file_location("yyb_jsdom_pay", _SCRIPT)
assert _SPEC and _SPEC.loader
_MODULE = importlib.util.module_from_spec(_SPEC)
sys.modules[_SPEC.name] = _MODULE
_SPEC.loader.exec_module(_MODULE)
class TestJsdomPay(unittest.TestCase):
def test_build_save_body_has_current_payment_context(self):
body = _MODULE.build_save_body(
{"token_id": "token", "transaction_id": "transaction", "out_trade_no": "trade"},
{"openid": "openid", "accesstoken": "access-token", "logintype": "WX"},
"web-token", "anti-token", "cipher", "2",
"mds_myappjp-__mds_myappjp_PC_aW9zd2hpdGVsaX0-iap", 600,
)
fields = parse_qs(body, keep_blank_values=True)
self.assertEqual(fields["type"], ["bg"])
self.assertEqual(fields["pf"], ["mds_myappjp-__mds_myappjp_PC_aW9zd2hpdGVsaX0-iap"])
self.assertEqual(fields["zoneid"], ["2"])
self.assertEqual(fields["pay_method"], ["wechat"])
self.assertEqual(fields["wcp"], ["type=CNY&amt=600"])
self.assertEqual(fields["encrypt_way"], ["web_new_encrypt"])
self.assertEqual(fields["webversion"], ["minipayv2"])
def test_qq_payment_uses_qq_oauth_session_fields(self):
body = _MODULE.build_save_body(
{"token_id": "token", "transaction_id": "transaction", "out_trade_no": "trade"},
{"openid": "openid", "accesstoken": "access-token", "logintype": "QC", "appid": "102033112"},
"web-token", "anti-token", "cipher", "1", "pf", 100,
)
fields = parse_qs(body, keep_blank_values=True)
self.assertEqual(fields["session_id"], ["openid"])
self.assertEqual(fields["session_type"], ["kp_accesstoken"])
self.assertEqual(fields["qq_appid"], ["102033112"])
self.assertEqual(fields["wx_appid"], [""])
if __name__ == "__main__":
unittest.main()