|
<?php |
|
|
|
class YK{ |
|
/* ... */ |
|
/** |
|
* проверка заказа |
|
* @param array $params параметры от яндекса |
|
*/ |
|
public function check($params){ |
|
$code = 0; |
|
$message = ''; |
|
|
|
if(!isset($params['orderNumber']) or !$params['orderNumber']){ |
|
$code = 100; |
|
$message = 'no number'; |
|
} else { |
|
$order = $this->entityManager->find($params['orderNumber']); |
|
|
|
if(!$order){ |
|
$message = 'no such order'; |
|
$code = 100; |
|
} |
|
} |
|
|
|
if($order and $order->getProviderPrice() != $params['orderSumAmount']){ |
|
$message = 'Wrong sum. Price should be the same as was placed via placeOrder()'; |
|
$order->setStatus('error'); |
|
$order->setPaydDetails($params); |
|
|
|
$this->entityManager->persist($order); |
|
$this->entityManager->flush(); |
|
|
|
$code = 100; |
|
} |
|
|
|
if(!$code) { |
|
$hash = md5($params['action'] . ';' . $params['orderSumAmount'] . ';' . $params['orderSumCurrencyPaycash'] . ';' . $params['orderSumBankPaycash'] . ';' . $this->configs['shopId'] . ';' . $params['invoiceId'] . ';' . $params['customerNumber'] . ';' . $this->configs['ShopPassword']); |
|
if (strtolower($hash) != strtolower($params['md5'])) { |
|
$code = 1; |
|
} |
|
// $code = 0; // REMOVE IT |
|
} |
|
$ret = '<?xml version="1.0" encoding="UTF-8"?>'; |
|
$ret.= '<checkOrderResponse performedDatetime="' . $params['requestDatetime'] . '" message="'.$message.'" code="' . $code . '"' . ' invoiceId="' . $params['invoiceId'] . '" shopId="' . $this->configs['shopId'] . '"/>'; |
|
|
|
echo $ret; |
|
} |
|
|
|
/** |
|
* проведение платежа успешно, отмечаем отмеченность |
|
* @param array $params |
|
*/ |
|
public function aviso($params) { |
|
$code = 0; |
|
$message = ''; |
|
|
|
if(!isset($params['orderNumber']) or !$params['orderNumber']){ |
|
$code = 200; |
|
$message = 'no number'; |
|
} else { |
|
$order = $this->entityManager->find($params['orderNumber']); |
|
|
|
if(!$order){ |
|
$message = 'no such order'; |
|
$code = 200; |
|
} |
|
} |
|
|
|
if(!$code){ |
|
$hash = md5($params['action'] . ';' . $params['orderSumAmount'] . ';' . $params['orderSumCurrencyPaycash'] . ';' . $params['orderSumBankPaycash'] . ';' . $this->configs['shopId'] . ';' . $params['invoiceId'] . ';' . $params['customerNumber'] . ';' . $this->configs['ShopPassword']); |
|
if (strtolower($hash) != strtolower($params['md5'])) { |
|
$code = 1; |
|
} else { |
|
$code = 0; |
|
} |
|
|
|
# отмечаем оплаченность и сохраняем детали |
|
$order->setIspayd(true); |
|
$order->setStatus('work'); // new не бывает у ispayd=true |
|
$order->setPaydDetails($params); |
|
|
|
$this->entityManager->persist($order); |
|
$this->entityManager->flush(); |
|
} |
|
$ret = '<?xml version="1.0" encoding="UTF-8"?>'; |
|
$ret.= '<paymentAvisoResponse performedDatetime="' . $params['requestDatetime'] . '" code="' . $code . '" invoiceId="' . $params['invoiceId'] . '" shopId="' . $this->configs['shopId'] . '"/>'; |
|
|
|
echo $ret; |
|
} |
|
} |