如何在测试环境中使用支付网关?

在测试环境中使用支付网关的指南

基本步骤

  1. 获取测试账户

    • 向支付网关提供商申请开发/测试账户
    • 获取API密钥、商户ID等测试凭证
  2. 设置沙盒环境

    • 大多数支付网关提供专门的沙盒(Sandbox)环境
    • 配置您的应用连接到该环境的URL而非生产环境
  3. 使用测试卡号

    • Visa: 4111-1111-1111-1111
    • MasterCard: 5555-5555-5555-4444
    • AMEX: 3782-822463-10005

    这些卡号专门用于测试,不会产生实际交易。

常见支付网关的特定信息

PayPal Sandbox

API端点: https://api.sandbox.paypal.com/
可创建买家/卖家虚拟账户进行端到端测试

Stripe Test模式

API端点: https://api.stripe.com/v1/ (使用test密钥)
可使用特殊金额触发不同响应(如4000失败)

Alipay沙箱

需单独申请开发者账号和APP ID
提供专用钱包app扫码登录沙箱环境

最佳实践建议

模拟各种场景:
成功付款、失败交易、退款、部分退款等

验证回调机制:
确保能正确处理异步通知

日志记录完整:
保存请求和响应数据便于调试

定期更新证书:
注意Sandbox环境的SSL证书有效期

⚠️ 重要提醒:
切勿将真实信用卡信息用于任何非生产环境

支付网关测试环境使用进阶指南

高级测试场景模拟

1. 异常流程测试

  • 网络中断:在提交支付请求时断开连接,验证重试机制
  • 超时处理:设置API调用超时阈值,检查超时后的处理逻辑
  • 并发交易:模拟多用户同时发起相同订单的支付请求

2. 特定响应码触发

4000 - 一般失败 (Stripe)
5000 - Insufficient funds (余额不足)
5100 - Card declined (卡被拒)
5200 - Processing error (处理错误)

3. Webhook/回调测试工具

• Postman/Insomnia: API调试工具手动触发回调 
• ngrok: 将本地服务暴露给公网接收真实回调
• RequestBin: Webhook捕获和检查服务

CI/CD集成方案

# Jenkins示例脚本片段(以Stripe为例)
STAGE('Payment Gateway Test') {
steps {
script {
def response = sh(script: """
curl https://api.stripe.com/v1/charges \
-u sk_test_4eC39HqLyjWDarjtT1zdp7dc: \
-d amount=2000 \
-d currency=usd \
-d source=tok_visa""", returnStdout: true)

assert readJSON(text: response).status == "succeeded"
}
}
}

Mock Server实现方案(当无法使用官方沙箱)

// Express.js简单mock示例(PayPal IPN模拟)
app.post('/mock-paypal', (req, res) => {
const testCases = {
'SUCCESS': { status:'VERIFIED', payment_status:'Completed' },
'FAILURE': { status:'INVALID' },
'PENDING': { payment_status:'Pending' }
};

const scenario = req.body.test_scenario || 'SUCCESS';
setTimeout(() => res.json(testCases[scenario]), getRandomDelay());
});

PCI DSS合规注意事项

⚠️ 即使是在测试环境也需注意

  1. Never store actual PAN data in test databases
    (不要在测试库存储真实卡号)
  2. Use tokenization even in sandbox environments
    (即使在沙箱环境也应使用令牌化技术)
  3. Ensure test data is clearly labeled as non-production
    (确保测试数据明确标记为非生产数据)

需要更详细的某个具体支付平台(如Adyen、Worldpay等)的沙箱实现细节吗?

支付网关测试环境深度实践指南

主流支付平台沙箱细节对比

Adyen测试环境

1. API端点:
- 测试: https://checkout-test.adyen.com/
- 管理: https://ca-test.adyen.com/

2. 特色功能:
- `/test-cards`端点返回所有支持的测试卡
- 支持3DS2.0测试流程模拟
- Fraud score可配置(0-100)

3. 特殊参数:
设置"merchantAccount": "TestAccount"自动进入沙箱模式

Worldpay模拟器

1. 独立工具包:
需下载安装Worldpay Simulator本地运行(Windows/Linux)

2. 报文级控制:
可修改XML请求中的<description>字段触发特定响应:
- `APPROVED` :成功交易
- `DECLINED` :拒绝交易
- `ERROR:05` :发卡行不可用

3. 延迟设置:
配置文件可调整响应延迟(50ms-5s)

自动化压力测试方案

Locust性能测试脚本示例(Python)

from locust import HttpUser, task, between

class PaymentUser(HttpUser):
wait_time = between(1, 5)

@task(3)
def successful_pay(self):
self.client.post("/pay", json={
"card": "4111111111111111",
"amount": random.randint(100,999),
"test_scenario": "SUCCESS"
})

@task(1)
def failed_pay(self):
self.client.post("/pay", json={
"card": "4000000000000002",
# Stripe专用失败卡号
...
})

Android/iOS移动端特别处理

Google Pay/Apple Pay沙箱模式开启方法

Platform Enable Method Test Cards
Google Pay Build variant设置为debug Visa:4012000033330026
Apple Pay Xcode Scheme设为Development MasterCard:5454545454545454

⚠️ iOS特别注意:需要在Sandbox环境下使用TestFlight版本或开发证书签名才能调用ApplePay界面。

QA团队协作建议

建立共享的「支付场景矩阵表」:

Scenario ID	Description	                Test Card	        Expected Result	    Owner       Last Run Date	
PG-SC-001 Basic Visa approval 4111111111111111 TXN_SUCCESS Alice Chen 2024-03-15
PG-SC-012 Partial refund process 5555555555554444 REFUND_PARTIAL Bob Wang 2024-03-18
PG-SC

Tags:

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注