Skip to content

mohsenxad/sep-payment-gateway

Repository files navigation

🌐 پکیج اتصال به درگاه بانک سامان

این ریپوزیتوری امکان اتصال به درگاه بانک سامان را ایجاد میکند. کدها با زبان جاواسکریپت پیاده سازی شده

برای مطالعه ی جزئیات پیاده سازی صفحه ی ویکی را مشاهده کنید

https://github.com/mohsenxad/sep-payment-gateway/wiki


👨‍💻 نحوه ی نصب پکیج

npm i sep-payment-gatway -s

👨‍💻 نحوه ی استفاده از پیکج

⚙️ تعریف گیتوی سامان

require('dotenv').config();

const sepGateway = require('sep-payment-gatway')(
    {
        SEP_TERMINAL_ID: process.env.SEP_TERMINAL_ID,
    }
);

console.log(sepGateway);

⚙️ نحوه ی دریافت توکن

متد دریافت توکن پرداخت از درگاه بانک سامان

sepGateway.createPayment

🍰 Sample Cdoe:

try
    {
        const invoice = sepGateway.makeInvoice(
            {
                Amount:1000,
                RedirectURL:'https://<YOUR_SITE_HOST.IR>/<CALL_BACK_PATH>',
                ResNum:`SEP_TEST_PAYMENT_${Math.floor(Math.random() * 999)}`,
            }
        );

        const payment = await sepGateway.createPayment(invoice);

        // Continue the process

    }
catch
(
    error
)
    {
        // Handle the error
    }

⚙️ دریافت محتوای پیج برای ارسال به کاربر

payment.getPaymentRedirectHTMLPage();

⚙️ دریافت آدرس اینترنتی برای ارسال به کاربر

payment.getPaymentUrl();

⏳ انتظار برای پرداخت مشتری

⏳ در این مرحله مشتری، وارد صفحه ی بانک میشود و مراحل پرداخت را تکمیل میکند. بعد از انجام و حتی عدم پرداخت مشتری ، بانک مشتری را به آدرس callBack مشخص شده توسط شما در مرحله ی قبل باز خواهند گرداند.

⏳ منتظر دریافت پاسخ از بانک باشید و اطلاعات ارسال شده توسط بانک را با دقت بررسی کنید.

💾 اطلاعات refNumber در این مرحله دریافت میشود. در مراحل بعدی این اطلاعات مورد نیاز میباشد.

☠️ مدیریت و بررسی اطلاعات دریافت شده در آدرس کال بک از مهمترین و خطرناکترین مراحل پرداخت میباشد. مراقب این مرحله باشید.

🔥 آدرس callBack باید به یک Function با مشخصات idempotent باشد.

  • 🏴‍☠️مراقب تکرار درخواست روی این آدرس باشید.
  • 🏴‍☠️مراقب ارسال درخواست پشت سر هم در چند میلی ثانیه روی آدرس callBack باشید.
  • 🏴‍☠️اطلاعات دریافت شده روی آدرس callBack را به صورت درجا در بانک اطلاعاتی ذخیره کنید.
  • 🏴‍☠️وضعیت پرداخت را در لحظه به حالت در حال پردازش ، در بانک اطلاعاتی تغییر دهید.

🏆 اگر متوجه خطرات این بخش نیستید با من مشورت کنید mohsenXAD


⚙️ نحوه ی تایید پرداخت

متد تایید و تثبیت پرداخت بانک سامان

sepGateway.verifyPayment

🍰 Sample Cdoe:

const refNumber = 'REFRENCE_NUMBER_OF_PAYMENT_FROM_SEP';

sepGateway.verifyPayment(refNumber);

⚙️ نحوه ی برگشت پرداخت

متد بازپرداخت بانک سامان

sepGateway.reversePayment

🍰 Sample Cdoe:

const refNumber = 'REFRENCE_NUMBER_OF_PAYMENT_FROM_SEP';
sepGateway.reversePayment(refNumber);

📐 payment flow

برای مشاهده ی این دیاگرام نیاز به پلاگین mermaid دارید.

sequenceDiagram
    title Payment Flow
    participant client browser
    participant appServer
    participant payment gatway
    participant shaparak

    client browser->>appServer: request payment

    appServer->>appServer: check order
    
    rect rgb(200, 150, 255)
        appServer->>+payment gatway: get payment token
        payment gatway->>-appServer: get token response
    end
    
    appServer->>appServer: store get token result

    appServer->>client browser: shaparak url
    client browser->>+shaparak: go to shaparak
    shaparak->>shaparak: process cart info flow
    shaparak->>-appServer: payment result on callback url
    appServer->>client browser: navigate to receipt page
    
    rect rgb(200, 150, 255)
        appServer->>+payment gatway: verify payment
        payment gatway->>-appServer: verify payment result
    end
    appServer->>appServer: store payment verification result
Loading

💎 پیشنهادات مربوط به بهینه کردن گیت وی سامان

  • 🤷‍♂️ Different data type for same value

    Mehtod Parameter Data Type
    getToken TerminalId String
    verfiy TerminalNumber Number
    reverse TerminalNumber Number
  • 🤷‍♂️ status in get token is 1 or -1 but data type is number insted of boolean

  • 🤷‍♂️ Missleading state:

    if a transaction reversed before: we get ResultCode as موفق but success as false what does this means

📦 Entites

  1. invoice

Maintainers

install jest

  1. npm install --save-dev jest

video process

  1. review docuement
  2. create models test
  3. create modesl
  4. create functions test
  5. create functions

About

پکیج اتصال به درگاه بانک سامان

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published