/** * @param int $order_id * @return array */ function process_payment($order_id) { $order = new jigoshop_order($order_id); $this->init_paymentwall_configs(); $return = array('result' => 'fail', 'redirect' => ''); $charge = new Paymentwall_Charge(); try { $charge->create(array_merge($this->prepare_user_profile_data($order), $this->prepare_card_info($order))); $response = $charge->getPublicData(); if ($charge->isSuccessful()) { if ($charge->isCaptured()) { // Add order note $order->add_order_note(sprintf(__('Brick payment approved (ID: %s, Card: xxxx-%s)', PW_JIGO_TEXT_DOMAIN), $charge->getId(), $charge->getCard()->getAlias())); // Payment complete $order->payment_complete(); $return['result'] = 'success'; $checkout_redirect = apply_filters('jigoshop_get_checkout_redirect_page_id', jigoshop_get_page_id('thanks')); $return['redirect'] = add_query_arg('key', $order->order_key, add_query_arg('order', $order_id, get_permalink($checkout_redirect))); } elseif ($charge->isUnderReview()) { $order->update_status('on-hold'); } // Clear shopping cart jigoshop_cart::empty_cart(); } else { $errors = json_decode($response, true); jigoshop::add_error(__($errors['error']['message']), 'error'); } } catch (Exception $e) { jigoshop::add_error($e->getMessage(), 'error'); } // Return redirect return $return; }