nonce = isset($_GET['nonce']) ? sanitize_text_field(wp_unslash($_GET['nonce'])) : '';
// if (!wp_verify_nonce($this->nonce, 'acadlix_payment_nonce')) {
// $this->status = 'failed';
// return;
// }
$this->link_type = wp_is_mobile() ?
acadlix()->helper()->acadlix_get_option("acadlix_course_link_type_mobile") :
acadlix()->helper()->acadlix_get_option("acadlix_course_link_type_desktop");
$this->status = Order::STATUS_PENDING;
$this->courses_url = get_post_type_archive_link(ACADLIX_COURSE_CPT);
$this->dashboard_url = get_permalink(acadlix()->helper()->acadlix_get_option('acadlix_dashboard_page_id'));
$this->token = isset($_GET['token']) ? sanitize_text_field(wp_unslash($_GET['token'])) : '';
$this->is_payment_offline = isset($_GET['offline']) ? true : false;
$this->is_cancelled = isset($_GET['cancelled']) && !empty($_GET['cancelled']) ? true : false;
$this->order_id = isset($_GET['order_id']) ? intval($_GET['order_id']) : 0;
$this->kp_payment_id = isset($_GET['kp_payment_id']) ? sanitize_text_field(wp_unslash($_GET['kp_payment_id'])) : '';
$this->setup_query();
}
protected function setup_query()
{
if ($this->token) {
$order_meta = acadlix()->model()->orderMeta()->where('meta_value', $this->token)->first();
if ($order_meta) {
$order = acadlix()->model()->order()->find($order_meta->order_id);
$payment_method = $order->getMetaValue('payment_method');
if ($order) {
try {
if ($this->is_cancelled && $order->status != Order::STATUS_FAILED) {
acadlix()
->payments()
->{$payment_method}()
->failedOrder($order, 'Payment Cancelled');
$this->status = $order->status;
} else {
if ($order->status == Order::STATUS_PENDING) {
acadlix()
->payments()
->{$payment_method}()
->verifyOrder($this->token);
$order = acadlix()
->payments()
->{$payment_method}()
->getOrder($this->token);
}
$this->status = $order->status ?? Order::STATUS_PENDING;
}
} catch (\Exception $e) {
// error_log($e->getMessage());
$this->status = Order::STATUS_FAILED;
}
}
}
} else {
if ($this->order_id) {
$order = acadlix()->model()->order()->find($this->order_id);
if ($order) {
$this->status = $order->status;
}
}
if ($this->kp_payment_id) {
if (function_exists('get_pronamic_payment')) {
$payment = get_pronamic_payment($this->kp_payment_id);
if ($payment && $payment->get_order_id()) {
// acadlix()
// ->payments()
// ->knitpay()
// ->verifyOrder($this->kp_payment_id);
$order = acadlix()->model()->order()->find($payment->get_order_id());
if ($order) {
$this->status = $order->status;
}
}
}
}
}
}
public function render()
{
$this->render_header();
$this->render_content();
$this->render_footer();
}
protected function render_header()
{
global $wp_version;
if (version_compare($wp_version, '5.9', '>=') && function_exists('wp_is_block_theme') && wp_is_block_theme()) {
?>
>
>
get('TextDomain');
echo wp_kses_post(do_blocks(''));
} else {
get_header();
}
}
protected function render_content()
{
$content = apply_filters('acadlix_thankyou_content', [
[
'component' => 'div',
'props' => [
'class' => 'acadlix-thankyou-content-wrapper',
'style' => 'width: 100%;',
],
'children' => [
$this->render_status(),
[
'component' => 'php',
'value' => function () {
return apply_filters('the_content', get_the_content());
}
]
]
]
], $this->status);
acadlix()->helper()->acadlix_render_tree($content);
}
protected function render_status()
{
switch ($this->status) {
case Order::STATUS_SUCCESS:
return $this->render_order_success();
case Order::STATUS_FAILED:
return $this->render_order_failed();
case Order::STATUS_PENDING:
return $this->render_order_pending();
}
}
protected function render_order_success()
{
return apply_filters('acadlix_thankyou_success', [
'component' => 'div',
'props' => [
'class' => 'acadlix-thankyou-container'
],
'children' => [
[
'component' => 'img',
'props' => [
'src' => esc_url(ACADLIX_ASSETS_IMAGE_URL . 'success-icon.svg'),
'alt' => esc_attr__('Payment Success', 'acadlix'),
'class' => 'acadlix-thankyou-img',
],
],
[
'component' => 'h2',
'props' => [
// 'class' => 'acadlix-thankyou-title',
],
'value' => esc_html__('Payment Success', 'acadlix'),
],
[
'component' => 'div',
'props' => [
'class' => 'acadlix-thankyou-text',
],
'value' => esc_html__('Thank you! Your payment was completed successfully.', 'acadlix'),
],
[
'component' => 'div',
'props' => [
'class' => 'acadlix-thankyou-text',
],
'value' => esc_html__('You can now access your purchased course or content.', 'acadlix'),
],
[
'component' => 'a',
'props' => [
'href' => esc_url($this->dashboard_url . '#/courses'),
'class' => 'acadlix-thankyou-btn',
],
'value' => esc_html__('Go to My Courses', 'acadlix'),
],
]
]);
}
protected function render_order_failed()
{
$link = $this->link_type == 'public' ? esc_url($this->courses_url) : esc_url($this->dashboard_url . '#/allcourses');
return apply_filters('acadlix_thankyou_failed', [
'component' => 'div',
'props' => [
'class' => 'acadlix-thankyou-container'
],
'children' => [
[
'component' => 'img',
'props' => [
'src' => esc_url(ACADLIX_ASSETS_IMAGE_URL . 'failed-icon.svg'),
'alt' => esc_attr__('Payment Failed', 'acadlix'),
'class' => 'acadlix-thankyou-img',
],
],
[
'component' => 'h2',
'props' => [
// 'class' => 'acadlix-thankyou-title',
],
'value' => esc_html__('Payment Failed', 'acadlix'),
],
[
'component' => 'div',
'props' => [
'class' => 'acadlix-thankyou-text',
],
'value' => esc_html__('Sorry, your payment could not be completed.', 'acadlix'),
],
[
'component' => 'div',
'props' => [
'class' => 'acadlix-thankyou-text',
],
'value' => esc_html__('Payment Failed. If any amount has been deducted, please contact the administrator for assistance. You may also try the payment again.', 'acadlix'),
],
[
'component' => 'a',
'props' => [
'href' => $link,
'class' => 'acadlix-thankyou-btn',
],
'value' => esc_html__('Go to Courses', 'acadlix'),
],
]
]);
}
protected function render_order_pending()
{
$link = $this->link_type == 'public' ? esc_url($this->courses_url) : esc_url($this->dashboard_url . '#/allcourses');
return apply_filters('acadlix_thankyou_pending', [
'component' => 'div',
'props' => [
'class' => 'acadlix-thankyou-container'
],
'children' => [
[
'component' => 'img',
'props' => [
'src' => esc_url(ACADLIX_ASSETS_IMAGE_URL . 'pending-icon.svg'),
'alt' => esc_attr__('Payment Pending', 'acadlix'),
'class' => 'acadlix-thankyou-img',
],
],
[
'component' => 'h2',
'props' => [
// 'class' => 'acadlix-thankyou-title',
],
'value' => $this->is_payment_offline
? esc_html__('Thanks for your order!', 'acadlix')
: esc_html__('Payment Pending', 'acadlix'),
],
[
'component' => 'div',
'props' => [
'class' => 'acadlix-thankyou-text',
],
'value' => $this->is_payment_offline
? esc_html__('Your payment information has been submitted successfully. We’ll review it and activate your access as soon as the payment is verified.', 'acadlix')
: esc_html__('Your payment is currently pending. In some cases, it may take a few minutes for the status to update. If any amount has been deducted, it will be confirmed once processing is complete.', 'acadlix'),
],
[
'component' => 'a',
'props' => [
'href' => $link,
'class' => 'acadlix-thankyou-btn',
],
'value' => esc_html__('Go to Courses', 'acadlix'),
],
]
]);
}
protected function render_footer()
{
global $wp_version;
if (version_compare($wp_version, '5.9', '>=') && function_exists('wp_is_block_theme') && true === wp_is_block_theme()) {
$theme = wp_get_theme();
$theme_slug = $theme->get('TextDomain');
echo wp_kses_post(do_blocks(''));
echo '
';
wp_footer();
echo '';
echo '';
} else {
get_footer();
}
}
}