wirecardBrasil / moip-sdk-php

Cliente em PHP para integração server-side com APIs Moip v2
MIT License
124 stars 90 forks source link

RuntimeException 400 Bad Request #43

Closed valentim-guilherme closed 8 years ago

valentim-guilherme commented 8 years ago

Usando isso para o composer: { "require": { "moip/moip-sdk-php": "~1" } }

Este código:

`<?php

namespace App\Library;

use App\Library; use Moip\Moip; use Moip\MoipBasicAuth;

class PluritechMoip extends Library {

//Change for production status
private $PRODUCTION = FALSE;

//SANDBOX
private $sb_access_token = 'YY';
private $sb_access_key   = 'XX'; //this is not public

/**
 * Construct
 */
public function __construct(){

    $moip = new Moip(new MoipBasicAuth($this->sb_access_token,$this->sb_access_key), Moip::ENDPOINT_SANDBOX);

    $customer = $moip->customers()->setOwnId(uniqid())
        ->setFullname('Fulano de Tal')
        ->setEmail('fulano@email.com')
        ->setBirthDate('1988-12-30')
        ->setTaxDocument('22222222222')
        ->setPhone(11, 66778899)
        ->addAddress('BILLING',
            'Rua de teste', 123,
            'Bairro', 'Sao Paulo', 'SP',
            '01234567', 8);

    $order = $moip->orders()->setOwnId(uniqid())
        ->addItem('Bicicleta Specialized Tarmac 26 Shimano Alivio', 1, 'uma linda bicicleta', 10000)
        ->setCustomer($customer)
        ->create();

    //ERRO IN THIS POINT
    $payment = $order->payments()->setCreditCard(12, 15, '4073020000000002', '123', $customer)
        ->execute();

}

}`

Apresenta erro ao tentar executar o pagamento. Os dois passos anteriores foram realizados com sucesso. Gostaria de receber um guia de vocês, visto que estou utilizando o próprio código de exemplo.

menezes- commented 8 years ago

@valentim-guilherme O problema está com a data de expiração do cartão de crédito, ao rodar o código obtive:

fundingInstrument.creditCard.validExpirationDate: A data de expiração do cartão de crédito deve ser maior ou igual a data atual

O código do exemplo não atualizou a data de expiração, ainda está como 2015. Testei com $order->payments()->setCreditCard(12, 16, ...) e funcionou.

valentim-guilherme commented 8 years ago

Resolvi o problema de outra maneira. Passei a usar a função setCreditCardHash e não mais a função setCreditCard. Onde tenho um hash do cartão de crédito que foi provido pelo moip.min.js + a chave publica da minha aplicação. Mas muito obrigado pela ajuda.

kassioribeiro commented 8 years ago

Olá! Eu mudei o ano do cartão de crédito, conforme falado anteriormente, e mesmo assim continuo recebendo o erro Bad Request. $order->payments()->setCreditCard(12, 16, ...)

Teria alguma outra modificação a ser feita?

menezes- commented 8 years ago

Tem como postar o código usado? Em 17/03/2016 18:27, "kassioribeiro" notifications@github.com escreveu:

Olá! Eu mudei o ano do cartão de crédito, conforme falado anteriormente, e mesmo assim continuo recebendo o erro Bad Request. $order->payments()->setCreditCard(12, 16, ...)

Teria alguma outra modificação a ser feita?

— You are receiving this because you commented. Reply to this email directly or view it on GitHub https://github.com/moip/moip-sdk-php/issues/43#issuecomment-198088530

kassioribeiro commented 8 years ago

Esse é o código

`$moip = new Moip(new MoipBasicAuth(Config::$tokenMoip, Config::$keyMoip), Moip::ENDPOINT_SANDBOX);

    $customer = $moip->customers()->setOwnId(uniqid())
        ->setFullname('Fulano de Tal')
        ->setEmail('fulano@email.com')
        ->setBirthDate('1988-12-30')
        ->setTaxDocument('22222222222')
        ->setPhone(11, 66778899)
        ->addAddress('BILLING',
            'Rua de teste', 123,
            'Bairro', 'Sao Paulo', 'SP',
            '01234567', 8);

    $orderMoip = $moip->orders()->setOwnId(uniqid())
                    ->addItem('Bicicleta Specialized Tarmac 26 Shimano Alivio', 1, 'uma linda bicicleta', 10000)
                    ->setCustomer($customer)
                    ->create();

    $payment = $orderMoip->payments()->setCreditCard(12, 16, '4073020000000002', '123', $customer)->execute();`
menezes- commented 8 years ago

Consegui rodar seu código sem problemas. Quando um Bad Request é retornado o corpo, normalmente, contém uma descrição do erro, você pode ver a referência aqui

SOSTheBlack commented 8 years ago

@valentim-guilherme @kassioribeiro Erro corrigido

felipebutcher commented 8 years ago

boa noite! estou recebendo erro 400 tb sempre e a api nao retorna nenhuma mensagem adicional. retorno apenas o 400 com body em branco.

json: {"ownId": "1111","amount": {"currency": "BRL","subtotals": {"shipping": 1000}},"items": [{"product": "Descriloque","quantity": 1,"detail": "chup loks lok","price": 1000}],"customer": {"ownId": "1111","fullname": "Felipe Butcher","email": "felipebutcher@gmail.com","birthDate": "1981-07-12","taxDocument": {"type": "CPF","number": "050701XXXXX"},"phone": {"countryCode": "55","areaCode": "31","number": "988292297"},"shippingAddress": {"street": "Rua Camapua","streetNumber": 730,"complement": "ap 704","district": "Grajau","city": "Belo Horizonte","state": "MG","country": "BRA","zipCode": "30431236"}}}

screen shot 2016-05-05 at 8 16 36 pm

SOSTheBlack commented 8 years ago

@felipebutcher acabei de criar um pedido normalmente utilizando o sdk. Verifique o sdk de sua linguagem de programação por favor.