/**
  *
  * Get shipping plugin
  * @param string $id
  * @param null $key
  * @param waAppShipping|string $app_adapter
  * @return waShipping
  */
 public static function factory($id, $key = null, $app_adapter = null)
 {
     $instance = parent::factory($id, $key, self::PLUGIN_TYPE);
     /**
      * @var waShipping $instance
      */
     if ($app_adapter && $app_adapter instanceof waAppShipping) {
         $instance->app_adapter = $app_adapter;
     } elseif ($app_adapter && is_string($app_adapter)) {
         $instance->app_id = $app_adapter;
     }
     $instance->init();
     return $instance;
 }
 /**
  *
  * Get payment plugin instance
  * @param string $id
  * @param waiPluginSettings $adapter optional
  * @param int $merchant_id Merchant key
  * @return waPayment
  */
 public static function factory($id, $merchant_id = null, $app_adapter = null)
 {
     $instance = parent::factory($id, $merchant_id, self::PLUGIN_TYPE);
     if ($app_adapter && $app_adapter instanceof waAppPayment) {
         $instance->app_adapter = $app_adapter;
     } elseif ($app_adapter && is_string($app_adapter)) {
         $instance->app_id = $app_adapter;
     }
     $instance->init();
     return $instance;
 }