GH GambleHub

沙盒和测试环境

TL;DR

可靠的沙箱=完全绝缘、合成/非个性化数据、逼真的外部系统模拟器、可预测的苹果酒和时间旅行、内置的等效性和网络手册、透明的极限和指标。Prod是遥不可及的,钥匙-轮换,promotion-仅通过支票单。


1)环境图及其作用

周围环境目标访问权限数据可靠性
Local/Dev快速开发工程师合成/最小化学低端
CI/TestUnit/整合/合同测试CI/CDAutoshids平均水平
Stage/Pre-prod最终组装,恢复有限的匿名的snapshots高的
Public Sandbox外部合作伙伴/商人盖特+限制仅合成平均水平
Prod战斗的SSO/严格访问真实最大值

规则:sandbox ≠ prod。任何通信都是通过单向模拟器进行的,而无需访问真实的工具/游戏/个人数据。


2)数据: 合成,匿名,座位

默认合成。护照/卡数据生成器,有效但非财务的PAN(测试BIN),"实时"费率模式和资产负债表。
舞台的匿名化:标识符标记,聚合的修饰私有,删除稀有组合。
苹果酒和决定论:一个命令-一个状态。

bash make db-reset && make db-seed ENV=sandbox SEED=2025_11_03

时间旅行:用于截止线测试/exploration的全球"环境小时"。


3)模拟器和存根(stubs)

付款/银行/PSP

Auth/Capture/Refund/Payout со сценариями: `approved`, `declined_insufficient`, `3ds_required`, `timeout`, `duplicate`.

PSP webhooks:签名的HMAC,中继,延迟和"肮脏的互联网"。

KYC/AML/Sanctions

Ответы: `clear`, `pep_match`, `sanction_hit`, `doc_mismatch`, `manual_review`.

在prod中支持幂等性和等级限制。

游戏提供商/目录

大厅,fici,RTP/round是伪随机生成,为UX案件管理"付款/失败"。

选项:模拟器的"严格"开关(happy-path vs chaos)。


4)Webhuki在沙箱里

HMAC标题(v1),标题"X-Ivent-Id","X-Timestamp",窗口≤ 5分钟。
带有指数后端,DLQ和复制的后端。
控制台"重新调整"和尝试日志。

伪造的:
pseudo
POST /psp/webhooks
Headers: X-Signature, X-Timestamp, X-Event-Id
Body: { event_id, type, data, attempt }

5)相似性和决定性

所有突变都采用"Idempotency-Key"。
模拟器通过键存储结果(TTL 24-72小时)。
"种子决定论":在相同的输入下-相同的结果(对于可重复的测试)。


6)安全性和访问

网络/VPC隔离,单独的秘密和域('sandbox。example.com`).

RBAC/ABAC:"合作伙伴","qa","dev",令牌的角色很少。
限额和配额:"429"/"Retry-After"可以理解的per-tenant/key公平份额。
仅在KMS/Vault中提供秘密;定期轮换。
禁止在代码/密码级别进行实际支付(功能标志硬块)。


7) Gateway API和sandbox中的可观察性

相同的策略是:OAuth2/OIDC/JWT,CORS,WAF,DDoS配置文件。
度量标准:p50/p95/p99,4xx/5xx,命中率限制,latency webhooks,等效命中。
Logi/Trays:没有PII;"trace_id"。
Dashbord"沙盒健康":aptime,webhook队列,模拟器错误。


8) Ficha标志、版本和兼容性

在sandbox → stage → prod中启用拳头。
用于API的SemVer;Swagger/Redoc沙箱中的Deprecation/Sunset横幅。
用于GraphQL店面的Persisted queries(如果有)。


9) CI/CD и promotion

1.Build/Unit →

2.Contract/Mock tests (OpenAPI/Protobuf/GraphQL SDL) →

3.集成与模拟器→

4.舞台倒退(anon。狙击手)→

5.Canary в prod.

门支票清单:下文第12节。


