tutorial sales_order info create php api magento soap

php - sales_order - magento web service tutorial



Error PHP de Magento API v2 (4)

Estoy tratando de usar SOAP con C #. Magento 1.4.2.

http://localhost/api/v2_soap/?wsdl

Aquí puedo ver el método catalogProductCreate

Entonces intento conectarme con:

$proxy = new SoapClient(''http://localhost/api/v2_soap/?wsdl''); $sessionId = $proxy->login(''xxx'', ''xxxxxx''); // user with full access $newProductData = new stdClass(); $newProductData->name = ''Product Name''; $newProductData->description = ''Description''; $newProductData->short_description = ''Short Description''; $newProductData->websites = array(138); $newProductData->categories = array(7,15); $newProductData->status = 1; $newProductData->price = 45; $newProductData->tax_class_id = 2; $newProductData->weight = 1; $result = $proxy->catalogProductCreate( $sessionId, // Soap Session ''simple'', // Product Type 4, // Attribute Set Id (Default) ''product-sku'', // Product Sku $newProductData // Product Data );

Pero recibo esta salida:

Error fatal: excepción de SoapFault no detectada: [4] La ruta del recurso no se puede llamar.


Asegurarse de que usted puede usar el recurso wsdl es correcto, pero también me encontré con ese problema cuando no tenía el usuario configurado con los permisos correctos bajo la función.


Coloque este archivo en la carpeta raíz de magento / project para que pueda acceder a todo el método de magento.

Disfruta la idea ...


(los detalles son específicos de Magento 1.6.x, pero las técnicas, si no los detalles, deberían aplicarse a otras versiones)

Supongo, basado en la muestra del código, que está utilizando un código de cliente PHP para probar la existencia de un método, que luego puede aplicar a una llamada desde su aplicación C #.

Suponiendo que ese sea el caso, significa que usted conoce PHP, por lo que querrá depurar esto en el nivel de PHP del servidor de jabón de Magento. El único archivo de clase que produce esa falla es

app/code/core/Mage/Api/Model/Server/Handler/Abstract.php

Agregue el siguiente registro temporal y directamente a ese archivo, o coloque una copia del archivo de clase en

app/code/local/Mage/Api/Model/Server/Handler/Abstract.php

para una anulación de codepool.

Busque en ese archivo de clase la siguiente excepción

throw new Mage_Api_Exception(''resource_path_not_callable'')

Esto es lo que hace que el servidor de jabón Magento responda con esa falla. Hay cuatro lugares en los que esto sucede en ese archivo. Agregue las llamadas de registro sobre cada uno.

Mage::Log(sprintf(''Line %s in file %s'',__LINE__, __FILE__)); throw new Mage_Api_Exception(''resource_path_not_callable'');

Esto le permitirá saber qué falla está causando su problema, desde la cual puede depurar y registrar más. Hay dos lugares en los que esto puede suceder (cuatro en total en el archivo, uno para una llamada normal, otro para la llamada múltiple).

En orden de aparición, con posibles causas en los comentarios.

//here magento is attempting to instantiate the "API Model" that will perform //the work of your API call. Upon instantiation, it discovers that the model //doesn''t inherit from Mage_Api_Model_Resource_Abstract, and bails. //This is rare for a non-custom API call, but might be caused by a class rewrite //gone amuck, or a very hacked system try { $model = Mage::getModel($modelName); if ($model instanceof Mage_Api_Model_Resource_Abstract) { $model->setResourceConfig($resources->$resourceName); } } catch (Exception $e) { Mage::Log(sprintf(''Line %s in file %s'',__LINE__, __FILE__)); throw new Mage_Api_Exception(''resource_path_not_callable''); } //Here Magento''s been able to instantiate the $model, and is checking if the method is //callable. If not, it bails. Again, for a standard, stock API call this shouldn''t //be happening, but could be the result of a rewrite gone wrong, or someone hacking an //api class to make the method non accesible, or someone hacking the method mapping in api.xml if (is_callable(array(&$model, $method))) { if (isset($methodInfo->arguments) && ((string)$methodInfo->arguments) == ''array'') { return $model->$method((is_array($args) ? $args : array($args))); } elseif (!is_array($args)) { return $model->$method($args); } else { return call_user_func_array(array(&$model, $method), $args); } } else { Mage::Log(sprintf(''Line %s in file %s'',__LINE__, __FILE__)); throw new Mage_Api_Exception(''resource_path_not_callable''); }

Descubre por qué Magento está arrojando el error API. A menudo señalará un tipo en su llamada de jazmín, O le señalará lo que ha sido pirateado en su sistema de PHP


Intente crear un usuario de servicio web con rol y asígnelos a un rol que tenga acceso a ''ALL''. opción en el menú de recursos del rol en la información del rol.