是的,Nagad支付网关 确实提供了官方的 API(应用程序接口),允许开发者将其集成到网站、移动应用或其他系统中,以便接收来自客户的在线支付。以下是关于 Nagad API 的关键信息:
1. Nagad API 官方资源
- 官方网站: https://nagad.com.bd
在官网的“开发者”或“商户”板块中,通常会有技术文档和申请入口。 - API文档:
官方提供详细的接口文档(RESTful API),涵盖支付请求、回调通知、交易查询等功能。部分内容可能需要注册商户账户后才能访问。
2. 主要功能
Nagad API 支持以下常见操作:
- 即时支付(PGW): 用户通过Nagad账户或绑定银行卡完成付款。
- 退款处理: 发起全额或部分退款。
- 交易状态查询: 实时获取订单的支付状态。
- Webhook通知: 异步接收支付成功/失败的服务器回调。
3. 如何获取API接入权限?
- 注册商户账户:
需通过Nagad商户平台提交营业执照、法人身份证明等文件进行审核。 - 申请API权限:
审核通过后,在后台生成Merchant ID、API Key等凭证。 - 沙箱测试环境:
Nagad可能提供测试环境供开发调试(模拟交易无需真实资金)。
*4.注意事项
- 🔐️必须使用HTTPS加密通信以确保安全性。
- 📝仔细阅读官方文档中的字段格式要求(如金额单位、签名算法)。
5. Nagad API 集成步骤(详细指南)
要成功集成 Nagad支付网关API,请按照以下步骤操作:
① 获取API凭证
- 登录商户后台
- 访问 Nagad Merchant Portal
- 进入 “开发者”或“API设置” 部分。
- 生成密钥对
Merchant ID(商户唯一标识)Public Key&Private Key(用于数据加密和签名验证)
② API调用流程
典型的支付流程如下:
| # | 步骤 | HTTP方法 | Endpoint示例 |
|---|---|---|---|
| 1. | 创建订单 (Initiate Payment) | POST | /api/init-payment |
| 2. | 用户跳转至Nagad页面完成支付 | – | Redirect URL (PGW) |
| 3. | 接收回调通知 (Webhook) | POST | Your Server URL |
| 4. | 查询交易状态 (可选) | GET | /api/check-status/{order_id} |
③ PHP/Python代码示例
(A) PHP – 发起支付请求
<?php
$merchantId = "YOUR_MERCHANT_ID";
$paymentRef = "ORDER_" . uniqid(); // Unique order ID
$amount = "100.50"; // BDT
// Step 1: Call Nagad Init API
$postData = [
'merchantId' => $merchantId,
'orderId' => $paymentRef,
'amount' => $amount,
'callbackUrl' => 'https://your-website.com/nagad-callback'
];
// Sign the request data with your private key
$signature = hash_hmac('sha256', json_encode($postData), $privateKey);
// Send request to Nagad
$ch = curl_init('https://api.nagad.com.bd/api/init-payment');
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($postData));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'X-Auth-Key: '. $publicKey,
'X-Signature: '. $signature
]);
$response = curl_exec($ch);
?>
(B) Python – Webhook处理
from flask import Flask, request
app = Flask(__name__)
@app.route('/nagad-callback', methods=['POST'])
def handle_payment():
data = request.json
# Verify signature from Nagade server
received_signature=request.headers.get("X-Signature")
expected_sign=hmac.new(secret_key.encode(),json.dumps(data).encode(),"sha256").hexdigest()
if received_sign == expected_sign:
if data["status"] == "Success":
print(f"Payment success! Order ID:{data['order_id']}")
else:
print("Payment failed!")
return "",200
if __name__=="__main__":
app.run(port=5000)
*6.常见问题与调试建议
✅️Q1: API返回错误码?
401 Unauthorized: Check yourMerchantID, keys and signature generation logic.400 Bad Request: Validate JSON payload format.
✅️Q2: How to test without real money?
→ Use Sandbox mode (testmode=true) in requests.
✅️Q3: Webhooks not triggering?
→ Ensure your callback URL is HTTPS and publicly accessible.
需要更具体的帮助吗?比如某个语言的SDK或字段说明?
7. Nagad API 高级功能与最佳实践
在完成基础集成后,你可能需要进一步优化支付流程或处理复杂场景。以下是进阶指南:
① 支持多种支付方式
Nagad API 不仅支持钱包支付,还可能允许以下方式(需确认最新文档):
- 银行卡支付(Visa/Mastercard)
- 扫码支付(用户扫描QR码完成交易)
- 定期扣款(订阅模式,需用户授权)
在发起支付请求时,可通过参数指定:
{
"paymentMethod": "wallet", // or "card", "qr"
"allowRecurring": true // 用于订阅服务
}
② 处理大额或分阶段交易
对于高金额订单或分期付款:
-
分账功能:
- 将一笔支付的资金拆分到多个商户账户(例如电商平台和卖家)。
- API可能需要额外字段
splitRules。
-
预授权+扣款:
- Step1: 冻结用户资金 (
authorizeOnly=true) - Step2: 实际扣款时调用
/api/capture
- Step1: 冻结用户资金 (
③安全加固建议* 🔒*
| 风险 | 解决方案 |
|---|---|
| 中间人攻击 | 强制使用TLS1.2+,禁用HTTP回退 |
| 数据篡改 | 对所有回调验证签名(X-Signature) |
| 重放攻击(Replay Attack) | 检查请求时间戳(如超过5分钟拒绝) |
示例签名验证代码(Node.js):
const crypto = require('crypto');
function verifySignature(data, receivedSig, secretKey) {
const hmac = crypto.createHmac('sha256', secretKey);
hmac.update(JSON.stringify(data));
return hmac.digest('hex') === receivedSig;
}
*8.替代方案与迁移策略
如果遇到API限制,可考虑以下备选方案:
(A) SDK简化开发
Nagad可能提供官方SDK(如Java/Python库),比裸调API更安全便捷。查找路径:
开发者门户 → Downloads → SDK Packages
(B) Payment Gateway聚合层
使用Razorpay、Stripe等国际网关通过"Bangladesh Local Payments"选项间接支持Nagad。
(C) Webhook代理服务 (Failover方案)
用工具如Pipedream确保回调永不丢失:
用户付款 → Nagad → Pipedream队列 → Your Backup Server
*9.调试工具清单
🛠️快速排查问题必备:
- Postman Collection – Import官方提供的API模板直接测试。
- ngrok – 将本地服务器暴露为HTTPS网址接收回调。
- JWT.io – Debug令牌或签名错误。
*10.关键注意事项总结
⚠️务必遵守:
- 🕒每日对账:通过
/api/transactions同步记录避免资金差异。 - 📉费率变动通知:订阅商户邮件以免突然成本上涨。
- 🇧🇩地区合规性:仅限孟加拉国业务使用(Bangla文本提示可能有助转化率)。
需要更具体的案例解析?例如如何处理“已扣款但订单未更新”?