10)合作伙伴的UAT脚本(沙盒)

付款:auth/capture/refund/payout with webhooks and PSP错误。
KYC/AML:所有状态+手动升级。
相同性:重复的"Idempotency-Key" →相同的结果。
利率限制:正确处理"429"。
时间窗口:代币访问,"Retry-After",时间旅行案例。
Webhooks: 签名/转发/DLQ,手动重播和dedup。


11)数据政策和隐私

从不将real PAN/KYC码头存储在sandbox/stage中。

匿名化: 掩蔽,删除直接标识符,合成相关性.

TTL存储日志和尸体webhook ≤规范的。


12)支票单

12.1推出新沙箱

  • 隔离网络/基地/kesh/对象存储
  • 在KMS/Vault中创建的秘密,按角色访问
  • PSP/KYC/游戏模拟器是后锁定和转换的
  • Swagger/Redoc+Postman系列(sandbox endpoints)
  • Webhooks: HMAC, retry, DLQ, replay控制台
  • Rate/Quota配置文件,Deprecation/Sunset横幅(如果有)
  • Dashbords和Alertes (latency, 5xx, 429, DLQ)

12.2 Promotion release (stage→prod)

  • 合同diff检查(无中断)
  • 舞台上的负载p95/p99正常
  • Webhooks通过UAT,等效性ok
  • Ficha标志已经准备就绪,回滚计划已经到位
  • Changelog,移民指南和发送给合作伙伴

13)反模式

沙箱,"秘密"触及道具服务/基地。
stage/sandbox中的真实卡/护照数据。
没有vebhook/retrais的模拟器仅是"快乐之路"。
缺乏相同能力→重复的付款/费率。
所有合作伙伴共享一个HMAC密码。
没有限制,也没有透明的429/Retry-After。


14)迷你嗅探

.env.sandbox(示例)

dotenv
API_BASE=https://sandbox.api.example.com
OAUTH_ISS=https://sandbox.idp.example.com
PSP_SIM_URL=https://sandbox.psp-sim.example.com
KYC_SIM_URL=https://sandbox.kyc-sim.example.com
WEBHOOK_SECRET_ROTATION_DAYS=90
FEATURE_FORCE_SANDBOX_PAYMENTS=1

OpenAPI片段(sandbox服务器)

yaml servers:
- url: https://sandbox.api.example.com/v1 description: Public Sandbox

幂等伪码

pseudo if store.exists(idem_key): return store.get(idem_key)
res = do_business()
store.set(idem_key, res, ttl=72h)
return res

PSP模拟器触发器

json
{ "scenario": "payout", "case": "declined_insufficient", "payout_id": "p_123" }

15)沙箱的可观察性和SLO

Uptime sandbox API ≥ 99.5%(集成展示不应下降)。
Webhooks p95 ≤ 3在正常负载下最多可容纳2xx。

网关错误预算为5xx ≤ 0。1%.

坞站门户可用,并与合同同步。


16) Governance

环境所有者(SRE/Platform)和steward API(合同)。
用于断开更改的RFC过程,Deprecation/Sunset日历。
公共沙箱的单独限制/配额和"公平使用"价格。


二.总结

沙盒是开发人员的产品,不是"基础副本"。给出:严格的绝缘,合成数据,带有网络包和回放的完整模拟器,通过座椅和时间旅行的确定性,幻灯片和透明限制。将所有合同、可观察性和可管理性捆绑在一起-您的集成将变得快速、安全和可预测,并且版本无痛。

Contact

联系我们

如需任何咨询或支持,请随时联系我们。我们随时准备提供帮助!

开始集成

Email — 必填。Telegram 或 WhatsApp — 可选

您的姓名 可选
Email 可选
主题 可选
消息内容 可选
Telegram 可选
@
如果填写 Telegram,我们也会在 Telegram 回复您。
WhatsApp 可选
格式:+国家代码 + 号码(例如:+86XXXXXXXXX)。

点击按钮即表示您同意数据处理。