Kamil Szmit Posted January 10, 2017 Share Posted January 10, 2017 Robię moduł płatności PrestaShop, gdzie na stronie płatności umieszczany jest skrypt JavaScript wysyłający poprzez AJAX żądanie płatności do skryptu PHP wewnątrz modułu, gdzie znajduje się przenoszenie koszyka do zamówień po poprawnej płatności. Przenoszenie zamówienia do koszyka wygląda w następujący sposób: if ($cart->OrderExists() == false) { $module->validateOrder($cart->id, $actual_state, $total, 'billon', NULL, array(), (int)$cart->id_currency, false, $customer->secure_key); } else { $history = new OrderHistory(); $history->id_order = Order::getOrderByCartId((int)Tools::getValue('control')); $lastOrderState = OrderHistory::getLastOrderState($history->id_order); $history->changeIdOrderState($actual_state, $history->id_order); $history->addWithemail(true); } Jak najlepiej zablokować koszyk przed wykonaniem płatności i najlepiej odblokować go, jeśli płatność się nie udała? Czy próbować sklonować obiekt koszyka, wywołać metodę "delete" koszyka, a przy nieudanej płatności wykonać metodę "save" sklonowanego obiektu: $cart = new Cart((int) 0); $tempCart = $cart; $myShop->paymentStatus($taskId ? $taskId : $_GET['taskId'], function($response) use (&$cart, &$tempCart) { $responseString = json_encode($response); if (is_string($response['status'])) { $status = explode('_', $response['status']); if (count($status) > 1 && $status[0] == 'FINISHED') { if ($status[1] != 'OK') { if (isset($tempCart)) { $tempCart->save(); } } } else { if (isset($cart)) { $tempCart = clone $cart; $cart->delete(); } } } echo $responseString; Czy lepiej utworzyć zamówienie z koszyka z innym statusem? Jak wtedy przywrócić koszyk? Czy jedyna możliwość to stworzenie własnej klasy i tabeli ObjectModel przechowującej identyfikator użytkownika i zamówienia? Czy jest jeszcze inny sposób? Proszę o pomoc. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now