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

alihesari

کاربر عضو
با سلام

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

فایل زیر مربوط به افزونه ای است که میخوام با درگاه پارسیان کار کنه متوجه نشدم کجا اشتباه کردم. درهنگام ارسال فرم پرداخت خطایی ظاهر نمیشه. ولی به درگاه پرداخت منتقل نمیشه! اگر کسی وقت داشت بی زحمت کدها رو چک کنه اگر مشکلی داشته بگه. ولی مهم تر از همه مستندات بانک پارسیان. فایل nusoap رو لازم دارم. فکر میکنم مشکل از همینجا باشه. چون از یک فایل nusoap که در سایتی دیگر بود در حال استفاده هستم که تاریخ انتشارش سال 90 است!

فایل به پیوست



 

پیوست‌ها

  • shortcodes.zip
    36.8 کیلوبایت · بازدیدها: 15
آخرین ویرایش توسط مدیر:

hannanstd.ir

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



باید تبدل بشه به :



در ثانی من نمیدونم که شما این وب سرویس رو خودت دست کاری کردی یا اینکه از بانک گرفتی بهر حال توی این کد شما نیاز به فراخونی nusoap اصلا نیست . چون با استفاده از soap نوشته شده .

وقتی از new SoapClient استفاده شده یعنی بر اساس soap هست چون هم حرف S و هم حرف C بزرگ نوشته شدند .

ولی اگر مثلا بجاش از new nusoap_client استفاده میشد باید از کتابخونه nusoap هم استفاده کنید .

بهر حال اول مطمئن بشید که مستنداتون معتبر هست .

 

alihesari

کاربر عضو
@

متاسفانه من تا حالا با پارسیان کار نکردم و مستنداتش توسط خود مشتری که دارم براش درگاه مینویسم ارائه شده و از جدید بودن و یا درستی این مستندات اطمینان ندارم! خود مشتری هم سری تو این کارا نداره :-" برای همین از چیزی خبر ندارم. ممنون تست میکنم و آدرس ها رو جایگزین میکنم انشالا که درست میشه.

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





 
آخرین ویرایش توسط مدیر:

hannanstd.ir

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

اگه مشکلی نداشت بگین که فایل بازگشتش رو هم استخراج کنم :


کد:
<?php
        $client = new nusoap_client('https://pec.shaparak.ir/pecpaymentgateway/eshopservice.asmx?wsdl','wsdl');
        $pin = '';
        $orderId=date('md').rand(1000,9999);
        $amount = 1000;
        $callBackUrl = 'http://site.com/recive.php';
        $authority = 0 ;  // default authority
        $status = 1 ;    // default status
        $payerId = '0';
        $parameters = array(
            'pin' => $pin,
            'orderId' => $orderId,
            'amount' => $amount,
            'authority' => $authority,
            'status' => $status,
            'callbackUrl' => $callBackUrl,
            );
        $sendParams = array($parameters) ;
        // Call the SOAP method
        $result = $client->call('PinPaymentRequest', $sendParams); 
    $authority = $result['authority'];
    $status = $result['status'];
        // Check for a fault
        if ($client->fault) {
            echo $_GET['au'];
        } 
        else {
            // Check for errors
            $resultStr  = $result;
            $err = $client->getError();
            if ($err) {
            //
            } 
            else {
                // Display the result
                if ($status == "0") {
                    $send_atu="<script language='JavaScript' type='text/javascript'>
                    <!--
                    document.getElementById('checkout_confirmation').submit();
                    //-->
                    </script>";
                    echo '
                            <form id="checkout_confirmation" method="get" action="https://pec.shaparak.ir/pecpaymentgateway" style="margin:0px"  >
                    <input type="hidden"  name="au" value="'.$authority.'" />
                    <input type="submit" value="در صورت عدم انتقال اینجا کلیک کنید"  />
                    </form>'.$send_atu ;                
                    echo "<a href='https://pec.shaparak.ir/pecpaymentgateway?au=" . $authority . "' > پرداخت </a>";
                } 
                else {
                echo "اتصال به بانک با مشکل مواجه شد. مشکل را با مدیر سایت در میان بگذارید";
                // log error in app
                    // Update table, log the error
                    // Show proper message to user
                }
            }// end Display the result
        }// end Check for errors
