#ایجاد تراکنش

جهت استفاده تستی از وب سرویس میتوانید از پین sandbox استفاده نمایید.

# مرحله اول : ارسال پارامتر

وب سرویس بر پایه ی POST می باشد.

آدرس وب سرویس

method: Post
URL: https://panel.aqayepardakht.ir/api/v2/create

از این وب سرویس برای ایجاد کد تراکنش استفاده می شود.

پارامتر های ورودی

نام پارامتر اجباری / اختیاری توضیحات
pin اجباری کد پین درگاه
amount اجباری مبلغ تراکنش [ تومان ] بین 1,000 تا 200,000,000 تومان
callback اجباری آدرس برگشت [ نتیجه پرداخت به این آدرس ارسال می شود ]
callback_method اختیاری متد بازگشت پرداخت کننده به سایت پذیرنده به صورت پیش فرض POST میباشد [ صرفا مقدار POST یا GET ]
( توصیه میشود از مقدار GET استفاده کنید )
card_number اختیاری شماره کارت مجاز به پرداخت
invoice_id اختیاری شماره فاکتور
mobile اختیاری ذخیره شماره کارت در درگاه برای پرداخت های بعدی
email اختیاری ایمیل پرداخت کننده
description اختیاری توضیحات

* آدرس callback باید با آدرس درگاه پرداخت تایید شده در آقای پرداخت بر روی یک دامنه باشد.

بعد از ارسال مقادیر بالا با متد POST خروجی به صورت زیر خواهد بود.

پاسخ دریافتی در صورت صحت اطلاعات ارسالی

HTTP/1.1 200 OK
{
  "status" : "success",
  "transid" : "TransId"
}

پاسخ دریافتی در صورت بروز خطا

HTTP/1.1 422 Error
{
  "status" : "error",
  "code" : "error code"
}

# مرحله دوم : انتقال کاربر به صفحه پرداخت

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

نکته: در این مرحله آدرس Referer باید با دامنه‌ای که ترمینال شاپرکی برای آن صادر شده است، همخوانی داشته باشد در غیر این صورت کاربر با صفحه خطا مواجه می شود.

method: Get
URL: https://panel.aqayepardakht.ir/startpay/{transid}

* درصورت استفاده از sandbox برای انتقال به صفحه پرداخت باید از آدرس زیر استفاده کنید.

method: Get
URL: https://panel.aqayepardakht.ir/startpay/sandbox/{transid}

# مرحله سوم : بازگشت به سایت پذیرنده

درهنگام خروج کاربر از بانک و منتقل شدن به آدرس callback پارامتر های زیر به آدرس callback POST میشود.

* اگر در هنگام فراخوانی وبسرویس create ،پارامتر callback_method با مقدار GET ارسال شود، بازگشت به سایت پذیرنده با متد GET انجام میشود.

نام پارامتر توضیحات
transid کد تراکنش
cardnumber شماره کارت پرداخت کننده که درصورت موفق بودن تراکنش دریافت میکنید.
tracking_number شماره تراکنش
invoice_id شماره فاکتور ارسال شده در هنگام درخواست ایجاد تراکنش (در صورت ارسال)
bank نام بانک پرداخت
status وضعیت تراکنش که در صورت موفق بودن تراکنش 1، در غیر این‌صورت 0 می‌باشد.

نکته

جهت جلوگیری از درخواست اضافه برای وریفای تراکنش، میتوانید از پارامتر status استفاده کنید که درصورت ناموفق بودن تراکنش دیگر درخواست وریفای تراکنش را ارسال نکنید.

# مرحله چهارم : وریفای تراکنش

آدرس وب سرویس

method: Post
URL: https://panel.aqayepardakht.ir/api/v2/verify

پارامتر های ورودی

نام پارامتر اجباری / اختیاری توضیحات
pin اجباری کد پین درگاه
amount اجباری مبلغ تراکنش [ تومان ] بین 1,000 تا 200,000,000 تومان
transid اجباری کد تراکنش دریافت شده [ transid ]

بعد از ارسال مقادیر بالا با متد POST خروجی به صورت زیر خواهد بود.

