تصویر محمدعلی اکبری

طبق مستندات درگاه پرداخت امن پاسارگاد برای شروع تراکنش لازم است اطلاعاتی شامل content (فاکتور) و sign (امضا) به درگاه بانک با آدرس زیر با متد POST ارسال شود.

https://paypaad.bankpasargad.com/PaymentController

برای ایجاد این دو مقدار ابتدا دو کلاس Paypaad و PaypaadCart را تعریف می‌کنیم. این دو کلاس در فایل پیوست همین مطلب موجود است.

قبل از استفاده از این دو کلاس ابتدا تمامی اطلاعات لازم را به صورت آرایه زیر در برنامه خود تولید کنید.

$cart_data = array(
    'merchant_code' => [Merchant-code],
    'terminal_code' => [Terminal-code],
    'redirect_address' => "[Callback-url]",
    'referrer_address' => "[Referrer-url]",
    'buyer_name' => "[User-name]",
    'buyer_tel' => '[User-tel]',
    'total_amount' => [Total-cost],
    'delivery_days' => [Delivary-days],
    'delivery_address' => "[User-address]",
    'invoice_date' => date("Y/m/d"); // To be work
    'invoice_number' => [Unique-ID]; // You should create an unique number for each transaction
    'time_stamp' => date('Y/m/d H:i:s'),
    'cart' => array(
        array(
            'content' => "[Product-name]",
            'fee' => [Product-cost],
            'count' => [Product-count],
            'description' => "[Product-description]"
        )
    )
);

توجه داشته باشید همه مقادیر بالا با توجه به اطلاعات کاربر و اقلام خریداری شده باید جایگزین شوند، تنها لازم است مقدار invoice_number را تولید کنید، این مقدار باید برای هر تراکنش عددی یکتا باشد. برای تولید آن میتوانید قبل از ایجاد آرایه فوق یک تراکنش ایجاد کرده و شناسه آن را به عنوان عدد یکتای تراکنش در نظر بگیرید.

سپس با استفاده از کلاس های معرفی شده مقادیر content و sign را ایحاد می‌کنیم.

$cart = new PaypaadCart($cart_data);
$paypaad = new Paypaad ();
// Generate XML
$xml = $paypaad->createXML($cart);

// Get sing
$sign = $paypaad->sign($xml, $this->get_config('private_key'));

در این مرحله برای ارسال این مقادیر به بانک کافی است فرمی شامل فیلدهای hidden حاوی این مقادیر تعریف کنیم.

<form action="https://paypaad.bankpasargad.com/PaymentController" method="post">
<input type="hidden" name="content" value="<?php print $xml; ?>" />
<input type="hidden" name="sign" value="<?php print $sign; ?>" />
<input type="submit" value="Go to bank gateway" />
</form>

بعد از پرداخت باید اطلاعات برگشتی از بانک مورد بررسی قرار گیرند، برای اینکار نیز از کلاس Paypaad به صورت زیر استفاده می‌کنیم.

$paypaad = new Paypaad();
$response = $paypaad->getResponse($tref);

if ($response->result == 'true') {
  print 'OK';
} else {
  print 'Error';
}

مشکلات احتمالی توسعه

1- هنگام تایید پرداخت پاسخی از سرور بانک دریافت نمی‌شود.

پاسخ 1: بررسی کنید آدرس های درگاه درست باشند.

پاسخ 2: سرورهای paypaad در ایران قرار دارند، اگر سرور شما بیرون از ایران است احتمالا دسترسی به سرور های ایران را ندارد.

پاسخ 3: با استفاده از توابع cUrl سعی کنید بررسی کنید آیا سرور بانک را از طریق سرور خود مشاهده می‌کنید یا خیر.

2- مقدار invoiceCode که در مستندات وجود دارد در هنگام دریافت تایید مقدار NULL دارد.

پاسخ: مستندات غلط دارند و کلید صحیح این متغیر invoice_code است.

افزودن نظر جدید