Function Reference: geodir_ipn_handler_2co
Summary
This function has not been documented yet.
Source Code
function geodir_ipn_handler_2co() { $post = $_POST; $ins_vendor_id = isset($post['vendor_id']) ? $post['vendor_id'] : ''; $ins_vendor_order_id = isset($post['vendor_order_id']) && $post['vendor_order_id'] > 0 ? absint($post['vendor_order_id']) : ''; $ins_message_type = isset($post['message_type']) ? $post['message_type'] : ''; $ins_sale_id = isset($post['sale_id']) ? absint($post['sale_id']) : ''; $ins_invoice_id = isset($post['invoice_id']) ? absint($post['invoice_id']) : ''; $ins_recurring = isset($post['recurring']) && absint($post['recurring']) == 1 ? true : false; $ins_invoice_status = isset($post['invoice_status']) ? $post['invoice_status'] : ''; $ins_recurrence_status = isset($post['item_rec_status_1']) ? $post['item_rec_status_1'] : ''; $ins_next_recurrence = isset($post['item_rec_date_next_1']) ? $post['item_rec_date_next_1'] : ''; $ins_payment_type = isset($post['payment_type']) ? $post['payment_type'] : ''; $ins_md5_hash = isset($post['md5_hash']) ? $post['md5_hash'] : ''; $ins_cust_amount = isset($post['invoice_cust_amount']) ? $post['invoice_cust_amount'] : ''; $invoice_id = $ins_vendor_order_id; $is_subscription = $ins_recurring; $invoice_info = $invoice_id ? geodir_get_invoice($invoice_id) : NULL; if (empty($invoice_info) || !($ins_message_type && $ins_sale_id && $ins_invoice_id)) { wp_redirect(home_url()); exit; } $message_type = isset( $post['message_type'] ) ? geodir_strtoupper($post['message_type']) : ''; $status = 'pending'; $is_recurring = false; if ($message_type == 'ORDER_CREATED' || $message_type == 'INVOICE_STATUS_CHANGED') { if ($ins_invoice_status == 'approved' || $ins_invoice_status == 'deposited') { $status = 'confirmed'; } else if ($ins_invoice_status == 'declined') { $status = 'failed'; } } else if ($message_type == 'REFUND_ISSUED') { $status = 'failed'; } else if (in_array($message_type, array('RECURRING_INSTALLMENT_SUCCESS', 'RECURRING_RESTART', 'RECURRING_RESTARTED'))) { $status = 'confirmed'; $is_recurring = true; } else if (in_array($message_type, array('RECURRING_INSTALLMENT_FAILED', 'RECURRING_STOPPED', 'RECURRING_COMPLETE'))) { $status = 'custom'; $is_recurring = true; } $invoice_data = (array)maybe_unserialize($invoice_info->invoice_data); $post_id = $invoice_info->post_id; $user_id = $invoice_info->user_id; $redirect_url = home_url(); $success_url = geodir_info_url(array('pay_action' => 'success', 'inv' => $invoice_id, 'pid' => $post_id)); $cancel_url = geodir_info_url(array('pay_action' => 'cancel', 'inv' => $invoice_id, 'pid' => $post_id)); $notify_status = ''; $update_status = false; $update_transaction = false; switch ($status) { case 'confirmed': $redirect_url = $success_url; $notify_status = 'payment_success'; $update_status = true; $update_transaction = true; break; case 'pending': $redirect_url = $success_url; break; case 'cancelled': case 'failed': $redirect_url = $cancel_url; $notify_status = 'payment_fail'; $update_status = true; $update_transaction = true; break; case 'custom': $notify_status = 'payment_success'; $redirect_url = $success_url; $update_transaction = true; break; } $item_name = $post['item_name_1']; $txn_id = $ins_invoice_id; $payment_status = geodir_payment_status_name( $status ); $amount = geodir_payment_price($ins_cust_amount); $payment_type = $ins_payment_type; $payment_date = date_i18n( "F j, Y, g:i a", current_time( 'timestamp' ) ); $payment_method = geodir_payment_method_title( '2co' ); $discount = ''; if (!empty($invoice_info->coupon_code) && $invoice_info->discount > 0) { $recurring_coupon = geodir_payment_coupon_is_recurring($invoice_info->coupon_code) ? true : false; $discount = ($recurring_coupon && $is_recurring && $status == 'confirmed') ? '' : geodir_payment_price($invoice_info->discount); } $invoice_data['timestamp'] = $post['timestamp']; $invoice_data['vendor_id'] = $ins_invoice_id; $invoice_data['invoice_id'] = $ins_invoice_id; $invoice_data['sale_id'] = $ins_sale_id; $transaction_details = ''; if ($is_subscription) { if ($is_recurring) { $transaction_details .= '##### ' . __(geodir_strtoupper($post['message_description']), 'geodir_payments' ) . ' #####
'; } else { $transaction_details .= '##### ' . __( 'THIS IS A SUBSCRIPTION PAYMENT', 'geodir_payments' ) . ' #####
'; } } $transaction_details .= "--------------------------------------------------
"; $transaction_details .= wp_sprintf( __( "Payment Details for Invoice ID #%s", 'geodir_payments' ), geodir_payment_invoice_id_formatted($invoice_id) ) . "
"; $transaction_details .= "--------------------------------------------------
"; $transaction_details .= wp_sprintf( __( "Item Name: %s", 'geodir_payments' ), $item_name ) . "
"; $transaction_details .= "--------------------------------------------------
"; $transaction_details .= wp_sprintf( __( "Trans ID: %s", 'geodir_payments' ), $txn_id ) . "
"; $transaction_details .= wp_sprintf( __( "Status: %s", 'geodir_payments' ), $payment_status ) . "
"; $transaction_details .= wp_sprintf( __( "Payable Amount: %s", 'geodir_payments' ), $amount ) . "
"; if ($discount) { $transaction_details .= sprintf( __( 'Discount: %s', 'geodir_payments' ), $discount ) . '
'; } $transaction_details .= wp_sprintf( __( "Type: %s", 'geodir_payments' ), $payment_type ) . "
"; $transaction_details .= wp_sprintf( __( "Date: %s", 'geodir_payments' ), $payment_date ) . "
"; $transaction_details .= wp_sprintf( __( "Method: %s", 'geodir_payments' ), $payment_method ) . "
"; $transaction_details .= wp_sprintf( __( "Sale ID: %s", 'geodir_payments' ), $ins_sale_id ) . "
"; if ($is_subscription && $ins_recurrence_status) { $transaction_details .= wp_sprintf( __( "Subscription status: %s", 'geodir_payments' ), __(ucfirst($ins_recurrence_status), 'geodir_payments') ) . "
"; } if ($is_subscription && $status == 'confirmed' && $ins_next_recurrence && $ins_recurrence_status == 'live') { $transaction_details .= wp_sprintf( __( "Date of next recurring installment: %s", 'geodir_payments' ), date_i18n("F j, Y", strtotime($ins_next_recurrence))) . "
"; } $transaction_details .= "--------------------------------------------------
"; if ($update_status) { global $wpdb; $wpdb->update(INVOICE_TABLE, array('subscription' => ($is_subscription ? 1 : 0), 'invoice_data' => maybe_serialize($invoice_data)), array('id' => $invoice_id)); geodir_update_invoice_status($invoice_id, $status, $is_subscription); } if ($update_transaction) { geodir_update_invoice_transaction_details($invoice_id, $transaction_details); } if ($notify_status != '') { geodir_payment_adminEmail($post_id, $user_id, $notify_status, $transaction_details); // send notification to admin geodir_payment_clientEmail($post_id, $user_id, $notify_status, $transaction_details); // send notification to client } wp_redirect($redirect_url); exit; }