|
Desta vez venho trazer um simples exemplo de como utilizar o suporte a SOAP nativo do PHP5 para consultar o webservices da Amazon.com e com isso acessar sua ListMania! A motivação veio do desejo de publicar minha recomendação de livros neste site. Cheguei a fazer um banco de dados próprio, mas vi o quanto seria trabalhoso alimentar toda essa base de dados. Já sabia que a Amazon mantinha um webservice muito bacana e quando descobri o serviço chamado ListMania!, vi que era o que eu precisava para oferecer uma lista personalizada dos livros que eu recomendo. ListMania! é um serviço disponibilizado pela Amazon onde um cliente pode agrupar até 40 itens e publicá-los utilizando título, tags, comentários pessoais etc. Criei uma lista contendo livros sobre PHP e uma outra listra sobre livros de apoio no desenvolvimento web. Você pode ver o resultado deste trabalho no item de menu "Livros". Adiante estarei explicando como fazer por você mesmo um cliente SOAP e como configurá-lo para acessar este webservice.
Você precisa de um ID de Acesso para os webservices da Amazon.com Se ainda não tem um cadastre-se no link abaixo: https://aws-portal.amazon.com/gp/aws/developer/registration/index.html/
Precisará também criar uma ListMania http://www.amazon.com/gp/richpub/listmania/createpipeline/ Quando você tiver criado uma, verifique na sua lista de ListMania a URL. Você deverá ver algo como: http://www.amazon.com/Livros-PHP-INSPHPIRED-COM/lm/RZCY70DTYKD0F/ ref=cm_lm_byauthor_title_full/002-0212624-3943259 Repare no código em negrito! Este é o ID de sua lista.
O código abaixo está bem comentado e acredito que dispensa informações adicionais : <?php
//inicia um novo cliente SOAP (requer PHP5)
$cliente = new SoapClient("http://soap.amazon.com/schemas2/AmazonWebServices.wsdl");
//array de parametros que serão passados na consulta ao servidor SOAP.
$parametros_listmania = array(
'lm_id' => 'RZCY70DTYKD0F', //id da lista no ListMania
'devtag' => 'SEU_CODIGO_ACESSO', //id de desenvolvedor
'page' => '1',
'type' => 'heavy', //nivel de detalhe. valores possíveis são: lite | heavy
'tag' => '' //seria o id de cliente na Amazon. Até onde testei foi desnecesário informar valor.
);
//chamado ao método ListManiaSearchRequest. Os demais métodos podem ser verificados no arquivo WSDL.
$resultado_lm = $cliente->ListManiaSearchRequest($parametros_listmania);
//para verificar todas as informações retornadas pelo servidor descomente as próximas 03 linhas abaixo.
//print "<pre>";
//print_r($resultado_lm->Details);
//print "</pre>";
//percorre o array Details retornado no envelope SOAP.
foreach ($resultado_lm->Details as $livro){
echo "<a href=\"".$livro->Url."\" target=\"_blank\"><h3>".$livro->ProductName ."</h3></a>";
echo "<table><tr>";
echo "<td><a href=\"".$livro->Url."\" target=\"_blank\"><img src=\"".$livro->ImageUrlMedium."\" border=\"0\"></a><br> Publicação:<strong> ".$livro->ReleaseDate." </strong> <br> ".$livro->Manufacturer."<td>";
echo "<tr><td>Avalicação: ".$livro->Reviews->AvgCustomerRating."</td></tr>";
echo "</tr></table>";
echo "<hr align=\"center\">";
}
/*
* Abaixo um trecho do arquivo WSDL onde você pode ver outras chaves do array Details
*
<xsd:complexType name="Details">
<xsd:all>
<xsd:element name="Url" type="xsd:string" minOccurs="0"/>
<xsd:element name="Asin" type="xsd:string" minOccurs="0"/>
<xsd:element name="ProductName" type="xsd:string" minOccurs="0"/>
<xsd:element name="Catalog" type="xsd:string" minOccurs="0"/>
<xsd:element name="KeyPhrases" type="typens:KeyPhraseArray" minOccurs="0"/>
<xsd:element name="Artists" type="typens:ArtistArray" minOccurs="0"/>
<xsd:element name="Authors" type="typens:AuthorArray" minOccurs="0"/>
<xsd:element name="Mpn" type="xsd:string" minOccurs="0"/>
<xsd:element name="Starring" type="typens:StarringArray" minOccurs="0"/>
<xsd:element name="Directors" type="typens:DirectorArray" minOccurs="0"/>
<xsd:element name="TheatricalReleaseDate" type="xsd:string" minOccurs="0"/>
<xsd:element name="ReleaseDate" type="xsd:string" minOccurs="0"/>
.
.
.
*/
?>
|