/**
  * Init payPal Mass pay api
  */
 public function call_masspay_api($receiver_information)
 {
     global $WCMp;
     require_once $WCMp->plugin_path . 'lib/paypal/CallerService.php';
     session_start();
     $emailSubject = urlencode('You have money!');
     $receiverType = urlencode('EmailAddress');
     $currency = urlencode(get_woocommerce_currency());
     $nvpstr = '';
     if ($receiver_information) {
         foreach ($receiver_information as $receiver) {
             $j = 0;
             $receiverEmail = urlencode($receiver['recipient']);
             $amount = urlencode($receiver['total']);
             $uniqueID = urlencode($receiver['vendor_id']);
             $note = urlencode($receiver['payout_note']);
             $nvpstr .= "&L_EMAIL{$j}={$receiverEmail}&L_Amt{$j}={$amount}&L_UNIQUEID{$j}={$uniqueID}&L_NOTE{$j}={$note}";
             $j++;
         }
         $nvpstr .= "&EMAILSUBJECT={$emailSubject}&RECEIVERTYPE={$receiverType}&CURRENCYCODE={$currency}";
         doProductVendorLOG($nvpstr);
         $resArray = hash_call("MassPay", $nvpstr);
         $ack = strtoupper($resArray["ACK"]);
         if ($ack == "SUCCESS" || $ack == "SuccessWithWarning") {
             doProductVendorLOG(json_encode($resArray));
             return $resArray;
         } else {
             doProductVendorLOG(json_encode($resArray));
             return false;
         }
     }
     return false;
 }
 /**
  * Initialize paypal masspay cron
  */
 function do_paypal_mass_payment()
 {
     global $WCMp;
     $payment_admin_settings = get_option('wcmp_payment_settings_name');
     if (array_key_exists('is_mass_pay', $payment_admin_settings)) {
         doProductVendorLOG("Cron Run Start for array creatation @ " . date('d/m/Y g:i:s A', time()));
         update_option('paypal_masspay_cron_running', 1);
         $commissions = $WCMp->paypal_masspay->get_query_commission();
         if (!empty($commissions)) {
             $WCMp->paypal_masspay->do_paypal_masspay();
         }
         doProductVendorLOG("Cron Run Finish @ " . date('d/m/Y g:i:s A', time()));
         doProductVendorLOG("Next Payment import cron @ " . date('d/m/Y g:i:s A', wp_next_scheduled('paypal_masspay_cron_start')) . "::" . date('d/m/Y g:i:s A', time()));
     }
     delete_option('paypal_masspay_cron_running');
 }
 /**
  * Create new commission post
  *
  * @param  int $vendor_id  ID of vendor for commission
  * @param  int $product_id ID of product for commission
  * @param  int $amount     Commission total
  * @return void
  */
 public function create_commission($vendor_id = 0, $product_id = 0, $amount = 0, $order_id = 0, $variation_id = 0, $item_id = 0, $item)
 {
     global $WCMp, $wpdb;
     if ($vendor_id == 0) {
         return;
     }
     if (!isset($amount['total'])) {
         $amount['total'] = 0;
     }
     if (!isset($amount['shipping'])) {
         $amount['shipping'] = 0;
     }
     if (!isset($amount['tax'])) {
         $amount['tax'] = 0;
     }
     if (!isset($amount['commission'])) {
         $amount['commission'] = 0;
     }
     $commission_data = array('post_type' => 'dc_commission', 'post_title' => sprintf(__('Commission - %s', $WCMp->text_domain), strftime(_x('%B %e, %Y @ %I:%M %p', 'Commission date parsed by strftime', $WCMp->text_domain))), 'post_status' => 'private', 'ping_status' => 'closed', 'post_excerpt' => '', 'post_author' => 1);
     $commission_id = wp_insert_post($commission_data);
     // Add meta data
     if ($vendor_id > 0) {
         update_post_meta($commission_id, '_commission_vendor', $vendor_id);
     }
     if ($variation_id > 0) {
         update_post_meta($commission_id, '_commission_product', array($variation_id));
     } else {
         update_post_meta($commission_id, '_commission_product', array($product_id));
     }
     update_post_meta($commission_id, '_commission_amount', $amount['commission']);
     update_post_meta($commission_id, '_shipping', $amount['shipping']);
     update_post_meta($commission_id, '_tax', $amount['tax']);
     if ($order_id > 0) {
         update_post_meta($commission_id, '_commission_order_id', $order_id);
     }
     // Mark commission as unpaid
     update_post_meta($commission_id, '_paid_status', 'unpaid');
     if ($variation_id > 0) {
         $com_pro_id = $variation_id;
     } else {
         $com_pro_id = $product_id;
     }
     $item_commission = $this->get_item_commission($product_id, $product_id, $item, $order_id, $item_id);
     $vendor = get_wcmp_vendor_by_term($vendor_id);
     $vendor_shipping_costs = $vendor->get_wcmp_vendor_shipping_total($order_id, $item);
     $item_shipping = $vendor_shipping_costs['shipping_amount'] + $vendor_shipping_costs['shipping_tax'];
     $item_tax = get_metadata('order_item', $item_id, '_line_tax', true);
     doProductVendorLOG("UPDATE `{$wpdb->prefix}wcmp_vendor_orders` \tSET commission_id = " . $commission_id . ", commission_amount = '" . $item_commission . "', `shipping` = '" . $item_shipping . "', `tax` = '" . $item_tax . "'\tWHERE order_id =" . $order_id . " AND order_item_id = " . $item_id . " AND product_id\t=" . $com_pro_id);
     $update_query = $wpdb->query("UPDATE `{$wpdb->prefix}wcmp_vendor_orders` \tSET commission_id = " . $commission_id . ", commission_amount = '" . $item_commission . "', `shipping` = '" . $item_shipping . "', `tax` = '" . $item_tax . "'\tWHERE order_id =" . $order_id . " AND order_item_id = " . $item_id . " AND product_id\t=" . $com_pro_id);
     do_action('wcmp_vendor_commission_created', $commission_id);
 }