Geração de assinatura
Preparação (Preparation)
Os comerciantes precisam se registrar com um número de comerciante e criar um aplicativo de pagamento através do painel do comerciante (backstage) para obter APP_ID e APP_SECRECT.
Condição (Condition)
Todas as interfaces do método POST neste documento precisam validar a assinatura, e outras interfaces não precisam ser validadas no momento.
Geração (Generation)
A string de assinatura tem quatro linhas, um parâmetro por linha. A linha termina com \n (quebra de linha, o valor de codificação ASCII é 0x0A), e não adicione \n na última linha. Se o parâmetro em si terminar com \n, você também precisa anexar um \n.
URL\n
Request timestamp\n
Request random string\n
Request message bodyVamos tomar a consulta de pedido (order inquiry) como exemplo.
O primeiro passo é obter a URL absoluta da requisição e remover a parte do nome de domínio para obter a URL assinada participante. Se houver parâmetros de consulta na requisição, a URL deve ser anexada com '? ' e a string de consulta correspondente.
/v1/transaction/queryO segundo passo é obter o carimbo de data/hora (milissegundos) atual do sistema quando a requisição é iniciada. Ou seja, o número total de segundos desde 00:00:00 GMT em 1º de janeiro de 1970 até o presente, como o carimbo de data/hora da requisição. A plataforma se recusará a processar requisições feitas há muito tempo, por favor, mantenha a hora do próprio sistema do comerciante precisa.
O terceiro passo é gerar uma string aleatória (random string) de 32 bits.
O quarto passo é obter o corpo da mensagem de requisição na requisição (request body).
O quinto passo é construir a string de assinatura da requisição de acordo com as regras anteriores, da seguinte forma:
Criptografia (Encryption)
Tome o processo de criptografia javascript como exemplo:
Exemplo após criptografia:
Concatenar (Concatenate)
O formato de junção das informações de assinatura é o seguinte:
app_id=APP_ID, mch_id=ID do Comerciante, nonce_str=A string aleatória gerada na etapa 3, timestamp=O carimbo de data/hora gerado na etapa 2, signature=String de assinatura criptográfica.
Cabeçalho HTTP (HTTP header)
A API do documento passa a assinatura por meio de um cabeçalho HTTP Authorization. Authorization consiste em duas partes: tipo de autenticação e informações de assinatura. O tipo de autenticação suporta apenas TTPAY-AES-256-ECB no momento.
Cabeçalho de autorização conforme segue: (Notas: Exemplo porque a formatação pode conter quebras de linha, os dados reais devem estar em uma linha)
Finalmente, podemos criar uma requisição HTTP que contém uma assinatura.
Código de demonstração (Demo code)
Última atualização