/** * Creates order for cart and payment response. * * @param Cart $prestashop_cart Prestashop cart object. * @param CallbackResponse $paynet_response PaynetEasy payment response. * @param int $order_status_id Order status id. * @param float $payment_amount Payment amount. * @param string $order_comment Comment for order. */ protected function createOrder(Cart $prestashop_cart, CallbackResponse $paynet_response, $order_status_id, $payment_amount, $order_comment = null) { $db = Db::getInstance(); $paynet_payment_id = $db->escape($paynet_response->getPaymentPaynetId()); $prestashop_cart_id = $db->escape($prestashop_cart->id); $this->module->validateOrder($prestashop_cart_id, $order_status_id, $payment_amount, $this->module->name, $order_comment, array('transaction_id' => $paynet_payment_id)); $db->update('paynet_payments', array('id_prestashop_order' => $this->module->currentOrder), "`id_paynet_payment` = {$paynet_payment_id} AND `id_prestashop_cart` = {$prestashop_cart_id}"); }
/** * Validate callback response control code * * @param PaymentTransaction $paymentTransaction Payment transaction for control code checking * @param CallbackResponse $callbackResponse Callback for control code checking * * @throws ValidationException Invalid control code */ protected function validateSignature(PaymentTransaction $paymentTransaction, CallbackResponse $callbackResponse) { // This is SHA-1 checksum of the concatenation // status + orderid + client_orderid + merchant-control. $expectedControlCode = sha1($callbackResponse->getStatus() . $callbackResponse->getPaymentPaynetId() . $callbackResponse->getPaymentClientId() . $paymentTransaction->getQueryConfig()->getSigningKey()); if ($expectedControlCode !== $callbackResponse->getControlCode()) { throw new ValidationException("Actual control code '{$callbackResponse->getControlCode()}' does " . "not equal expected '{$expectedControlCode}'"); } }
/** * Creates control code and set in to callback * * @param CallbackResponse $callbackResponse Callback object */ protected function signCallback(CallbackResponse $callbackResponse) { $callbackResponse['control'] = sha1($callbackResponse->getStatus() . $callbackResponse->getPaymentPaynetId() . $callbackResponse->getPaymentClientId() . self::SIGNING_KEY); }