namespace integration;
use integration\ucscards\structure\Amount;
use integration\ucscards\structure\CustomerInfo;
use integration\ucscards\structure\OrderID;
use integration\ucscards\structure\OrderInfo;
use integration\ucscards\structure\OrderItem;
use integration\ucscards\structure\PostEntry;
use integration\ucscards\structure\Register;
class UCSCards {
private static $classmap = array(
"PaymentArray" => "PaymentArray",
"get_finished" => "get_finished",
"OrderItem" => "OrderItem",
"stringArray" => "stringArray",
"cancelResponse" => "cancelResponse",
"AttemptArray" => "AttemptArray",
"rejectResponse" => "rejectResponse",
"Attempt" => "Attempt",
"get_status" => "get_status",
"OnlineResult" => "OnlineResult",
"cancel" => "cancel",
"confirmResponse" => "confirmResponse",
"OrderStatus" => "OrderStatus",
"Amount" => "Amount",
"Document" => "Document",
"confirm" => "confirm",
"PostEntryArray" => "PostEntryArray",
"Error" => "Error",
"OrderItemArray" => "OrderItemArray",
"Payment" => "PaymentClass",
"register_deposit" => "register_deposit",
"OrderInfo" => "OrderInfo",
"get_finishedResponse" => "get_finishedResponse",
"CardInfo" => "CardInfo",
"reject" => "reject",
"OrderStatusArray" => "OrderStatusArray",
"CardInfoArray" => "CardInfoArray",
"refund" => "refund",
"OrderID" => "OrderID",
"CustomerInfo" => "CustomerInfo",
"PostEntry" => "PostEntry",
"register" => "register",
"get_statusResponse" => "get_statusResponse",
"register_onlineResponse" => "register_onlineResponse",
"refundResponse" => "refundResponse",
"Taxes" => "Taxes",
"tax" => "tax",
);
// подготавливаем новое soap-соединение
public static function newSoap($settings):\SoapClient {
try {
return new \SoapClient(
null,
array(
'location' => $settings['shop_url'],
'uri' => 'http://www.sirena-travel.ru',
'login' => $settings['shop_login'],
'password' => $settings['shop_pass'],
'trace' => 0,
'features' => SOAP_SINGLE_ELEMENT_ARRAYS,
'connection_timeout' => 12
)
);
} catch (\SoapFault $e) {
}
}
// подготавливаем данные заказа для отправки
public static function prepareOrder($settings) {
$request = new Register();
$order = new OrderID();
$order->shop_id = $settings['shop_id'];
$order->number = $settings['order_id'];
$cost = new Amount();
$cost->amount = $settings['order_sum'];
$cost->currency = 'RUB';
$customer = new CustomerInfo();
if ($settings['user_id'] != 0) {
$customer->id = $settings['user_id'];
}
$customer->name = $settings['user_name'];
if (!empty($settings['user_email']) && $settings['user_email']) {
$customer->email = $settings['user_email'];
}
if (!empty($settings['user_phone']) && $settings['user_phone']) {
$customer->phone = $settings['user_phone'];
}
$description = new OrderInfo();
$description->paytype = 'card';
$arBasketItems = $settings['basket_items'];
$arItems = array();
$sumWithoutBonus = 0;
foreach ($arBasketItems as $item) {
$sumWithoutBonus += round($item['PRICE'], 2) * $item['QUANTITY'];
}
$bonus = $sumWithoutBonus - $cost->amount;
for ($i = 0; $i < count($arBasketItems); $i++){
$itemCost = new Amount();
$itemCost->amount = round($arBasketItems[$i]['PRICE'], 2) * $arBasketItems[$i]['QUANTITY'];
$itemCost->currency = 'RUB';
if ($bonus > 0) {
var_dump('amount');
var_dump($itemCost->amount);
if ($bonus - $itemCost->amount > 0) {
$bonus -= $itemCost->amount;
$itemCost->amount = 0;
} else {
$itemCost->amount -= $bonus;
$bonus = 0;
}
}
// $itemTaxes = array(
// new SoapVar("
';
echo var_dump($a,$soap);
echo '';
/**/
return $request;
}
}