مقدمه
سرویس پرداخت یکپارچه چیست:
پرداخت یکپارچه سرویس پرداختی است که تمام روش های پرداخت (پرداخت از حساب، پرداخت با کارت، پرداخت اعتباری، کیف پول و ...) را بصورت یکپارچه و جامع به کسب و کار های ارايه میکند. در این سرویس با اضافه شدن روش های پرداخت جدید نیازی به پیاده سازی جدیدی نخواهید داشت.
برای تمامی درخواست های ارسالی باید مقادیر زیر در هدر ارسال شوند: توکن همان کلید API یی است که از بخش پشتیبانی وندار بعد از اتمام فرآیند اداری دریافت کرده اید.
Accept: application/json x-api-key: {api-key}
آبجکت های سرویس پرداخت یکپارچه
سرویس های مختلف ممکن است آبجکت های یکسانی داشته باشد که در ادامه آورده شده است.
۱. آبجکت مشتری (customer)
{ "id": "efdaf820-2075-11ed-a96b-a9167c05d45d", "mobile": "09354614194", "first_name": "Ali", "last_name": "Gholami", "national_code": "0123456789", "email": "asd@qwe.com" }
- id: شناسه مشتری.
- mobile: شماره موبایل مشتری.
- first_name: نام مشتری.
- last_name: نام خانوادگی مشتری.
- national_code: کدملی مشتری.
- email: : ایمیل مشتری.
۲. آبجکت مجوز پرداخت از حساب (mandate)
{ "id": "1408bf10-2dcd-11ed-b084-bb5348c5e321", "payment_method": "debit-saman", "count": 30, "limit": 30000000, "expires_at": 1685350749, "customer_id": "efdaf820-2075-11ed-a96b-a9167c05d45d", "status": "active", "created_at": 1662452234, "updated_at": 1662452234, "revoked_at": null }
- id: شناسه مجوز پرداخت از حساب.
- payment_method: روش پرداخت.
- count: حداکثر تعداد دفعاتی که در یک ماه میتوان با این مجوز، پرداخت موفق انجام داد.
- limit: حداکثر مبلغ قابل برداشت در پرداخت وجههای مربوط به این مجوز. واحد پول ریال است.
- expires_at: تاریخ انقضای مجوز.
- customer_id: شناسه مشتری.
- status: وضعیت مجوز.
- created_at: زمان ایجاد مجوز.
- updated_at: زمان بروزرسانی مجوز.
- revoked_at: زمان لغو مجوز.
۳. آبجکت پرداخت (payment)
{ "id": "b7d0d74c-4b25-4d42-8338-d9dce3c9e16f", "payment_method": "debit-ayandeh", "amount": 10000, "wage_amount": 1000, "affected_amount": 9000, "ref_id": null, "tracking_code": null, "status": "done", "error": null, "created_at": 1673773548, "updated_at": 1673773548, "paid_at": 1673773548, "type": "debit", "debit": { "mandate_id": "068bb9f0-5ddf-11ed-b16d-61da2281b3d4" } }
- id: شناسه پرداخت.
- payment_method: روش پرداخت.
- amount: مبلغ پرداخت.
- wage_amount: کارمزد پرداخت.
- affected_amount: مبلغی که کیف پول کسب و کار را تحت تاثیر قرار داده است.
- ref_id: رسید دیجیتال یکتا در شبکه پرداخت کشور.
- tracking_code: کد رهگیری به همراه تاریخ انجام تراکنش یکتا است.
- status: وضعیت پرداخت.
- error: خطا در صورت انجام نشدن پرداخت.
- created_at: زمان ایجاد پرداخت.
- updated_at: زمان بروزرسانی پرداخت.
- paid_at: زمان انجام تراکنش.
- type: نوع روش پرداختی که در حال حاضر از مقادیر debit، credit و card پشتیبانی می شود.
- debit.mandate_id: درصورتی که نوع روش پرداختی برابر debit باشد شناسه مجوز پرداخت از حساب برگردانده میشود.
- credit: در صورتی که نوع روش پرداختی برابر با credit باشد، این پارامتر نمایش داده می شود که در حال حاضر مقدار آن برابر null است.
- card: در صورتی که نوع روش پرداخت برابر با card باشد دو مقدار cid و card_number برای شما بازگردانده می شود.
- card.card_number: شماره کارت پرداخت کننده.
- card.cid: هش شماره کارت که با الگوریتم SHA256 هش شده است.
"error": { "code": "WITHDRAWAL_TIMEOUT", "message": "withdrawal timeout" }
۴. آبجکت صورتحساب (checkout)
{ "id": "fbcf27ba-45d2-4aee-aa50-18a7d33a5d27", "request_id": "sDrfgkT5lkk5llk4Gt", "checkout_number": "123", "amount": 10000, "status": "paid", "description": "test", "created_at": 1673773548, "updated_at": 1673773548, "customer": { "id": "efdaf820-2075-11ed-a96b-a9167c05d45d", "mobile": "09354614194", "first_name": "Ali", "last_name": "Gholami", "national_code": "0123456789", "email": "asd@qwe.com" }, "payments": [ { "id": "b7d0d74c-4b25-4d42-8338-d9dce3c9e16f", "payment_method": "debit-ayandeh", "amount": 10000, "wage_amount": 1000, "affected_amount": 9000, "ref_id": null, "tracking_code": null, "status": "done", "error": null, "created_at": 1673773548, "updated_at": 1673773548, "paid_at": 1673773548, "type": "debit", "debit": { "mandate_id": "068bb9f0-5ddf-11ed-b16d-61da2281b3d4" } } ] }
- id: شناسه صورتحساب
- request_id: شناسه یکتا صورتحساب
- checkout_number: شماره فاکتور صورتحساب
- amount: مبلغ صورتحساب
- status: وضعیت صورتحساب
- description: توضیحات صورتحساب
- updated_at: زمان بروزرسانی صورتحساب
- customer: اطلاعات مشتری
- payments: اطلاعات پرداخت
مدیریت روشهای پرداخت
لیست روش های پرداخت قابل استفاده از این بخش قابل دسترس میباشد. میتوانید بر اساس نیازمندی کسبوکار خود کلیه روشهای پرداخت فعال را به کاربران ارائه دهید و یا در صورت نیاز یک لیست شخصیسازی شده برای کسبوکار خود ایجاد کنید و لیست تعیین شدهای از روشهای پرداخت را در اختیار کاربران خود قرار دهید.
این امکان برای شما وجود دارد که از میان همه روشهای پرداختی که در حال حاضر قابلیت ارائه سرویس پرداخت دارند، بر اساس نیاز خود، روشهای پرداختی را فعال یا غیرفعال کنید. بصورت پیشفرض کلیه روشهای پرداخت برای کسبوکار شما فعال میباشند و با فراخوانی سرویس لیست روشهای پرداخت میتوانید اطلاعات روشهای پرداخت و همچنین وضعیت در دسترس بودن روشهای پرداخت را دریافت نمایید. در صورتی که بخواهید روشهای پرداختی خاصی را از لیست روشهای پرداختی دریافتی حذف نمایید میتوانید از طریق داشبورد وندار، بخش پرداخت یکپارچه، اقدام نمایید.
۱. فعال و غیرفعالسازی روشهای پرداخت
جهت فعال یا غیرفعالسازی روشهای پرداخت میتوانید از بخش مدیریت اقدام نمایید.
برای این کار کافی است که از داشبورد وارد کسب و کار مورد نظر خود شوید و از منوی سمت راست بر روی پرداخت یکپارچه کلیک نمایید.
سپس می توانید با انتخاب گزینه مدیریت برای نوع های مختلف پرداخت، روش های پرداخت موجود را فعال یا غیرفعال کنید.
برای این کار کافیست که بر روی عدم نمایش یا نمایش در مودال باز شده کلیک نمایید.
۲. دریافت لیست روشهای پرداخت
جهت فراخوانی لیست روشهای پرداخت، سرویس زیر را فراخوانی کنید.
Method: GET Address: https://api.vandar.io/mpg/v1/business/{business}/payment-methods
پارامتر {business} همان نام انگلیسی کسب و کاری است که قصد دریافت لیست روشهای پرداخت آن را دارید.
پارامترهای مجاز
name | Type | Status |
---|---|---|
mobile | string | optional |
modes | array | optional |
types | array | optional |
limit | numeric | optional |
is_healthy | boolean | optional |
توضیحات
- mobile (اختیاری): شماره موبایل کاربر. شماره موبایل بدون کد کشور و به فرمت 09123456789 باشد.
- modes (اختیاری): این کلید به مدل پرداخت مربوط است. هر مقداری وارد شود، بر اساس مقدار وارد شده لیست روش های پرداخت فیلتر میشود.
- once : جهت پرداخت یک باره
- types (اختیاری): این کلید به نوع روش پرداخت مربوط است. هر مقداری وارد شود، بر اساس مقدار وارد شده لیست روش های پرداخت فیلتر میشود.
- debit : پرداخت از حساب
- credit : پرداخت اعتباری
- card : پرداخت با کارت
- limit (اختیاری): هر روش پرداختی محدودیت سقف برداشت دارد. درصورت وارد کردن این کلید، روشهای پرداخت بر اساس حداقل مقدار وارد شده فیلتر میشود.
- is_healthy (اختیاری): هر روش پرداختی بنابر دلایل مختلف ممکن است به صورت موقت آماده به ارائه خدمات نباشد. درصورت وارد کردن این کلید ، روشهای پرداخت بر اساس مقدار وارد شده فیلتر میشود.
نمونه json
{ "mobile": "09354614194", "modes": [ "once" ], "types": [ "debit" ], "limit": 3000000, "is_healthy": true }
نمونه پاسخ دریافتی موفق:
HTTP/1.1 200
{
"message": "لیست متد های پرداخت."
"data": [
{
"modes": [
"once"
],
"slug": "debit-saman",
"type": "debit",
"name": "بانک سامان",
"logo": "https://cdn.vandar.io/mpg/payment_methods/debit-saman.svg",
"is_healthy": true,
"limit": 4270045,
"debit": {
"mandates": [
{
"id": "1408bf10-2dcd-11ed-b084-bb5348c5e321",
"payment_method": "debit-saman",
"count": 30,
"limit": 30000000,
"expires_at": 1685350749,
"customer_id": "efdaf820-2075-11ed-a96b-a9167c05d45d",
"status": "active",
"created_at": 1662452234,
"updated_at": 1662452234,
"revoked_at": null
}
]
}
}
]
}
صدور مجوز در روش پرداخت از حساب
۱. درخواست بستن مجوز پرداخت از حساب:
اولین مرحله برای بستن مجوز پرداخت از حساب، ثبت درخواست صدور مجوز پرداخت از حساب است. لازم است که درخواست خود را به آدرس زیر ارسال کنید.
Method: POST Address: https://api.vandar.io/mpg/v1/business/{business}/mandates
پارامتر {business} همان نام انگلیسی کسب و کاری است که درخواست بستن مجوز پرداخت از حساب بر روی آن را دارید.
پارامترهای مجاز
name | Type | Status |
---|---|---|
payment_method | string | required |
count | integer | required |
limit | integer | required |
expires_at | UNIX timestamp | required |
callback_url | string | required |
customer.mobile | string | required |
customer.first_name | string | optional |
customer.last_name | string | optional |
customer.national_code | string | optional |
customer.email | string | optional |
توضیحات
- payment_method: (اجباری) slug روش پرداخت که از لیست روش های پرداخت قابل استفاده است.
- count (اجباری): حداکثر تعداد دفعاتی که در یک ماه میتوان با این مجوز پرداخت از حساب، برداشت وجه موفق انجام داد.
- limit (اجباری): حداکثر مبلغ وجه قابل برداشت در هر درخواست مربوط به این مجوز پرداخت از حساب. واحد پول ریال است.
- expires_at: (اجباری) تاریخ انقضای مجوز پرداخت از حساب. این تاریخ باید بزرگتر از تاریخ روز جاری باشد و به صورت UNIX timestamp وارد میشود.
- callback_url (اجباری): آدرس بازگشتی که کاربر پس از تایید اطلاعات در صفحه بانک، به آن منتقل میشود.
-
customer:
- mobile (اجباری): شماره موبایل کاربر. شماره موبایل بدون کد کشور و به فرمت 09123456789 باشد.
- first_name (اختیاری): نام کاربر که بهتر است برای پیگیریهای بعدی ارسال شود
- last_name (اختیاری): نامخانوادگی کاربر که بهتر است برای پیگیریهای بعدی ارسال شود
- national_code (اختیاری): کدملی کاربر که بهتر است برای پیگیریهای بعدی ارسال شود.
- email (اختیاری): ایمیل کاربر که بهتر است برای پیگیریهای بعدی ارسال شود.
نمونه json
{ "payment_method": "debit-saman", "count": 7, "limit": 10000, "expires_at": 1685350749, "callback_url": "https://paperpiano.ir/mandate/callback", "customer": { "mobile": "09123456789", "first_name": "محمد", "last_name": "مقصودی", "national_code": "0123456789", "email": "yourcustomer@gmail.com", } }
نمونه پاسخ دریافتی موفق:
HTTP/1.1 200
{
"message": "درخواست توکن با موفقیت ثبت شد.",
"data": {
"token": "0cf235d0-d48b-11ea-86cd-298ec898a9bd",
"customer": {
"mobile": "09123456789",
"first_name": "محمد",
"last_name": "مقصودی",
"national_code": "0098001212",
"email": "yourcustomer@gmail.com",
}
}
}
}
- message: پیغام درخواست توکن با موفقیت ثبت شد.
-
data:
- token: از این توکن برای انتقال کاربر به صفحه بانک و گرفتن دسترسی مجوز پرداخت از حساب استفاده خواهد شد.
-
customer:
- mobile: شماره موبایل کاربر
- first_name: نام کاربر
- last_name: نامخانوادگی کاربر
- national_code: کدملی کاربر
- email: ایمیل کاربر
۲. انتقال کاربر به صفحه تایید صدور مجوز پرداخت از حساب
در مرحله بعد token دریافتی از قسمت قبل را در انتهای آدرس می گذارید و در مرورگر وارد سایت می شوید.
METHOD: get URL: https://mpg.vandar.io/mandates/{token}
در صورتی که در ارتباط با روشهای پرداخت اختلال پیش آمده باشد شما با آدرس زیر روبرو میشوید:
https://yourdomain.com/callback?token=0cf235d0-d48b-11ea-86cd-298ec898a9bd&status=FAILED_TO_ACCESS_BANK
- token: توکنی که با استفاده از آن تلاش کردهاید تا به صفحهی روشهای پرداخت منتقل شوید.
در صورتی که با موفقیت به صفحهی روشهای پرداخت وارد شوید، با صفحهای مشابه با صفحهی زیر مواجه خواهید شد: در این مرحله اطلاعات حسابی که کاربر می خواهد بر روی آن دسترسی بدهد باید وارد شود. شماره موبایلی که در این قسمت ارسال می شود باید متعلق به صاحب حساب باشد.
با وارد کردن اطلاعات کارت وارد صفحه زیر می شوید.
۳. دریافت کد مجوز پرداخت از حساب
در صورتی که کاربر بر روی دکمه دسترسی دارد کلیک کند، وندار کاربر را به آدرس برگشتی که در مرحله اول ارسال کردهاید به همراه پارامتر token و status و mandate_id هدایت میکند.
در صورت اجازهی دسترسی به حساب در صفحهی روشهای پرداخت
https://yourdomain.com/callback?token=0cf235d0-d48b-11ea-86cd-298ec898a9bd&mandate_id=9f307e30-dc77-11ea-830e-7533ca1787c5&status=SUCCEED
در صورت عدم اجازهی دسترسی به حساب در صفحهی روشهای پرداخت
https://yourdomain.com/callback?token=0cf235d0-d48b-11ea-86cd-298ec898a9bd&status=FAILED&error_code=user_declined_to_confirm_mandate
- token: توکنی که با استفاده از آن تلاش کردهاید تا به صفحهی روشهای پرداخت منتقل شوید.
- error_code: کد خطایی که به دلیل آن این درخواست ناموفق بوده است که می توانید با استفاده از جدول زیر توضیحات هر کد را ببینید.
error_code | error_message |
---|
۴. تایید مجوز پرداخت از حساب
درصورتی که کاربر اجازه دسترسی به مجوز پرداخت از حساب را صادر کرده باشد، باید مجوز پرداخت از حساب ایجاد شده را از طریق ارسال mandate_id به وندار تایید کنید. برای جلوگیری از تغییر وضعیت مجوز پرداخت از حسابهای پیشین، وندار تنها یک بار اجازه تایید مجوز پرداخت از حساب را به API میدهد.
Method: PATCH Address: https://api.vandar.io/mpg/v1/business/{business}/mandates/{mandate_id}
پارامتر {business} همان نام انگلیسی کسب و کاری است که قصد تایید مجوز پرداخت از حساب بر روی آن را دارید.
نمونه پاسخ دریافتی موفق:
HTTP/1.1 200
{
"message": "مجوز پرداخت از حساب با موفقیت تایید شد",
"data": {
"mandate": {
"id": "1408bf10-2dcd-11ed-b084-bb5348c5e321",
"payment_method": "debit-saman",
"count": 30,
"limit": 30000000,
"expires_at": 1685350749,
"customer_id": "efdaf820-2075-11ed-a96b-a9167c05d45d",
"status": "active",
"created_at": 1662452234,
"updated_at": 1662452234,
"revoked_at": null
}
}
}
نمونه پاسخ دریافتی نا موفق:
HTTP/1.1 403
{
"message": "مجاز به انجام این کار نیستید",
"code": "mandate_already_revoked"
}
HTTP/1.1 403
{
"message": "مجاز به انجام این کار نیستید",
"code": "mandate_already_activated"
}
۵. لیست مجوز پرداخت از حسابها
در این بخش شما می توانید لیست مجوز پرداخت از حسابهای ایجاد شده را مشاهده کنید.
METHOD: GET URL: https://api.vandar.io/mpg/v1/business/{business}/mandates
پارامتر {business} همان نام انگلیسی کسب و کاری است که قصد دریافت لیست مجوز پرداخت از حسابها بر روی آن را دارید.
پارامترهای مجاز
name | Type | Status |
---|---|---|
page | numeric | optional |
per_page | numeric | optional |
- page (اختیاری): شماره صفحه.
- per_page (اختیاری): تعداد آیتم در هر صفحه.
نمونه json
{ "page": 1, "per_page":12 }
نمونه پاسخ دریافتی موفق:
HTTP/1.1 200
{
"message": "لیست مجوزهای پرداخت از حساب کسب و کار",
"data": [
{
"id": "1408bf10-2dcd-11ed-b084-bb5348c5e321",
"payment_method": "debit-saman",
"count": 30,
"limit": 30000000,
"expires_at": 1685350749,
"customer_id": "efdaf820-2075-11ed-a96b-a9167c05d45d",
"status": "active",
"created_at": 1662452234,
"updated_at": 1662452234,
"revoked_at": null
},
{
"id": "1408bf10-2dcd-11ed-b084-bb5348c5e321",
"payment_method": "debit-saman",
"count": 30,
"limit": 30000000,
"expires_at": 1685350749,
"customer_id": "efdaf820-2075-11ed-a96b-a9167c05d45d",
"status": "active",
"created_at": 1662452234,
"updated_at": 1662452234,
"revoked_at": null
},
],
"meta": {
"current_page": 1,
"from": 1,
"last_page": 2,
"links": [
...
],
"path": "https://api.vandar.io/mpg/v1/business/{business}/mandates",
"per_page": 50,
"to": 50,
"total": 75
},
}
-
data:
- id: شناسه مجوز پرداخت از حساب که برای درخواست برداشت وجه از این شناسه استفاده می شود.
- count: تعداد درخواست های برداشت وجه که به صورت ماهانه مشخص میشود.
- limit: حداکثر مبلغ برداشت وجه در هر برداشت. واحد پول ریال است.
- payment_method: روش پرداخت که به لیست آن در بالا اشاره شده است.
- status: وضعیت مجوز.
- expires_at: تاریخ انقضای مجوز.
- customer_id: شناسه مشتری مربوط به این مجوز.
- created_at: تاریخ ایجاد مجوز.
- updated_at: تاریخ آخرین بروزرسانی مجوز.
- revoked_at: تاریخ لغو مجوز.
-
meta:
- current_page: آدرس همین صفحه
- from: شماره اولین آیتم که در این صفحه آمده است
- last_page: تعداد کل صفحات
- per_page: تعداد آیتم در هر صفحه
- to: شماره آخرین آیتمی که در این صفحه آمده است
- total: تعداد کل آیتم ها
نمونه پاسخ دریافتی نا موفق:
HTTP/1.1 401
{
"message": "احراز هویت انجام نشده است",
"code": "unauthenticated_error"
}
- message: پیغام خطا
- code: کد خطا
۶. نمایش یک مجوز پرداخت از حساب با id
شما می توانید با این دستور جزییات یک مجوز پرداخت از حساب را با فرستادن id دریافت کنید.
Method: GET Address: https://api.vandar.io/mpg/v1/business/{business}/mandates/{id}
پارامتر {business} همان نام انگلیسی کسب و کاری است که قصد نمایش یک مجوز پرداخت از حساب با id بر روی آن را دارید.
پارامتر {id} همان شناسه مجوز پرداخت از حساب مربوطه است.
نمونه پاسخ دریافتی موفق:
HTTP/1.1 200
{
"message": "مجوز پرداخت از حساب کسب و کار",
"data": {
"mandate": {
"id": "1408bf10-2dcd-11ed-b084-bb5348c5e321",
"payment_method": "debit-saman",
"count": 30,
"limit": 30000000,
"expires_at": 1685350749,
"customer_id": "efdaf820-2075-11ed-a96b-a9167c05d45d",
"status": "active",
"created_at": 1662452234,
"updated_at": 1662452234,
"revoked_at": null
}
}
}
۷. لغو مجوز پرداخت از حساب با استفاده از id
Method: DELETE Address: https://api.vandar.io/mpg/v1/business/{business}/mandates/{id}
پارامتر {business} همان نام انگلیسی کسب و کاری است که قصد لغو یک مجوز پرداخت از حساب با id بر روی آن را دارید.
پارامتر {id} همان id مربوط به مجوز پرداخت از حساب برداشت از حسابی است که قصد حذف آن را دارید.
نمونه پاسخ دریافتی موفق:
HTTP/1.1 200
{
"status": 1,
"message": "مجوز پرداخت از حساب کسب و کار با موفقیت لغو شد.",
"data": {
"mandate": {
"id": "1408bf10-2dcd-11ed-b084-bb5348c5e321",
"payment_method": "debit-saman",
"count": 30,
"limit": 30000000,
"expires_at": 1685350749,
"customer_id": "efdaf820-2075-11ed-a96b-a9167c05d45d",
"status": "active",
"created_at": 1662452234,
"updated_at": 1662452234,
"revoked_at": 1662452234
}
}
}
- message: پیغام مجوز پرداخت از حساب کسب و کار با موفقیت لغو شد.
-
data:
- mandate:
- id: آیدی مجوز پرداخت از حساب حذف شده
- count: حداکثر تعداد دفعاتی که در یک ماه می شد با مجوز پرداخت از حساب حذف شده برداشت انجام شود.
- limit: حداکثر مبلغ وجه قابل برداشت با مجوز پرداخت از حساب حذف شده.
- payment_method: slug روش پرداخت
- status: وضعیت مجوز پرداخت از حساب
- expires_at: تاریخ انقضای مجوز پرداخت از حساب
- callback_url: آدرس بازگشتی درگاه پرداخت تایید شده در وندار
- customer_id: آیدی کاربری که مجوز پرداخت از حساب برای او صادر شده بود.
- created_at: تاریخ ایجاد به صورت timestamp
- updated_at: تاریخ آخرین بروزرسانی به صورت timestamp
- revoked_at: تاریخ حذف به صورت timestamp
- mandate:
سرویس صورتحساب (Checkout)
این سرویس هنگامی به کار میرود که شما قصد دارید یک صورتحساب با روش پرداخت مشخص برای مشتری خود ایجاد کرده و مشتری نسبت به پرداخت آن اقدام نماید.
۱. ثبت صورتحساب
Method: POST Address: https://api.vandar.io/mpg/v1/business/{business}/checkouts
پارامتر {business} همان نام انگلیسی کسب و کاری است که قصد ثبت صورتحساب بر روی آن را دارید.
پارامترهای مجاز
name | Type | Status |
---|---|---|
payment_method | string | required |
amount | numeric | required |
request_id | string | optional |
checkout_number | string | optional |
description | string | optional |
type | string | required, can be [debit, credit, card] |
توضیحات
- payment_method (اجباری): روش پرداختی
- amount (اجباری): مبلغ صورتحساب
- request_id (اختیاری): برای جلوگیری از تکراری بودن درخواست(یکتا برای هر درخواست).
- checkout_number (اختیاری): شماره فاکتور
- description (اختیاری): توضیحات اختیاری
- type (اجباری): نوع روش پرداختی که در حال حاضر از مقادیر debit، credit و card پشتیبانی می شود.
با توجه به نوع روش پرداختی (debit، credit و card) نیاز هست که شما پارامترهای دیگری نیز ارسال نمایید.
پارامترهای اضافی مورد نیاز زمانی که type برابر با debit است.
name | Type | Status |
---|---|---|
debit | object | required if type = debit |
debit.mandate_id | string | required if type = debit |
توضیحات
-
debit:
- mandate_id (اجباری): شناسه مجوز پرداخت از حساب.
نمونه json
{ "payment_method": "debit-ayandeh", "amount": 1000, "request_id": 123, "checkout_number": "123", "description": "test", "type": "debit", "debit": { "mandate_id": "2de1307d-26e2-4de7-81c0-610c86a404cd" } }
نمونه پاسخ دریافتی موفق:
HTTP/1.1 200
{
"message": "صورتحساب با موفقیت ثبت شد",
"data": {
"checkout": {
"id": "fbcf27ba-45d2-4aee-aa50-18a7d33a5d27",
"request_id": "sDrfgkT5lkk5llk4Gt",
"checkout_number": "123",
"amount": 10000,
"status": "paid",
"description": "test",
"created_at": 1673773548,
"updated_at": 1673773548,
"customer": {
"id": "efdaf820-2075-11ed-a96b-a9167c05d45d",
"mobile": "09354614194",
"first_name": "Ali",
"last_name": "Gholami",
"national_code": "0123456789",
"email": "asd@qwe.com"
},
"payments": [
{
"id": "b7d0d74c-4b25-4d42-8338-d9dce3c9e16f",
"payment_method": "debit-ayandeh",
"amount": 10000,
"wage_amount": 1000,
"affected_amount": 9000,
"ref_id": null,
"tracking_code": null,
"status": "done",
"error": null,
"created_at": 1673773548,
"updated_at": 1673773548,
"paid_at": 1673773548,
"type": "debit",
"debit": {
"mandate_id": "068bb9f0-5ddf-11ed-b16d-61da2281b3d4"
}
}
]
}
}
}
- message: پیغام ثبت صورتحساب
-
data:
- checkout: اطلاعات صورتحساب
پارامترهای اضافی مورد نیاز زمانی که type برابر با credit است.
name | Type | Status |
---|---|---|
credit | object | required if type = credit |
credit.callback_url | string | required if type = credit |
credit.customer | object | required if type = credit |
credit.customer.mobile | string | required if type = credit |
credit.customer.first_name | string | optional if type = credit |
credit.customer.last_name | string | optional if type = credit |
credit.customer.national_code | string | optional if type = credit |
credit.customer.email | string | optional if type = credit |
توضیحات
-
credit:
- callback_url (اجباری): آدرس بازگشتی که کاربر پس از پرداخت، به آن منتقل میشود.
-
customer:
- mobile (اجباری): شماره موبایل کاربر. شماره موبایل بدون کد کشور و به فرمت 09123456789 باشد.
- first_name (اختیاری): نام کاربر که بهتر است برای پیگیریهای بعدی ارسال شود
- last_name (اختیاری): نامخانوادگی کاربر که بهتر است برای پیگیریهای بعدی ارسال شود
- national_code (اختیاری): کدملی کاربر که بهتر است برای پیگیریهای بعدی ارسال شود.
- email (اختیاری): ایمیل کاربر که بهتر است برای پیگیریهای بعدی ارسال شود.
نمونه json
{ "payment_method": "credit-tara", "amount": 10000, "request_id": "67843357634568", "checkout_number": "123", "description": "test", "type": "credit", "credit": { "callback_url": "https://your-callback-address.com", "customer": { "mobile": "09367636320", "first_name": "Amirali", "last_name": "Habashizadeh", "national_code": "0123456789", "email": "asd@qwe.com", } } }
نمونه پاسخ دریافتی موفق:
HTTP/1.1 200
"message": "صورتحساب با موفقیت ثبت شد",
"data": {
"checkout": {
"id": "5460fedc-3484-41d6-b4be-b8dcba1afc4d",
"request_id": "67843357634568",
"checkout_number": "123",
"amount": 10000,
"status": "not_paid",
"description": "test",
"created_at": 1678095461,
"updated_at": 1678095461,
"customer": {
"id": "de49afb0-b80b-11ed-8f15-65e047110052",
"mobile": "09367636320",
"first_name": "Amirali",
"last_name": "Habashizadeh",
"national_code": "0123456789",
"email": "asd@qwe.com"
},
"payments": [
{
"id": "b7d0d74c-4b25-4d42-8338-d9dce3c9e16f",
"payment_method": "credit-tara",
"amount": 10000,
"wage_amount": 1000,
"affected_amount": 9000,
"ref_id": null,
"tracking_code": null,
"status": "pending_redirect",
"error": null,
"created_at": 1673773548,
"updated_at": 1673773548,
"paid_at": 1673773548,
"type": "credit",
"credit": null
}
]
}
}
}
پارامترهای اضافی مورد نیاز زمانی که type برابر با card است.
name | Type | Status |
---|---|---|
card | object | required if type = card |
card.callback_url | string | required if type = card |
card.valid_card_number | string | optional if type = card |
card.customer | object | required if type = card |
card.customer.mobile | string | required if type = card |
card.customer.first_name | string | optional if type = card |
card.customer.last_name | string | optional if type = card |
card.customer.national_code | string | optional if type = card |
card.customer.email | string | optional if type = card |
توضیحات
-
card:
- callback_url (اجباری): آدرس بازگشتی که کاربر پس از پرداخت، به آن منتقل میشود.
- valid_card_numbers (اختیاری): شماره کارت های معتبر (در صورت ارسال شماره کارت، کاربر فقط با همان شماره کارت قابلیت پرداخت خواهد داشت.)
-
customer:
- mobile (اجباری): شماره موبایل کاربر. شماره موبایل بدون کد کشور و به فرمت 09123456789 باشد.
- first_name (اختیاری): نام کاربر که بهتر است برای پیگیریهای بعدی ارسال شود
- last_name (اختیاری): نامخانوادگی کاربر که بهتر است برای پیگیریهای بعدی ارسال شود
- national_code (اختیاری): کد ملی معتبر (در صورت ارسال کد ملی، کاربر فقط با کارتهای بانکی تحت مالکیت آن کد ملی قابلیت پرداخت خواهد داشت. برای بررسی کدملی در درگاه پرداخت ارسال شماره موبایل مرتبط با کد ملی نیز الزامی است.)
- email (اختیاری): ایمیل کاربر که بهتر است برای پیگیریهای بعدی ارسال شود.
نمونه json
{ "payment_method": "card-saman", "amount": 10000, "request_id": "67843357634567", "checkout_number": "123", "description": "test", "type": "card", "card": { "callback_url": "https://your-callback-address.com", "valid_card_number": "5859832060120699", "customer": { "mobile": "09367636320", "first_name": "Amirali", "last_name": "Habashizadeh", "national_code": "0058598310", "email": "asd@qwe.com", } } }
نمونه پاسخ دریافتی موفق:
HTTP/1.1 200
{
"message": "صورتحساب با موفقیت ثبت شد",
"data": {
"checkout": {
"id": "76e4e560-5ded-4953-80c7-d6324cc70954",
"request_id": "67843357634567",
"checkout_number": "123",
"amount": 10000,
"status": "not_paid",
"description": "test",
"created_at": 1678095120,
"updated_at": 1678095120,
"customer": {
"id": "de49afb0-b80b-11ed-8f15-65e047110052",
"mobile": "09367636320",
"first_name": "Amirali",
"last_name": "Habashizadeh",
"national_code": "0058598310",
"email": "asd@qwe.com"
},
"payments": [
{
"id": "b7d0d74c-4b25-4d42-8338-d9dce3c9e16f",
"payment_method": "card-saman",
"amount": 10000,
"wage_amount": 1000,
"affected_amount": 9000,
"ref_id": null,
"tracking_code": null,
"status": "pending_redirect",
"error": null,
"created_at": 1673773548,
"updated_at": 1673773548,
"paid_at": 1673773548,
"type": "card",
"card": null
}
]
}
}
}
۲. انتقال کاربر
اگر type پرداختی شما از نوع های credit یا card باشد، نیاز هست که کاربر خود را پس از ثبت موفقیت آمیز صورتحساب به آدرس زیر منتقل نمایید تا فرآیند پرداخت تکمیل شود.
مقدار payment_id برابر است با id برگشتی در آبجکت payments که به صورت uuid می باشد.
Method: GET Address: https://mpg.vandar.io/payments/{payment_id}/pay
https://your-callback-address.com?payment_id=17f06477-ce51-488c-9cca-e51fcbb061f6&status=pending_verifystatus می تواند دو مقدار pending_verify و failed داشته باشد. اگر مقدار برابر با failed بود، همینجا میتوانید فرایند پرداخت را متوقف کنید. اما اگر مقدار آن برابر با pending_verify بود، باید بخش آخر یعنی تایید تراکنش را انجام دهید.
۳. تایید تراکنش
اگر type پرداختی شما از نوع های credit یا card باشد، نیاز هست که تراکنش کاربر خود را تایید نمایید.
Method: PATCH Address: https://api.vandar.io/mpg/v1/business/{business}/payments/{payment_id}
پارامتر {business} همان نام انگلیسی کسب و کاری است که قصد تایید تراکنش بر روی آن را دارید.
پارامتر {payment_id} همان مقدار payment_id هست که قصد تایید آن تراکنش را دارید.
نمونه پاسخ دریافتی موفق زمانی که type برابر است با card:
HTTP/1.1 200
{
"message": " صورتحساب با موفقیت پرداخت شد",
"data": {
"payment": {
"id": "b7d0d74c-4b25-4d42-8338-d9dce3c9e16f",
"payment_method": "card-saman",
"amount": 10000,
"wage_amount": 1000,
"affected_amount": 9000,
"ref_id": null,
"tracking_code": null,
"status": "pending_redirect",
"error": null,
"created_at": 1673773548,
"updated_at": 1673773548,
"paid_at": 1673773548,
"type": "card",
"card": {
"card_number": "585983******0697",
"cid": "70A40B00C479015F96B12AE465E2E5E51F57D172655EDADB539F97119132438B"
}
}
}
}
نمونه پاسخ دریافتی موفق زمانی که type برابر است با credit:
HTTP/1.1 200
{
"message": " صورتحساب با موفقیت پرداخت شد",
"data": {
"payment": {
"id": "b7d0d74c-4b25-4d42-8338-d9dce3c9e16f",
"payment_method": "card-saman",
"amount": 10000,
"wage_amount": 1000,
"affected_amount": 9000,
"ref_id": null,
"tracking_code": null,
"status": "pending_redirect",
"error": null,
"created_at": 1673773548,
"updated_at": 1673773548,
"paid_at": 1673773548,
"type": "credit",
"credit": null
}
}
}
۴. لیست صورتحساب
Method: GET Address: https://api.vandar.io/mpg/v1/business/{business}/checkouts
پارامتر {business} همان نام انگلیسی کسب و کاری است که قصد دریافت لیست صورتحساب بر روی آن را دارید.
پارامترهای مجاز
name | Type | Status |
---|---|---|
per_page | numeric | optional |
page | numeric | optional |
توضیحات
- per_page (اختیاری): تعداد آیتم در هر صفحه
- page (اختیاری): شماره صفحه
نمونه json
{ "per_page": 2, "page": 1 }
نمونه پاسخ دریافتی موفق:
HTTP/1.1 200
{
"message": "لیست صورتحساب ها",
"data": [
{
"id": "76252e83-fa00-46a4-b157-171213f2908a",
"request_id": "123",
"checkout_number": "123",
"amount": "10000",
"status": "paid",
"description": "test",
"created_at": 1673682519,
"updated_at": 1673682519,
"customer": {
"id": "efdaf820-2075-11ed-a96b-a9167c05d45d",
"mobile": "09354614194",
"first_name": "Ali",
"last_name": "Gholami",
"national_code": "0123456789",
"email": "asd@qwe.com"
},
"payments": [
{
"id": "b7d0d74c-4b25-4d42-8338-d9dce3c9e16f",
"payment_method": "debit-ayandeh",
"amount": 10000,
"wage_amount": 1000,
"affected_amount": 9000,
"ref_id": null,
"tracking_code": null,
"status": "done",
"error": null,
"created_at": 1673773548,
"updated_at": 1673773548,
"paid_at": 1673773548,
"type": "debit",
"debit": {
"mandate_id": "068bb9f0-5ddf-11ed-b16d-61da2281b3d4"
}
}
]
},
{
"id": "206428c9-54ff-4f49-9abc-f3b7c8326d3c",
"request_id": "456",
"checkout_number": "123",
"amount": "10000",
"status": "not_paid",
"description": "test",
"created_at": 1673684560,
"updated_at": 1673684560,
"customer": {
"id": "efdaf820-2075-11ed-a96b-a9167c05d45d",
"mobile": "09354614194",
"first_name": "Ali",
"last_name": "Gholami",
"national_code": "0123456789",
"email": "asd@qwe.com"
},
"payments": [
{
"id": "b7d0d74c-4b25-4d42-8338-d9dce3c9e16f",
"payment_method": "debit-ayandeh",
"amount": 10000,
"wage_amount": 1000,
"affected_amount": 9000,
"ref_id": null,
"tracking_code": null,
"status": "done",
"error": null,
"created_at": 1673773548,
"updated_at": 1673773548,
"paid_at": 1673773548,
"type": "debit",
"debit": {
"mandate_id": "068bb9f0-5ddf-11ed-b16d-61da2281b3d4"
}
}
]
}
],
"meta": {
"current_page": 1,
"from": 1,
"last_page": 7,
"links": [
...
],
"path": "https://api.vandar.io/mpg/v1/business/{business}/checkouts",
"per_page": 12,
"to": 12,
"total": 77
}
}
- message: پیغام لیست صورتحساب ها
- data: لیستی از صورتحساب ها
۵. جزيیات صورتحساب
Method: GET Address: https://api.vandar.io/mpg/v1/business/{business}/checkouts/76252e83-fa00-46a4-b157-171213f2908a
نمونه پاسخ دریافتی موفق:
HTTP/1.1 200
{
"message": "صورتحساب",
"data": {
"checkout": {
"id": "76252e83-fa00-46a4-b157-171213f2908a",
"request_id": "123",
"checkout_number": "123",
"amount": "10000",
"status": "paid",
"description": "test",
"created_at": 1673682519,
"updated_at": 1673682519,
"customer": {
"id": "efdaf820-2075-11ed-a96b-a9167c05d45d",
"mobile": "09354614194",
"first_name": "Ali",
"last_name": "Gholami",
"national_code": "4219849671",
"email": "asd@qwe.com"
},
"payments": [
{
"id": "b7d0d74c-4b25-4d42-8338-d9dce3c9e16f",
"payment_method": "debit-ayandeh",
"amount": 10000,
"wage_amount": 1000,
"affected_amount": 9000,
"ref_id": null,
"tracking_code": null,
"status": "done",
"error": null,
"created_at": 1673773548,
"updated_at": 1673773548,
"paid_at": 1673773548,
"type": "debit",
"debit": {
"mandate": {
"id": "1408bf10-2dcd-11ed-b084-bb5348c5e321",
"payment_method": "debit-saman",
"count": 30,
"limit": 30000000,
"expires_at": 1685350749,
"customer_id": "efdaf820-2075-11ed-a96b-a9167c05d45d",
"status": "active",
"created_at": 1662452234,
"updated_at": 1662452234,
"revoked_at": null
}
}
}
]
}
}
}
- message: پیغام جزییات صورتحساب
- data: جزییات صورتحساب