پاسخ دریافتی در صورت صحت اطلاعات ارسالی

HTTP/1.1 200 OK
{
"status" : "success",
"code" : "1"
}

پاسخ دریافتی در صورت بروز خطا

HTTP/1.1 422 Error
{
"status" : "error",
"code" : "error code"
}

# کد های خطا

وضعیت کد توضیحات
error 0 پرداخت انجام نشد
success 1 پرداخت با موفقیت انجام شد
error 2 تراکنش قبلا وریفای و پرداخت شده است
  {
    '-1':'amount نمی تواند خالی باشد',
    '-2':'کد پین درگاه نمی تواند خالی باشد',
    '-3':'callback نمی تواند خالی باشد',
    '-4':'amount باید عددی باشد',
    '-5':'amount باید بین 1,000 تا 200,000,000 تومان باشد',
    '-6':'کد پین درگاه اشتباه هست',
    '-7':'transid نمی تواند خالی باشد',
    '-8':'تراکنش مورد نظر وجود ندارد',
    '-9':'کد پین درگاه با درگاه تراکنش مطابقت ندارد',
    '-10':'مبلغ با مبلغ تراکنش مطابقت ندارد',
    '-11':'درگاه درانتظار تایید و یا غیر فعال است',
    '-12':'امکان ارسال درخواست برای این پذیرنده وجود ندارد',
    '-13':'شماره کارت باید 16 رقم چسبیده بهم باشد',
    '-14':'درگاه برروی سایت دیگری درحال استفاده است',
    '-15':'آدرس کال بک ارسال شده با دامنه تایید شده درگاه پرداخت مغایرت دارد'
    '-16':'ارجاع دهنده نامعتبر است (Referrer ارسال نشده است)'
    '-17':'مقدار ارسال شده برای پارامتر callback_method باید POST یا GET  باشد'
}
کد توضیحات
1- amount نمی تواند خالی باشد
2- کد پین درگاه نمی تواند خالی باشد
3- callback نمی تواند خالی باشد
4- amount باید عددی باشد
5- amount باید بین 1,000 تا 200,000,000 تومان باشد
6- کد پین درگاه اشتباه هست
7- transid نمی تواند خالی باشد
8- تراکنش مورد نظر وجود ندارد
9- کد پین درگاه با درگاه تراکنش مطابقت ندارد
10- مبلغ با مبلغ تراکنش مطابقت ندارد
11- درگاه درانتظار تایید و یا غیر فعال است
12- امکان ارسال درخواست برای این پذیرنده وجود ندارد
13- شماره کارت باید 16 رقم چسبیده بهم باشد
14- درگاه برروی سایت دیگری درحال استفاده است
15- آدرس کال بک ارسال شده با دامنه تایید شده درگاه پرداخت مغایرت دارد
16- ارجاع دهنده نامعتبر است (Referrer ارسال نشده است)
17- مقدار ارسال شده برای پارامتر callback_method باید POST یا GET باشد

نمونه کد PHP

<?php

// Send Parameter

$data = [
'pin'    => 'Gateway Pin',
'amount'    => 20000,
'callback' => 'https://mysite.com/verify.php',
'callback_method ' => 'GET',
'card_number' => '1111222233334444',
'mobile' => '09123456789',
'email' => 'test@test.com',
'invoice_id' => '123456',
'description' => 'Description'
];

$data = json_encode($data);
$ch = curl_init('https://panel.aqayepardakht.ir/api/v2/create');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data))
);
$result = curl_exec($ch);
curl_close($ch);
$result = json_decode($result);
if ($result->status == "success") {
    header('Location: https://panel.aqayepardakht.ir/startpay/' . $result->transid);
} else {
    echo "خطا";
}


// verify Transaction

$data = [
'pin'    => 'Gateway Pin',
'amount'    => 20000,
'transid' => $_GET['transid']
];

$data = json_encode($data);
$ch = curl_init('https://panel.aqayepardakht.ir/api/v2/verify');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data))
);
$result = curl_exec($ch);
curl_close($ch);
$result = json_decode($result);
if ($result->code == "1") {
// تراکنش موفق
} else {
// تراکنش ناموفق
}