- - - Updated - - -

البته باید nusoap رو اینکلود کنید .

البته بعدا برای ارسال به بانک مثل کد خودتون از دستور ریدایرکت استفاده کنید . ولی برای تست صحت اینجوری مراحل رو میشه با چشم دید که بهتره .

 
آخرین ویرایش توسط مدیر:

alihesari

کاربر عضو
ممنون آره انتقال انجام شد. ولی من با همین روشی که شما ارائه دادی کد زدم و وقت از

new SoapClient استفاده کردم ولی اتصال بر قرار نشد!


 
آخرین ویرایش توسط مدیر:

hannanstd.ir

مدیر انجمن و توسعه دهنده ووکامرس پارسی
این رو هم برای بازگشت استفاده کنید . نیاز به فراخونی nusoap داره :


کد:
<?php


        if( $_GET['rs']==0){

        $pin = '';

        $client = new nusoap_client('https://pec.shaparak.ir/pecpaymentgateway/eshopservice.asmx?wsdl','wsdl');



        $err = $client->getError();
        if ($err)
        {
        //  echo  $err . "<br />" ;
        }
        else
        {
            $authority = $_GET['au'];
            $status=1;
            $parameters = array(
                'pin' => $pin,
                'authority' => $authority,
                'status' => $status,
                );
             $sendParams = array($parameters) ;
            // Call the SOAP method
            $result = $client->call('PinPaymentEnquiry', $sendParams);
                if($result['status'] == 0)
                {


                        echo "تراکنش با موفقیت انجام شد.";

                    // Display the result
                    // Update Table, Save Verify Status 
                    // Note: Successful Verify means complete successful sale was done.
                    // Check for an error
                    $err = $client->getError();
                    if ($err)
                        {
                        //error
                        }            
                    }
                else {
                    echo "متاسفانه در پرداخت مشکلی رخ داده است.";
                }
                }

    }
وقتی از new SoapClient استفاده میکنید یعنی دارید از soap استفاده می کنید . آرگومان های soap و nusoap یکم فرق دارند . یکیشون اطلاعات نظیر پین و ... رو مستقیم ارسال میکنی ولی اون یکی همه رو میریزه توی یک آرایه و به صورت آرایه ارسال میکنه .

- - - Updated - - -

احتمالا شما new soapclient رو با new SoapClient اشتباه گرفتید .

اونی که حروف S و C بزرگ داره soap هست و نیاز به کتابخونه اضافه نداره و اکثر هاستهای php 5 پشتیبانی میکنند

ولی اونی که حروف S و C کوچک داره nusoap هست و باید کتابخونه اش فراخونی بشه .

 
آخرین ویرایش توسط مدیر:

alihesari

کاربر عضو
[MENTION=21623]hannanstd[/MENTION]

url برگشتی از درگاه بانک شامل کوئری استرینگ زیر است:


کد:
?rs=1&au=230654301
اما در شرط بالا ابتدا چک میشه که:


کد:
if( $_GET['rs']==0)
و همین کلا باعث میشه کدهای داخل شرط اجرا نشه!

من این شرط رو به:


کد:
isset($_GET['rs'])
تغییر دادم. مشکلی نداره؟

 

hannanstd.ir

مدیر انجمن و توسعه دهنده ووکامرس پارسی
طبق مستنداتی که از بانک قرار دادید .


کد:
$_GET['rs']
نشونگر status یا همون وضعیت هست که بهر حال یک مقداری رو بر میگردونه . که اگر مساوی با 0 باشه یعنی ممکنه پرداخت موفق باشه که باید از طریق وب سرویس دوباره چک بشه . احتمالا وقتی مقدار 1 بر میگردونه یعنی کاربر انصراف داده .

نه نباید از دستور


کد:
isset($_GET['rs'])
استفاده کنید . چون به هر حال status یک مقداری رو بر میگردونه . شما برای


کد:
if( $_GET['rs']==0)
یک else بذار که داخل بنویس که کاربر انصراف داده است .

 

alihesari

کاربر عضو
بله بازگشت مقدار یک به دلیل عدم پرداخت بود و اینکه مبلغ پرداخت زیر 100 تومان بود. ممنون برادر

 
بالا