API 概览
欢迎使用 EFundFlow API!本手册将帮助你快速开始接入我们的支付服务。
快速开始
1. 获取 API 密钥
首先,你需要在 EFundFlow 控制台获取 API 密钥:
- 测试环境密钥:用于开发和测试,以
sk_test_开头 - 生产环境密钥:用于正式环境,以
sk_live_开头
2. 设置请求头
所有 API 请求必须包含以下请求头:
Authorization: Bearer YOUR_SECRET_KEY
x-merchant-account-id: YOUR_ACCOUNT_ID
Content-Type: application/json
3. 基础 URL
- 测试环境:
https://sandbox.efundpay.com/v4 - 生产环境:
https://api.efundpay.com/v4
4. 沙箱演示凭据
公开沙箱演示凭据(Public sandbox demo credentials)
以下凭据会公开展示在文档站中,仅可用于沙箱测试。不要在这里配置生产密钥、真实商户私钥或客户数据。
API 直接接入
| API Key | sk_test_your_direct_key |
|---|---|
| X-MERCHANT-ACCOUNT-ID | acct_your_direct_account_id |
| JWT header kid | kid_your_direct_key_id |
| RSA private key | |
收银台接入
| API Key | sk_test_your_checkout_key |
|---|---|
| X-MERCHANT-ACCOUNT-ID | acct_your_checkout_account_id |
| JWT header kid | kid_your_checkout_key_id |
| RSA private key | |
Webhook RSA 公钥
your_webhook_public_rsa_key核心概念
交易流程
- 创建交易:使用
POST /transactions创建新的支付交易 - 处理支付:客户在支付页面完成支付
- 接收 Webhook:我们会将支付状态通过 Webhook 推送到你的服务器
- 查询状态:你可以随时查询交易状态
金额处理
- 所有金额均以分为单位(如 100 分 = 1 元)
- 支持币种:CNY(人民币)、USD(美元)、EUR(欧元)等
幂等性
为防止重复处理,建议在请求中添加 Idempotency-Key 请求头:
Idempotency-Key: unique-request-id-12345
示例代码
创建支付交易
curl -X POST https://sandbox.efundpay.com/v4/transactions \
-H "Authorization: Bearer sk_test_..." \
-H "x-merchant-account-id: <x-merchant-account-id>" \
-H "Content-Type: application/json" \
-d '{
"amount": 10000,
"currency": "CNY",
"description": "商品购买",
"customer": {
"email": "customer@example.com",
"name": "张三"
},
"return_url": "https://yoursite.com/success",
"cancel_url": "https://yoursite.com/cancel"
}'
查询交易状态
curl -X GET https://api.efundpay.com/v4/transactions/txn_123456 \
-H "Authorization: Bearer sk_test_..."
-H "x-merchant-account-id: <x-merchant-account-id>"
Webhook 处理
// Express.js 示例
app.post('/webhook/efundpay', (req, res) => {
const event = req.body;
switch (event.type) {
case 'transaction.completed':
// 处理支付成功
console.log('支付成功:', event.data.transaction);
break;
case 'transaction.failed':
// 处理支付失败
console.log('支付失败:', event.data.transaction);
break;
}
res.json({ received: true });
});
安全最佳实践
API 密钥安全
- ✅ 将 API 密钥存储在环境变量中
- ✅ 定期轮换 API 密钥
- ❌ 不要在前端代码中暴露密钥
- ❌ 不要将密钥提交到版本控制系统
Webhook 校验
每个 Webhook 请求都包含签名用于验证请求来源:
const crypto = require('crypto');
function verifyWebhookSignature(payload, signature, secret) {
const expectedSignature = crypto
.createHmac('sha256', secret)
.update(payload)
.digest('hex');
return crypto.timingSafeEqual(
Buffer.from(signature),
Buffer.from(expectedSignature)
);
}
支持的支付方式
| 支付方式 | 支持地区 | 处理时间 |
|---|---|---|
| Visa/MasterCard | 全球 | 实时 |
| PromptPay | 泰国 | 实时 |
| TrueMoney 电子钱包 | 泰国 | 实时 |
| Rabbit LINE Pay | 泰国 | 实时 |
| ShopeePay 泰国电子钱包 | 泰国 | 实时 |
| KPlus 手机银行 | 泰国 | 实时 |
| SCB EASY 手机银行 | 泰国 | 实时 |
| Krungsri 手机银行 | 泰国 | 实时 |
| KTB 手机银行 | 泰国 | 实时 |
| Paotang 手机银行 | 泰国 | 实时 |
| Pix | 巴西 | 实时 |
| 微信支付 | 中国 | 实时 |
| 支付宝 | 中国 | 实时 |
多语言 SDK
我们为多种编程语言提供 SDK,方便你快速集成:
技术支持
如在集成过程中遇到问题,请联系我们:
- 技术支持邮箱:dev@efundflow.com
- 文档反馈:support@efundflow.com
- 社区论坛:www.efundflow.com
准备好开始了吗?请访问 认证 页面,了解如何配置你的第一个 API 请求。