michaeldouglas / laravel-pagseguro

Integração com o gateway de pagamento pagseguro, para utilização com o Laravel
357 stars 119 forks source link

CEP não reconhecido no Pagseguro #77

Closed Biscuri closed 8 years ago

Biscuri commented 8 years ago

Estou utilizando sua biblioteca do Laravel para efetuar transações em minha aplicação, e estou com um pequeno problema.

O problema é o seguinte: O CEP que envio para o Pagseguro não está sendo preenchido automaticamente, enquanto que todos os demais campos são preenchidos normalmente (nome, CPF, endereço, etc.).

Estou usando Laravel 5.0, segue o método que envia a requisição do pagamento:

`public static function pagamento($input){ try { //trata nome para o Pagseguro não encher a paciência $name = Auth::User()->nome; $name = preg_replace('/\d/', '', $name); $name = preg_replace('/[\n\t\r]/', ' ', $name); $name = preg_replace('/\s(?=\s)/', '', $name); $name = trim($name); $name = explode(' ', $name);

        if(count($name) == 1 ) {
            $name[] = 'dos Santos';
        }
        $name = implode(' ', $name);

        $data = [
            'items' => [
                [
                    'id' => '1',
                    'description' => 'R$' . $input['valor'] . ' em créditos.',
                    'quantity' => '1',
                    'amount' => $input['valor'],
                    'weight' => '0',
                    'shippingCost' => '0.00',
                    'width' => '0',
                    'height' => '0',
                    'length' => '0',
                ]
            ],
            'shipping' => [
                'address' => [
                    'street' => $input['rua'],
                    'number' => $input['numero'],
                    'district' => $input['bairro'],
                    'postalCode' => str_replace('-', '', $input['cep']),
                    'city' => $input['cidade'],
                    'state' => $input['UF'],
                    'country' => 'BRA',
                ],
                'type' => 3,
                'cost' => 0.00,
            ],
            'sender' => [
                'email' => Auth::User()->email,
                'name' => $name,
                'documents' => [
                    [
                        'number' => str_replace(['.', '-'], '', Auth::User()->cpfcnpj),
                        'type' => 'CPF'
                    ]
                ],
                'phone' => str_replace(['-', '(', ')'], '', Auth::User()->telefone),
                'bornDate' => Auth::User()->datanascimento,
            ],
            'redirectURL' => '(minhaurl)',
            'notificationURL' => '(minhaurl)'
        ];

        $pagseguro = new PagSeguro();

        $checkout = $pagseguro->checkout()->createFromArray($data);
        $credentials = $pagseguro->credentials()->get();
        $information = $checkout->send($credentials); // Retorna um objeto de laravel\pagseguro\Checkout\Information\Information
        return $information;
    } catch (\Exception $e){
        throw $e;
    }

}`

O dump da variável checkout me retorna o seguinte:

