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();
}
}