Class-Payment-VNPAY — VNPAY決済デモ(Node.js + フロント)

Web

概要

このリポジトリは、VNPay決済ゲートウェイと連携するためのサンプル実装をまとめたものです。メインはNode.jsで書かれたバックエンド(vnpay_nodejs)と、支払いフロー確認のためのフロントエンド(vnpay_frontend)を含んでおり、READMEにはローカルでデモを動かす手順(Node.jsのインストール、npm install、設定ファイルへのキー/TmnCodeの登録、サーバ起動)が説明されています。教材として使いやすい構成で、決済リクエスト生成、リダイレクト処理、レスポンス検証などの基本フローが学べます。小規模サンプルのため、本番化にはセキュリティやエラーハンドリングの強化が必要です。

GitHub

リポジトリの統計情報

  • スター数: 2
  • フォーク数: 0
  • ウォッチャー数: 2
  • コミット数: 7
  • ファイル数: 5
  • メインの言語: JavaScript

主な特徴

  • VNPayの決済フローをNode.jsで実装した教育用サンプル。
  • フロントエンドとバックエンドが分かれており、実装の分離が学べる構成。
  • READMEに従えばローカルでのデモ実行が可能(設定ファイル編集で完了)。
  • 最小構成で決済リクエスト生成・署名・レスポンス検証を確認できる。

技術的なポイント

本プロジェクトは、VNPayの「支払いリクエスト生成→リダイレクト→コールバック受信→検証」という典型的な決済フローをNode.jsで再現しています。config/default.jsonにてvnp_TmnCodeやシークレットキーを設定し、サーバ側で決済用URLの生成とハッシュ署名(HMAC等)を行う実装になっている点が重要です。フロントエンドは、ユーザーから支払い情報を受け取りバックエンドAPIへ送り、バックエンドはVNPay仕様に従ったパラメータを整形して決済URLを返却/もしくは直接リダイレクトします。レスポンスの検証では、VNPayから返ってくるトランザクションパラメータに対し、事前に保有するシークレットで署名検証を行い正当性を確認する必要があります。また、ローカルで簡単に動かせるようnpmベースで依存管理されており、expressなどの一般的なミドルウェアを利用している想定です。セキュリティ面では、シークレットのハードコーディングを避け、環境変数や外部シークレットマネージャーを用いる改善余地があること、エラーハンドリング・タイムアウト・再試行ロジックやログのマスキングが本番導入前に必須である点も押さえておくべきです。最後に、テストやCIの設定は含まれていないため、決済フローを自動化テストで検証する仕組みを追加すると信頼性が向上します。

プロジェクトの構成

主要なファイルとディレクトリ:

  • .gitignore: file(ノードモジュールや環境ファイルを除外する設定)
  • README.md: file(デモ実行手順と基本説明)
  • assets: dir(デモ用の画像など静的資産、例: vnpay-demo.png)
  • vnpay_frontend: dir(支払いボタンやフォーム、フロント側のサンプルコード)
    • 主にユーザー入力を受け取りバックエンドへリクエストする簡易UIが入っている想定
  • vnpay_nodejs: dir(Node.jsサーバ側実装)
    • config/default.json: 設定ファイル(vnp_TmnCodeやシークレットの例を記載)
    • 決済URL生成・署名ロジック、コールバック受信エンドポイント、依存管理(package.json)が配置される構造

プロジェクトは最小限のファイル数で構成されており、学習用に不要な依存や複雑さを排してあるため、実際に手を動かして理解を深めるのに適しています。設定変更ですぐに外部テスト環境やサンドボックスで動かせることが利点です。

まとめ

学習やデモ用途に適したVNPay決済の最小実装サンプル。実運用前の強化が必要。

リポジトリ情報:

READMEの抜粋: **# Hướng dẫn chạy demo thanh toán VNPay bằng NodeJS **

0. Đây là sản phẩm

QR Code ABBank

1. Cài đặt NodeJS

Tải và cài đặt NodeJS tại: https://nodejs.org/en/

2. Mở Command Prompt (cmd) và chuyển tới thư mục code demo

Ví dụ: cd vnpay_nodejs

3. Cài đặt module cần thiết

npm install

4. Cấu hình thông tin VNPay

Mở file: vnpay_nodejs/config/default.json
Thay các giá trị sau bằng thông tin của bạn (do VNPay cung cấp):

  • vnp_TmnCode
  • vnp…