India Payment Channel APIにアクセスするには?開発者向けガイド

India Payment Channel APIにアクセスするには?開発者向けガイド

#インド決済チャネルAPIアクセスガイド

インドの決済プラットフォームの専門家として、インドの主要な決済チャネルのAPIにアクセスする方法を詳しく紹介する。

インドの主な決済ゲートウェイ

1.レイゾルペイ
2.ペイユー・インディア
3. CCAvenue
4.インスタモジョ
5.ペイティーエム決済ゲートウェイ

共通アクセス・プロセス

1.マーチャントアカウントの登録
- 選択した決済ゲートウェイの公式ウェブサイトにアクセスし、加盟店アカウントを登録する。
- KYC書類の提出(通常、PANカード、GSTIN、銀行口座証明など)
- 承認待ち(通常1~3営業日かかる)

2.APIキーの取得
- ダッシュボードでAPIキーペアを生成または表示します。
- キーID/公開キー
- 鍵の秘密/秘密鍵

3. API統合オプション
ほとんどのインドの支払ゲートウェイが対応している。
“`
a) チェックアウトページの統合(最もシンプル)
b) Webhooksによるリアルタイム通知処理
c) SDKの統合(Node.js、PHP、Pythonなど)
d) 生のAPIコール(RESTfulインターフェース)
“`

Razorpayサンプルコード(Node.js)

「ジャバスクリプト
const Razorpay = require('razorpay');
const instance = new Razorpay({)
key_id: 'YOUR_KEY_ID'、
key_secret: 'YOUR_KEY_SECRET'
});

//注文の作成
constオプション = {
金額:req.body.price *100, //パイサ単位の金額(100パイサ=1ルピー)
通貨:「INR」、
レシート:"order_rcptid_11"
};

instance.orders.create(options).then((order)=>{)
res.json(order);
}).catch((err)=>{
res.status(500).send(err);
});
“`

PayU India サンプル (PHP)

"`php

// Razorpay UPI インテントの例
constオプション = {
金額:50000、//₹500(単位:パイサ)
通貨:「INR」、
メソッド:「upi」、
customer: {
連絡先:「+919876543210」、
Eメール:"[email protected]"
},
upi_link: true, //UPIインテントフローを有効にする
};

instance.paymentLink.create(options);

主要パラメータの説明::

  • ブパ仮想支払いアドレス(例:user@upi)
  • フロー収集または意図(デフォルト)
  • 期限切れ:: UPIリンクの有効期限(UNIXタイムスタンプ)

EMIオプション設定

分割払いを扱う場合は特に注意が必要である:

$emiOptions = [ ] です。
'bank' => 'HDFC', //対応銀行コード
'tenure' => [3,6], // 分割払い可能月数
'interest_rate' => ['3'=>0,'6'=>2] // 各期の利率(%)
];

2.Webhookセキュリティの実装

JWT署名の検証(PayUの例)

from jwt import decode, InvalidSignatureError

def verify_webhook(request).
トライしてみよう。
ペイロード = デコード(
request.headers['X-PayU-Signature']は、次のようになります。
key='YOUR_MERCHANT_SECRET'、
アルゴリズム=['HS256']
)
return payload['payload']
ただし InvalidSignatureError を除く。
abort(403) # は認証されていないリクエストを拒否する

app.route('/webhook', methods=['POST'])
def handle_webhook().
verified_data = verify_webhook(リクエスト)

安全機能::
IPホワイトリストの検証(ゲートウェイの公式IPセグメントを取得する)
HMAC 署名の二重チェック
ノンス・アンチ・リプレイ攻撃 ✅ ノンス・アンチ・リプレイ攻撃

APIエラー処理戦略

一般的なエラーコードとその対応

HTTPステータスコード エラーコード 推奨される治療法
400 BAD_REQUEST パラメータ・フォーマットと必須フィールドのチェック
401 未承認 認証トークンを再作成する
429 RATE_LIMITED インデックス再試験の実施
502/504 非同期補償機構の設計

推奨される再試行ロジックの実装(Node.js)。

非同期関数 makePaymentRequest(params, retries=3){.
トライ
return await gateway.charge(params);
}catch(err){。
if(retries>0 && isRetriable(err)){。
新しいPromise(r=>setTimeout(r,1000*(4-retries)))を待つ;
makePaymentRequest(params,retries-1)を返す;
}
を投げる。
}
}

関数 isRetriable(err){
const codes = ['ECONNRESET','ETIMEDOUT','EPIPE'];
return codes.includes(err.code) || err.statusCode >= 500;
}

PCI DSS準拠要件

インドでカードデータを処理するために従わなければならない規範:

  1. SAQ A-EP 適用シナリオ::
    ✔️ 完全にホスティングされた決済ページ
    ✔️ 自社のサーバーに機密データが流れることはない。

  2. 必要な措置のリスト::
    🔹 四半期ごとの脆弱性スキャン(QSA 認証ツール)
    🔹 年間ペネトレーションテスト報告書
    🔹 TLS 1.2+の必須実装(HSTSヘッダー設定)

3.ロギング仕様:
ᷔ 取引ログを少なくとも12カ月間保管すること
🚫 CVV/CVC番号の保存の禁止
🛡️ PAN番号の暗号化保存(AES256+キーローテーション使用)

BharatQR特別統合

オフラインの加盟店はユニファイドQRコードをサポートする必要がある。

// BharatQR コンテンツの生成例(BHIM SDK)
String qrData = new QRBuilder()
.setMerchantId("MER123456")
.setStoreId("STORE001")
..setTerminalId("POS01")
.setAmount(new BigDecimal("250.50"))
.buildBharatQRString(); .

//レスポンス・フォーマット指定
{
"qrType":"BHARATQR"。
"内容": "000201010212...",
"imageUrl": "https://api.upi.qr/v1/generate?data=..."
}

⚠️ なお、ダイナミックQRコードの有効期限は通常10分である。

この先進的なコンテンツが、より強固な決済システムの構築に役立つことを願っています。NPCIおよびRBIの規制要件は定期的に更新されるため、各プラットフォームの最新の公式文書を必ず参照してください。特定のゲートウェイのより詳細な実装については、特定のプラットフォームに特化したガイダンスを提供することができます。