pagseguro/pagseguro-sdk-ruby

Problema com retorno do shipping

Closed this issue · 4 comments

Opa, estou tendo problemas com o retorno das notificações. Estou recebendo o erro:
PagSeguro::Shipping::InvalidShippingTypeError (invalid "" type id)

Vejo que o shipping type está vindo preenchido no XML, mas por algum motivo o parser não está puxando. Alguém tem alguma idéia?

abaixo segue o XML do retorno:

<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<transaction>
    <date>2013-10-08T20:48:03.000-03:00</date>
    <code>0B9A4CD5-8946-4591-B29B-51A3EAA8FCB5</code>
    <reference>52535cc272ac26fa1f000001</reference>
    <type>1</type>
    <status>7</status>
    <cancellationSource>INTERNAL</cancellationSource>
    <lastEventDate>2013-10-08T20:49:13.000-03:00</lastEventDate>
    <paymentMethod>
        <type>1</type>
        <code>101</code>
    </paymentMethod>
    <grossAmount>1.95</grossAmount>
    <discountAmount>0.00</discountAmount>
    <feeAmount>0.50</feeAmount>
    <netAmount>1.45</netAmount>
    <extraAmount>0.00</extraAmount>
    <installmentCount>1</installmentCount>
    <itemCount>1</itemCount>
    <items>
        <item>
            <id>1</id>
            <description>Produto teste</description>
            <quantity>1</quantity>
            <amount>1.95</amount>
        </item>
    </items>
    <sender>
        <name>Gastao B Brun</name>
        <email>xxxxx@gmail.com</email>
        <phone>
            <areaCode>21</areaCode>
            <number>xxxxxxxxx</number>
        </phone>
    </sender>
    <shipping>
        <address>
            <street>RUA xxxxxxxxx</street>
            <number>104</number>
            <complement>xxxx</complement>
            <district>xxxxxx</district>
            <city>RIO DE JANEIRO</city>
            <state>RJ</state>
            <country>BRA</country>
            <postalCode>xxxxxxx</postalCode>
        </address>
        <type>2</type>
        <cost>0.00</cost>
    </shipping>
</transaction>

Olá Gastão ... estou tendo o mesmo problema com o retorno da notificação. Você conseguiu contornar? No meu caso estou submetendo a transação com o tipo de frete 'not_specified'.
ps_request = PagSeguro::PaymentRequest.new
...
ps_request.shipping = {
type_name: 'not_specified',
...
}

Tem algum log disso? E em que situação isso ocorre? Como poderiamos reproduzir o problema? Ocorre para todas as notificações com shipping preenchido?

Na verdade o problema ocorre com o retorno da transação.
O parser que é realizado no XML de retorno não carrega corretamente as informações pois o método "load_from_response" (https://github.com/pagseguro/ruby/blob/master/lib/pagseguro/transaction.rb#L113) utiliza o atributo .data já com o parser realizado em "response" que é da classe "Aitch::Response".
Para contornar, realizei uma modificação na linha 115 (https://github.com/pagseguro/ruby/blob/master/lib/pagseguro/transaction.rb#L115)

... de:

load_from_xml response.data.css("transaction").first

... para:

load_from_xml Nokogiri::XML(response.body).css("transaction").first

Realizando o parser com o Nokogiri em "response.body" carrega corretamente o conteúdo, do contrário ocorre o erro reportado ao executar o método "PagSeguro::Transaction.find_by_code" a partir de uma notificação recebida.

Segue response.data:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<transaction>
  <date>2014-01-24T14:47:28.000-02:00</date>
  <code>9EB14CC4-681D-47FF-BDBE-2FBBEE563CFC</code>
  <reference>R301250460</reference>
  <recoveryCode>7df5a68dd88c50bb5bce889ef4dd73125ad1ecc64f15d01e</recoveryCode>
  <type>1</type>
  <status>1</status>
  <lastEventDate>2014-01-24T14:48:17.000-02:00</lastEventDate>
  <paymentMethod>
    <type>7</type>
    <code>701</code>
  </paymentMethod>
  <grossAmount>205.60</grossAmount>
  <discountAmount>0.00</discountAmount>
  <feeAmount>10.66</feeAmount>
  <netAmount>194.94</netAmount>
  <extraAmount>0.00</extraAmount>
  <installmentCount>1</installmentCount>
  <itemCount>1</itemCount>
  <items>
    <item>
      <id>51</id>
      <description>Luminária 815-1 BLACK</description>
      <quantity>2</quantity>
      <amount>70.00</amount>
    </item>
  </items>
  <sender>
    <name>Luciano Hoffmaister Ribeiro</name>
    <email>xxxxxxxxx@gmail.com</email>
    <phone>
      <areaCode>51</areaCode>
      <number>12345678</number>
    </phone>
  </sender>
  <shipping>
    <address><street>Rua xyz</street>number&gt;123</address>
    <complement>xyz</complement>
    <district>xyz</district>
    <city>Taquara</city>
    <state>RS</state>
    <country>BRA</country>
    <postalCode>95600000</postalCode>
  </shipping>
  <type>3</type>
  <cost>65.60</cost>
</transaction>

Nokogiri::XML(response.body):

<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<transaction>
  <date>2014-01-24T14:47:28.000-02:00</date>
  <code>9EB14CC4-681D-47FF-BDBE-2FBBEE563CFC</code>
  <reference>R301250460</reference>
  <recoveryCode>7df5a68dd88c50bb5bce889ef4dd73125ad1ecc64f15d01e</recoveryCode>
  <type>1</type>
  <status>1</status>
  <lastEventDate>2014-01-24T14:48:17.000-02:00</lastEventDate>
  <paymentMethod>
    <type>7</type>
    <code>701</code>
  </paymentMethod>
  <grossAmount>205.60</grossAmount>
  <discountAmount>0.00</discountAmount>
  <feeAmount>10.66</feeAmount>
  <netAmount>194.94</netAmount>
  <extraAmount>0.00</extraAmount>
  <installmentCount>1</installmentCount>
  <itemCount>1</itemCount>
  <items>
    <item>
      <id>51</id>
      <description>Luminária 815-1 BLACK</description>
      <quantity>2</quantity>
      <amount>70.00</amount>
    </item>
  </items>
  <sender>
    <name>Luciano Hoffmaister Ribeiro</name>
    <email>xxxxxxxxx@gmail.com</email>
    <phone>
      <areaCode>51</areaCode>
      <number>12345678</number>
    </phone>
  </sender>
  <shipping>
    <address>
      <street>Rua xyz</street>
      <number>123</number>
      <complement>xyz</complement>
      <district>xyz</district>
      <city>Taquara</city>
      <state>RS</state>
      <country>BRA</country>
      <postalCode>95600000</postalCode>
    </address>
    <type>3</type>
    <cost>65.60</cost>
  </shipping>
</transaction>

Veja que os nodos 3 e 65.60, não pertencem a ...

Fico a disposição para maiores esclarecimentos.

Luciano

Correção aplicada. Obrigado a todos!