Precisa criptografar um campo do banco de dados e usar o valor em um link para acessar um site de terceiros

magento.stackexchange https://magento.stackexchange.com//questions/48939

  •  12-12-2019
  •  | 
  •  

Pergunta

Aqui está o que estamos tentando fazer:

  1. Temos um site de terceiros que estamos tentando configurar para funcionalidade de logon único.Para fazer isso, precisamos incorporar o número da conta do cliente (usamos o campo Número fiscal/IVA em "Informações da conta") na URL que leva ao site de terceiros.
  2. Este número precisa ser criptografado usando 3DES
  3. Eu adicionaria este link em algum lugar na página da conta do cliente.Eu sei como adicionar links às páginas onde preciso deles, mas esta tarefa específica está acima do meu nível de habilidade.

A documentação de terceiros observa que:O método HTTP Post é altamente recomendado (não sei realmente o que isso significa)

Minha pergunta é: como faço isso?

Como afirmei antes, isso está acima do meu nível de habilidade e minha empresa não tem fundos para transferir isso para outra pessoa cuidar.

Esta é uma implementação urgente, então estou tendo um colapso nervoso embaixo da minha mesa por causa disso.Quem ajudar será recompensado com +2 internets.Agradeço antecipadamente.

Foi útil?

Solução

Acabei descobrindo e na verdade não foi tão ruim quanto pensei que seria.Obrigado a Flyingmana por me ajudar a seguir na direção certa.Vou explicar o mais detalhadamente possível para que outros n00bs como eu possam aprender.

Primeiro criei uma função para criptografar conforme necessário e coloquei no arquivo index.php:

function encryptionfunction($string)
{
$key = 'XXXXX'; // Had to be 24 in length for 3DES cipher
$iv = 'XXXXX'; // Had to be 8 in length

// Encrypt String
$encrypted_string = mcrypt_encrypt(MCRYPT_3DES, $key, $string, MCRYPT_MODE_CBC, $iv);
$encoded_string = base64_encode($encrypted_string);

return $iv . $encoded_string;
}

Eu sei que esta provavelmente não é a melhor maneira de executar funções definidas pelo usuário no Magento, mas eu precisava que isso fosse feito rapidamente.

Além disso, você pode notar que o IV não é gerado aleatoriamente a cada solicitação.Parece um requisito na documentação que seja um valor estático... com base no que li, isso parece meio estúpido, pois é uma preocupação de segurança, então terei que conversar com os desenvolvedores sobre isso.

Consegui usar o método POST conforme necessário, colocando-o em um formulário como pode ser visto abaixo:

<form method="post" action="https://securewebsite/staticURLstuff<?php echo encryptionfunction($this->getCustomer()->getTaxvat()) ?>MOREURLSTUFF">
<div>
<button type="submit" title="Single Sign on Site" class="button">
<span><span>Single Sign on Site</span></span>
</div>
</form>

Eu testei isso várias vezes e parece funcionar.Se alguém mais experiente encontrar algum problema com o que fiz ou imprecisões em minha explicação, entre em contato.Obrigado.

Outras dicas

Esta certeza não é a melhor resposta possível, mas deve ajudar a seguir o caminho certo ou ser uma base para que outros possam dar uma resposta mais detalhada.

Primeiro, a menção ao método HTTP Post.Esta é uma parte muito importante, pois trata da natureza básica de como os sites funcionam.Os métodos HTTP mais conhecidos são Get e Post, mais utilizados em contexto de formulários e ajax.Mas a Wikipedia com certeza pode descrever isso muito melhor http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods

Para a criptografia você usa o mcrypt, que já é exigido pelo magento, para que você possa confirmar sua existência.se você procurar pela cifra $, é MCRYPT_3DES.O método exato que você usará é mcrypt_encrypt.

Para a Etapa 3, atualmente não sei como responder, talvez ainda falte alguma informação de sua parte.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a magento.stackexchange
scroll top