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

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

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

کاربر بعد از پرداخت , به همراه کد تراکنش [ transid ] به مسیر وارد شده در قسمت callback هدایت می گردد. اکنون نیاز است تا درخواست بررسی تراکنش برای آقای پرداخت ارسال شود .

نکته

در صورت موفق آمیز بودن تراکنش در پاسخ دریافتی متغیری به نام cardnumber و tracking_number هم دریافت می‌كنید که شماره کارت پرداخت کننده و شماره تراکنش را در برمیگیرد.

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

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

آدرس وب سرویس

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

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

بعد از ارسال مقادیر بالا با متد POST خروجی 1 به معنای “تراکنش پرداخت شده است ” و یا خروجی 0 به معنای “تراکنش پرداخت نشده است” دریافت می گردد.

درصورتی که خروجی 2 دریافت کردید یعنی تراکنش یکبار وریفای شده است.

نکته

درصورتی که مرحله وریفای تراکنش طی مدت زمان 15 دقیقه انجام نشود سند عودت وجه به حساب مبدا "کارت پرداخت کننده" صادر میشود و مبلغ پرداخت شده به حساب پرداخت کننده برمیگردد.

# کد های خطا

کد توضیحات
1- amount نمی تواند خالی باشد
2- کد پین درگاه نمی تواند خالی باشد
3- callback نمی تواند خالی باشد
4- amount باید عددی باشد
5- amount باید بزرگتر از ۱۰۰ باشد
6- کد پین درگاه اشتباه هست
7- ایپی سرور با ایپی درگاه مطابقت ندارد
8- transid نمی تواند خالی باشد
9- تراکنش مورد نظر وجود ندارد
10- کد پین درگاه با درگاه تراکنش مطابقت ندارد
11- مبلغ با مبلغ تراکنش مطابقت ندارد
12- بانک وارد شده اشتباه میباشد
13- درگاه غیر فعال است
14- درگاه برروی سایت دیگری درحال استفاده است

نمونه کد PHP

<?php

if (!isset($_POST['transid'])) {
    return;
}
$data = [
    'pin' => 'YourGatewayPinCode',
    'amount' => 20000,
    'transid' => $_POST['transid']
];
$data = json_encode($data);
$ch = curl_init('https://panel.aqayepardakht.ir/api/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);
if ($result === "1") {
 // پرداخت با موفقیت انجام شده است
} elseif ($result === "0") {
 //    پرداخت انجام نشده است
}

نمونه کد Laravel

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class PayController extends Controller
{
    public function callback(Request $request)
    {
        if (!$request->has('transid')) {
            return abort(404);
        }
        $data = [
            'pin' => 'YourGatewayPinCode',
            'amount' => 20000,
            'transid' => $request->get('transid')
        ];
        $client = new \GuzzleHttp\Client();
 $response = $client->post("https://panel.aqayepardakht.ir/api/verify", [
            'http_errors' => false,
            'headers' => [
                'content-type' => 'application/json',
            ],
            'body' => json_encode($data)
        ]);
     $status = $response->getBody()->getContents();
        if ($response->getStatusCode() == 200 && $status === "1") {
            // پرداخت با موفقیت انجام شده است
        } else {
            //خطا
        }
    }
}

نمونه کد Python

import requests
data = {
    'pin' : 'YourGatewayPinCode',
    'amount' : 20000,
    'transid' : 'YourTransactionId'
}
response = requests.post('https://panel.aqayepardakht.ir/api/verify', data = data)
if response.status_code == 200 response.text==='1':
   print('پرداخت انجام شد است')
else if response.status_code == 200 response.text==='0':
   print('پرداخت انجام نشده است')