{"action":"created","issue":{"url":"https://api.github.com/repos/moip/moip-sdk-js/issues/16","repository_url":"https://api.github.com/repos/moip/moip-sdk-js","labels_url":"https://api.github.com/repos/moip/moip-sdk-js/issues/16/labels{/name}","comments_url":"https://api.github.com/repos/moip/moip-sdk-js/issues/16/comments","events_url":"https://api.github.com/repos/moip/moip-sdk-js/issues/16/events","html_url":"https://github.com/moip/moip-sdk-js/issues/16","id":356574903,"node_id":"MDU6SXNzdWUzNTY1NzQ5MDM=","number":16,"title":"Não foi possível descriptografar o hash do cartão","user":{"login":"lucasrohers","id":11723065,"node_id":"MDQ6VXNlcjExNzIzMDY1","avatar_url":"https://avatars2.githubusercontent.com/u/11723065?v=4","gravatar_id":"","url":"https://api.github.com/users/lucasrohers","html_url":"https://github.com/lucasrohers","followers_url":"https://api.github.com/users/lucasrohers/followers","following_url":"https://api.github.com/users/lucasrohers/following{/other_user}","gists_url":"https://api.github.com/users/lucasrohers/gists{/gist_id}","starred_url":"https://api.github.com/users/lucasrohers/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lucasrohers/subscriptions","organizations_url":"https://api.github.com/users/lucasrohers/orgs","repos_url":"https://api.github.com/users/lucasrohers/repos","events_url":"https://api.github.com/users/lucasrohers/events{/privacy}","received_events_url":"https://api.github.com/users/lucasrohers/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2018-09-03T17:59:56Z","updated_at":"2018-09-04T15:59:41Z","closed_at":null,"author_association":"NONE","body":"Olá amigos, estou tentando fazer um pagamento com cartão de crédito usando a SDK em php de vocês e a SDK de hash do cartão. Veja meu código:\r\n\r\npublic function hashCartao($cartao,$key){\r\n    $cartao = $this->configuracoes_model->get('cartao_clientes', 'desc', 'id', $cartao)->row();\r\n    echo '<script src=\"'.base_url(\"assets/js/moip-sdk-js.js\").'\"></script>\r\n    <script>\r\n    var hash = MoipSdkJs.MoipCreditCard\r\n    .setPubKey(\"'.$key.'\")\r\n    .setCreditCard({\r\n        number: \"'.$cartao->numero.'\",\r\n        cvc: \"'.$cartao->codigo_seguranca.'\",\r\n        expirationMonth: \"'.substr($cartao->vencimento, 0, -3).'\",\r\n        expirationYear: \"'.substr($cartao->vencimento, 3).'\"\r\n        })\r\n        var cc = \"\";\r\n        hash.hash().then(function(val){\r\n            cc = val;\r\n            });\r\n            </script>';\r\n            $hash = \"<script>document.write(cc)</script>\";\r\n            echo '<br>'.$hash.'<br>primeiro hash';\r\n            return \"<script>document.write(cc)</script>\";\r\n        }\r\n\r\n        public function cartao($fatura,$idForma,$cartao){\r\n            $forma_pagamento = $this->configuracoes_model->get('formas_pagamento', 'desc', 'id', $idForma)->row();\r\n            $moip = new Moip(new BasicAuth($forma_pagamento->token, $forma_pagamento->keyGateway), Moip::ENDPOINT_SANDBOX);\r\n\r\n             $hash = $this->hashCartao($cartao,$forma_pagamento->keyPublico);\r\n\r\n            if ($this->gateway->status == 1 && $forma_pagamento->status == 1) {\r\n                $fatura = $this->configuracoes_model->get('faturas', 'desc', 'id', $fatura)->row();\r\n                $valor = str_replace(\".\" , \"\" , $fatura->valor );\r\n                $valor = intval($valor);\r\n                if ($fatura->tipo == 1 && $fatura->id_tipo != NULL) {\r\n                    $assinatura = $this->configuracoes_model->get('assinaturas', 'desc', 'id', $fatura->id_tipo)->row();\r\n                    $plano = $this->configuracoes_model->get('planos', 'desc', 'id', $assinatura->id_plano)->row();\r\n                    $produto = $plano->nome.' - '.$assinatura->nome;\r\n                }elseif($fatura->tipo == 2 && $fatura->id_tipo == NULL){\r\n                    $produto = 'Fatura avulsa, consulte a descrição';\r\n                }elseif($fatura->tipo == 3 && $fatura->id_tipo != NULL){\r\n                    $dominio = $this->configuracoes_model->get('dominios', 'desc', 'id', $fatura->id_tipo)->row();\r\n                    $produto = $dominio->dominio;\r\n                }\r\n\r\n                $cliente = $this->configuracoes_model->get('clientes', 'desc', 'id', $fatura->id_cliente)->row();\r\n                $ddd = substr(preg_replace(\"/[^0-9]/\", \"\", $cliente->telefone), 0, 2);\r\n                $telefone = substr(preg_replace(\"/[^0-9]/\", \"\", $cliente->telefone), 2);\r\n        //tenho que passar o cartão e criptografar.\r\n               \r\n                try {\r\n                    if ($cliente->tipo == 'F') {\r\n                        $customer = $moip->customers()->setOwnId(uniqid())\r\n                        ->setFullname($cliente->nome_razao)\r\n                        ->setEmail($cliente->email)\r\n                        ->setBirthDate('1988-12-30')\r\n                        ->setTaxDocument($cliente->cpf_cnpj, \"CPF\")\r\n                        ->setPhone($ddd, $telefone, 55)\r\n                        ->addAddress('BILLING',\r\n                            $cliente->endereco, $cliente->numero,\r\n                            $cliente->bairro, $cliente->cidade, $cliente->estado,\r\n                            $cliente->cep, 8)\r\n                        ->create();\r\n                    }elseif($cliente->tipo == 'J'){\r\n                        $customer = $moip->customers()->setOwnId(uniqid())\r\n                        ->setFullname($cliente->nome_razao)\r\n                        ->setEmail($cliente->email)\r\n                        ->setBirthDate('1988-12-30')\r\n                        ->setTaxDocument($cliente->cpf_cnpj, \"CNPJ\")\r\n                        ->setPhone($ddd, $telefone, 55)\r\n                        ->addAddress('BILLING',\r\n                            $cliente->endereco, $cliente->numero,\r\n                            $cliente->bairro, $cliente->cidade, $cliente->estado,\r\n                            $cliente->cep, 8)\r\n                        ->create();\r\n                    }\r\n             // Creating an order\r\n            $order = $moip->orders()->setOwnId($fatura->id)//ID PEDIDO\r\n            ->addItem($produto, 1, 'sku1',$valor)//nome do produto/qtd/descrição/valor valor sem pontuação exemplo 100 = 1,00 100,00\r\n            ->setCustomer($customer)\r\n            ->create();\r\n            \r\n            echo '<br><br>'.$hash.'<br>visualiza o hash';\r\n    // Creating payment to order\r\n            $payment = $order->payments()\r\n            ->setCreditCardHash($hash, $customer)\r\n            ->setInstallmentCount(1)\r\n            ->setStatementDescriptor('teste')\r\n            ->execute();\r\n\r\n\r\n            $this->configuracoes_model->salvaLog(4,null,$this->id_cliente,\"Pagamento para a fatura: [\".$fatura->id.\"] | Id da ordem:\".$order->getId().\" | ID do pagamento: \".$payment->getId().\" | Cartão de crédito: CARTÃO AQUI | Valor: \".number_format($payment->getAmount()->total, 2, \",\", \".\").\" | Método: Moip [\".$payment->getFundingInstrument()->method.\"]\",$this->ip);\r\n            $data = array(\r\n                \"id_fatura\" => $fatura->id,\r\n                \"id_forma_pagamento\" => $forma_pagamento->id,\r\n                \"data_vencimento\" =>$data_vencimento,\r\n                \"modoPagamento\" => 2,\r\n                \"codigoPedidoGateway\" => $order->getId(),\r\n                \"codigoPagamentoGateway\" => $payment->getId(),\r\n                \"status\" => 1\r\n            );\r\n            $this->configuracoes_model->store($data, null, 'faturas_historico');\r\n        } catch (\\Moip\\Exceptions\\UnautorizedException $e) {\r\n            echo $e->getMessage();\r\n        } catch (\\Moip\\Exceptions\\ValidationException $e) {\r\n            printf($e->__toString());\r\n        } catch (\\Moip\\Exceptions\\UnexpectedException $e) {\r\n            echo $e->getMessage();\r\n        }\r\n    }\r\n\r\n}\r\n\r\n\r\nO hash está sendo gerado corretamente, pois exibo ele normalmente. Se eu pego este hash gerado depois de uma tentativa e erro, e passo ele direto na função: ->setCreditCardHash('hash aqui', $customer) ele funciona. Isto me garante que não é um erro de chaves e token. O erro que recebo quando tento processar o pagamento e gerar o hash na hora é este:\r\n[0] The following errors ocurred: fundingInstrument.creditCard.hash: Não foi possível descriptografar o hash do cartão"},"comment":{"url":"https://api.github.com/repos/moip/moip-sdk-js/issues/comments/418423189","html_url":"https://github.com/moip/moip-sdk-js/issues/16#issuecomment-418423189","issue_url":"https://api.github.com/repos/moip/moip-sdk-js/issues/16","id":418423189,"node_id":"MDEyOklzc3VlQ29tbWVudDQxODQyMzE4OQ==","user":{"login":"somentelucas","id":4432322,"node_id":"MDQ6VXNlcjQ0MzIzMjI=","avatar_url":"https://avatars1.githubusercontent.com/u/4432322?v=4","gravatar_id":"","url":"https://api.github.com/users/somentelucas","html_url":"https://github.com/somentelucas","followers_url":"https://api.github.com/users/somentelucas/followers","following_url":"https://api.github.com/users/somentelucas/following{/other_user}","gists_url":"https://api.github.com/users/somentelucas/gists{/gist_id}","starred_url":"https://api.github.com/users/somentelucas/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/somentelucas/subscriptions","organizations_url":"https://api.github.com/users/somentelucas/orgs","repos_url":"https://api.github.com/users/somentelucas/repos","events_url":"https://api.github.com/users/somentelucas/events{/privacy}","received_events_url":"https://api.github.com/users/somentelucas/received_events","type":"User","site_admin":false},"created_at":"2018-09-04T15:59:41Z","updated_at":"2018-09-04T15:59:41Z","author_association":"COLLABORATOR","body":"@lucasrohers, onde você coloca `->setCreditCardHash($hash, $customer)`, o `$hash` está com  valor correto? Se tiver, consegue passar o valor do hash gerado?\r\n\r\nAlém disso, essa função espera um `$holder` como segundo parâmetro, e não um `$customer`, será que pode ser isso?"}}
{"actor":{"display_login":"somentelucas"}}