Nagad支付网关是否有官方API?

是的,Nagad支付网关 确实提供了官方的 API(应用程序接口),允许开发者将其集成到网站、移动应用或其他系统中,以便接收来自客户的在线支付。以下是关于 Nagad API 的关键信息:


1. Nagad API 官方资源

  • 官方网站: https://nagad.com.bd
    在官网的“开发者”或“商户”板块中,通常会有技术文档和申请入口。
  • API文档:
    官方提供详细的接口文档(RESTful API),涵盖支付请求、回调通知、交易查询等功能。部分内容可能需要注册商户账户后才能访问。

2. 主要功能

Nagad API 支持以下常见操作:

  • 即时支付(PGW): 用户通过Nagad账户或绑定银行卡完成付款。
  • 退款处理: 发起全额或部分退款。
  • 交易状态查询: 实时获取订单的支付状态。
  • Webhook通知: 异步接收支付成功/失败的服务器回调。

3. 如何获取API接入权限?

  1. 注册商户账户
    需通过Nagad商户平台提交营业执照、法人身份证明等文件进行审核。
  2. 申请API权限
    审核通过后,在后台生成 Merchant IDAPI Key等凭证。
  3. 沙箱测试环境
    Nagad可能提供测试环境供开发调试(模拟交易无需真实资金)。

*4.注意事项

  • 🔐️必须使用HTTPS加密通信以确保安全性。
  • 📝仔细阅读官方文档中的字段格式要求(如金额单位、签名算法)。

5. Nagad API 集成步骤(详细指南)

要成功集成 Nagad支付网关API,请按照以下步骤操作:


① 获取API凭证

  1. 登录商户后台
  2. 生成密钥对
    • 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 your MerchantID, 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 // 用于订阅服务
}

② 处理大额或分阶段交易

对于高金额订单或分期付款:

  1. 分账功能:

    • 将一笔支付的资金拆分到多个商户账户(例如电商平台和卖家)。
    • API可能需要额外字段 splitRules
  2. 预授权+扣款:

    • Step1: 冻结用户资金 (authorizeOnly=true)
    • Step2: 实际扣款时调用 /api/capture

安全加固建议* 🔒*

风险 解决方案
中间人攻击 强制使用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.调试工具清单

🛠️快速排查问题必备:

  1. Postman Collection – Import官方提供的API模板直接测试。
  2. ngrok – 将本地服务器暴露为HTTPS网址接收回调。
  3. JWT.io – Debug令牌或签名错误。

*10.关键注意事项总结

⚠️务必遵守:

  • 🕒每日对账:通过/api/transactions同步记录避免资金差异。
  • 📉费率变动通知:订阅商户邮件以免突然成本上涨。
  • 🇧🇩地区合规性:仅限孟加拉国业务使用(Bangla文本提示可能有助转化率)。

需要更具体的案例解析?例如如何处理“已扣款但订单未更新”?