SimpleCheckout {#236 ▼

currency: "BRL"

items: ItemCollection {#234 ▶}

sender: Sender {#221 ▶}

shipping: Shipping {#235 ▼

#address: Address {#227 ▼
  #postalCode: "44004592"
  #street: "Rua teste"
  #number: "123"
  #complement: null
  #district: "Teste1"
  #city: "Teste"
  #state: "BA"
  #country: "BRA"
  #validator: null
}
#cost: 0.0
#type: 3
#validator: null

}

receiver: null

charset: "UTF-8"

extraAmount: null

maxAge: null

maxUses: null

metadata: null

notificationURL: "(minhaurl)"

redirectURL: "(minhaurl)"

reference: null

validator: null

}

Como dá pra perceber, o CEP é enviado ao pagseguro, mas lá ele pede novamente para digitar o CEP, não sei a razão. Estou testando no sandbox, com um e-mail não cadastrado (123456789@sandbox.pagseguro.com.br).

isaquesb commented 8 years ago

Vamos verificar e retornaremos com uma posição.

Att.

Isaque de Souza

Em 6 de set de 2016 2:03 PM, "Biscuri" notifications@github.com escreveu:

Estou utilizando sua biblioteca do Laravel para efetuar transações em minha aplicação, e estou com um pequeno problema.

O problema é o seguinte: O CEP que envio para o Pagseguro não está sendo preenchido automaticamente, enquanto que todos os demais campos são preenchidos normalmente (nome, CPF, endereço, etc.).

Estou usando Laravel 5.0, segue o método que envia a requisição do pagamento:

public static function pagamento($input){ try { //trata nome para o Pagseguro não encher a paciência $name = Auth::User()->nome; $name = preg_replace('/\d/', '', $name); $name = preg_replace('/[\n\t\r]/', ' ', $name); $name = preg_replace('/\s(?=\s)/', '', $name); $name = trim($name); $name = explode(' ', $name);

    if(count($name) == 1 ) {
        $name[] = 'dos Santos';
    }
    $name = implode(' ', $name);

    $data = [
        'items' => [
            [
                'id' => '1',
                'description' => 'R$' . $input['valor'] . ' em créditos.',
                'quantity' => '1',
                'amount' => $input['valor'],
                'weight' => '0',
                'shippingCost' => '0.00',
                'width' => '0',
                'height' => '0',
                'length' => '0',
            ]
        ],
        'shipping' => [
            'address' => [
                'street' => $input['rua'],
                'number' => $input['numero'],
                'district' => $input['bairro'],
                'postalCode' => str_replace('-', '', $input['cep']),
                'city' => $input['cidade'],
                'state' => $input['UF'],
                'country' => 'BRA',
            ],
            'type' => 3,
            'cost' => 0.00,
        ],
        'sender' => [
            'email' => Auth::User()->email,
            'name' => $name,
            'documents' => [
                [
                    'number' => str_replace(['.', '-'], '', Auth::User()->cpfcnpj),
                    'type' => 'CPF'
                ]
            ],
            'phone' => str_replace(['-', '(', ')'], '', Auth::User()->telefone),
            'bornDate' => Auth::User()->datanascimento,
        ],
        'redirectURL' => '(minhaurl)',
        'notificationURL' => '(minhaurl)'
    ];

    $pagseguro = new PagSeguro();

    $checkout = $pagseguro->checkout()->createFromArray($data);
    $credentials = $pagseguro->credentials()->get();
    $information = $checkout->send($credentials); // Retorna um objeto de laravel\pagseguro\Checkout\Information\Information
    return $information;
} catch (\Exception $e){
    throw $e;
}

}

O dump da variável checkout me retorna o seguinte:

SimpleCheckout {#236 ▼

currency: "BRL"

items: ItemCollection {#234 ▶}

sender: Sender {#221 ▶}

shipping: Shipping {#235 ▼

address: Address {#227 ▼

postalCode: "44004592"

street: "Rua teste"

number: "123"

complement: null

district: "Teste1"

city: "Teste"

state: "BA"

country: "BRA"

validator: null

}

cost: 0.0

type: 3

validator: null

}

receiver: null

charset: "UTF-8"

extraAmount: null

maxAge: null

maxUses: null

metadata: null

notificationURL: "(minhaurl)"

redirectURL: "(minhaurl)"

reference: null

validator: null

}

Como dá pra perceber, o CEP é enviado ao pagseguro, mas lá ele pede novamente para digitar o CEP, não sei a razão. Estou testando no sandbox, com um e-mail não cadastrado (123456789@sandbox.pagseguro.com.br).

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/michaeldouglas/laravel-pagseguro/issues/77, or mute the thread https://github.com/notifications/unsubscribe-auth/AC7J58TcJPco19y9ixg9Ylq2DFTrNKF4ks5qnZz7gaJpZM4J2EAN .

fernandobandeira commented 8 years ago

Possível réplica de: #73

Biscuri commented 8 years ago

Verifiquei a #73, mas não vi a resposta do problema lá. Também me parece ser diferente, pois é apenas o CEP que está com problema, o restante todo passa.

fernandobandeira commented 8 years ago

Pra mim ele passava tudo menos o CEP e o telefone.

Biscuri commented 8 years ago

Ele está recebendo o telefone aqui, só o CEP que ele não recebe. Então é do próprio Pagseguro não receber o CEP, não tem jeito mesmo? Ou tem como passar o CEP?

isaquesb commented 8 years ago

Vamos verificar o problema. Por enquanto ninguém mais teve esse problema. Há algumas divergências entre os ambientes de produção e sandbox do próprio PagSeguro, verificaremos se é uma delas.

att.

Isaque de Souza

2016-09-06 15:12 GMT-03:00 Biscuri notifications@github.com:

Ele está recebendo o telefone aqui, só o CEP que ele não recebe. Então é do próprio Pagseguro não receber o CEP, não tem jeito mesmo? Ou tem como passar o CEP?

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/michaeldouglas/laravel-pagseguro/issues/77#issuecomment-245039409, or mute the thread https://github.com/notifications/unsubscribe-auth/AC7J563p3IKGyJacLk7AxPFc_sFEs-Lgks5qna0ngaJpZM4J2EAN .

Isaque de Souza

isaquesb commented 8 years ago

@Biscuri

Desculpe a demora, Corrigi esse problema no último commit. No sandbox consegui verificar. To sem conta vendedor de produção, mas acredito que esteja ok também. Qualquer coisa notifica ai blz? Vlw.!