پرداخت وجوه دولتی با امکان تسهیم چند حسابی

1

راهنمای سرویس خرید با امکان تسهیم آنلاین

دانلود داکیومنت ها
نمیتواند خالی باشد
نمیتواند خالی باشد
نمیتواند خالی باشد
نمیتواند خالی باشد
غیر ضروری
مشخصات حساب ها
مبلغ (ریال)
شماره شبا
شناسه پرداخت

index.php

        //بارگذاری کلاس مربوط به انجام عملیات های پرداخت
        require_once '../PecRequestClass.php';

$pecRequest = new PecRequestClass();
$res = false;
$success = false;
if(isset($_POST['callback'])){
    $callback = $_POST['callback'];
}else{
    $callback = 'http://localhost/sale-tashim/callback.php';
}
if ($_POST) {
    if ($_POST['pin'] == '' || $_POST['orderId'] == '' || $_POST['amount'] == '' || $_POST['callback'] == '' ||  $_POST['Account'] == '') {
        $pecRequest->errorMsg = 'لطفا اطلاعات درخواست شده را تکمیل نمایید.';
        $res = $pecRequest->alertMsg();
    }else{
        // دریافت و اعتبار سنجی اطلاعات مربوط به تسهیم
        $account = [];
        $postAcccount = $_POST['Account'];
        $count = 0;
        $validate = true;
        foreach ($postAcccount as $key => $value) {
                if ($value == '') {
                    $validate = false;
                }
            $account[$count] = $value;
            $count++;
        }
        if (!$validate) {
            $pecRequest->errorMsg = 'اطلاعات مربوط به مشخصات حساب ها را تکمیل نمایید';
            $res = $pecRequest->alertMsg();
        }else{
            // دریافت اطلاعات از فرم
            $pecRequest->pin = $_POST['pin'];
            $pecRequest->callbackUrl = $_POST['callback'];
            $orderId = $_POST['orderId'];
            $amount = $_POST['amount'];
            $orginator = $_POST['orginator'];
            
            // ارسال درخواست
            $res = $pecRequest->onlineMultiplexedSalePaymentService($orderId,$amount,$account,$orginator); 
            if ($res == false) {
                    $res = $pecRequest->alertMsg();
            }
            else{
                $success = true;
            }
        }
        
    }
    
}
                        

PecRequestClass.php

    // سرویس خرید با امکان تسهیم آنلاین

public function onlineMultiplexedSalePaymentService($orderId, $amount, $accounts, $orginator) {
    $this->url = "https://pec.shaparak.ir/NewIPGServices/MultiplexedSale/OnlineMultiplexedSalePaymentService.asmx?wsdl";
    $additionalData = "";
    $this->orderId = $orderId;

    $params = array(
        "LoginAccount" => $this->pin,
        "Amount" => $amount,
        "OrderId" => $orderId,
        "CallBackUrl" => $this->callbackUrl,
        "AdditionalData" => $additionalData,
        "Originator" => $orginator,
    );
    $params["MultiplexedAccounts"] = $accounts;

    // ذخیره اطلاعات در فایل قبل از ارسال به سرور
    $dataToSave = "";
    foreach ($params as $key => $value) {
        $dataToSave .= "$key: $value\n";
    }
    $dataToSave .= "-----------------------------\n"; // خط جداکننده بین درخواست‌ها

    // مسیر فایل برای ذخیره‌سازی داده‌ها
    $filePath = 'data_log.txt';

    // ذخیره داده‌ها در فایل
    if (is_writable($filePath)) {
        file_put_contents($filePath, $dataToSave, FILE_APPEND);
    } else {
        echo "File is not writable!";
    }

    // ارسال درخواست به سرور بعد از ذخیره‌سازی
    $requestData['requestData'] = $params;
    $client = new SoapClient($this->url);

    try {
        $result = $client->MultiplexedSaleWithIBANPaymentRequest($requestData);

        if ($result->MultiplexedSaleWithIBANPaymentRequestResult->Token &&
            $result->MultiplexedSaleWithIBANPaymentRequestResult->Status === 0) {
            header("Location: https://pec.shaparak.ir/NewIPG/?Token=" . $result->MultiplexedSaleWithIBANPaymentRequestResult->Token);
            exit();
        } elseif ($result->MultiplexedSaleWithIBANPaymentRequestResult->Status != 0) {
            $err_msg = "(کد خطا : " . $result->MultiplexedSaleWithIBANPaymentRequestResult->Status . ") " .
                       ($result->MultiplexedSaleWithIBANPaymentRequestResult->Message ?? "پیغام خطا در دسترس نیست.");
            $this->errorMsg = $err_msg;
            return false;
        }
    } catch (Exception $ex) {
        $this->errorMsg = "خطا: " . $ex->getMessage();
    }
}