refactor(integrations): 穿山甲验签改 GroMore SHA256 + pangle/wxpay 从 core 移入 integrations
- 验签: pangle.build_sign/verify_callback_sign 改为 GroMore 官方
sign=SHA256("{m-key}:{trans_id}")(普通 SHA256,只签 trans_id);
回调响应改成 GroMore 要求的 {is_verify, reason}
- 发奖: 按回调 reward_amount 发金币(rewards 带回退/夹紧),ad_reward 幂等 + 每日上限
- 分层: app/core/{pangle,wxpay}.py → app/integrations/(对齐 jiguang/meituan/sms);
更新 ad.py / crud/wallet.py / scripts/sim_pangle_callback.py / 测试的 import
(含 test_withdraw 的 monkeypatch 路径 app.core.wxpay→app.integrations.wxpay)
- 测试: test_ad_reward + test_withdraw 共 17 项通过
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -27,7 +27,7 @@ os.environ.setdefault("PANGLE_REWARD_SECRET", "dev-local-pangle-secret")
|
||||
from fastapi.testclient import TestClient # noqa: E402
|
||||
from sqlalchemy import select # noqa: E402
|
||||
|
||||
from app.core import pangle # noqa: E402
|
||||
from app.integrations import pangle # noqa: E402
|
||||
from app.core.config import settings # noqa: E402
|
||||
from app.core.rewards import AD_REWARD_COIN # noqa: E402
|
||||
from app.crud import wallet as crud_wallet # noqa: E402
|
||||
@@ -72,9 +72,10 @@ def main() -> None:
|
||||
"user_id": str(uid),
|
||||
"trans_id": trans_id,
|
||||
"reward_name": "金币",
|
||||
"reward_amount": "1",
|
||||
# 镜像生产:后台代码位"奖励数量"应配成 AD_REWARD_COIN,回调据此发金币
|
||||
"reward_amount": str(AD_REWARD_COIN),
|
||||
}
|
||||
params["sign"] = pangle.build_sign(params, settings.PANGLE_REWARD_SECRET)
|
||||
params["sign"] = pangle.build_sign(trans_id, settings.PANGLE_REWARD_SECRET)
|
||||
|
||||
resp = TestClient(app).get("/api/v1/ad/pangle-callback", params=params)
|
||||
after = _coin_balance(uid)
|
||||
|
||||
Reference in New Issue
Block a user