修复微信QQ支付参数分流

This commit is contained in:
yml2213
2026-08-12 21:59:56 +08:00
parent d610933f87
commit 8e4e394c4b
4 changed files with 70 additions and 24 deletions
@@ -74,22 +74,32 @@ class TestJsdomPay(unittest.TestCase):
self.assertIn("未生成微信付款码", message)
self.assertIn("停止连续重试", message)
def test_wechat_rejection_is_not_labeled_as_risk_control(self):
message = describe_payment_failure("WX", "payment", "ret=1099 err_code=1099-1007-0")
self.assertIn("服务端拒绝", message)
self.assertNotIn("风控", message)
def test_game_role_error_is_classified_separately(self):
message = describe_payment_failure("QC", "order", "inner=10014 gamerole err")
self.assertIn("角色或区服校验失败", message)
self.assertIn("重新选择角色和区服", message)
def test_encrypt_rand_aligns_plaintext_to_aes_block(self):
def test_qq_encrypt_rand_aligns_plaintext_to_aes_block(self):
params = {
"token_id": "t", "openid": "o", "openkey": "k", "session_id": "openid",
"session_type": "kp_accesstoken", "zoneid": "1", "pay_method": "wechat",
"buy_quantity": "1", "from_h5": "1", "webversion": "minipayv2",
}
rand_value = _MODULE.make_encrypt_rand(params, "tdrc_session%3Dpay-test", "1775990000")
rand_value = _MODULE.make_encrypt_rand(params, "tdrc_session%3Dpay-test", "1775990000", True)
plaintext = _MODULE.build_plaintext(params, "tdrc_session%3Dpay-test", "1775990000", rand_value)
self.assertEqual(len(plaintext.encode("latin-1")) % 16, 0)
self.assertGreaterEqual(len(rand_value), 8)
def test_wechat_encrypt_rand_preserves_historical_control_byte(self):
rand_value = _MODULE.make_encrypt_rand({}, "tdrc_session%3Dpay-test", "1775990000", False)
self.assertEqual(len(rand_value), 9)
self.assertEqual(rand_value[-1], "\x01")
if __name__ == "__main__":
unittest.main()