Integração com o seu serviço

Integração com o seu serviço

Documentos do comerciante

Criar pedido

Usar método public/exchanger/order/create

Nome Descrição Modelo
routeId rota de identificação ObjectID
partner parceiro de link STRING
amount Montante em FLOAT
fromValues[0][key] nome da chave ObjectID
fromValues[0][value] valor para este campo STRING
toValues[0][key] nome da chave STRING
toValues[0][value] valor para este campo STRING
routeValues[0][key] nome da chave ObjectID
routeValues[0][value] valor para este campo STRING
lang lang client (ru,en) STRING
agreement acordo BOOLEAN
hideOutData requisitos de segurança BOOLEAN
clientCallbackUrl um retorno de chamada quando o aplicativo for concluído o cliente verá um botão para retornar ao site e o cliente será direcionado para esta URL ?status=success ou ?status=error STRING
ipnUrl URL de notificação de pagamento instantâneo (será chamado quando o pedido mudar de status) STRING
ipnSecret string para criar hash seguro no ipn url STRING

Você pode encontrar a documentação do sistema de autorização em seu gabinete pessoal. Mais informações sobre como trabalhar com métodos e dados adicionais podem ser encontradas em

IPN (Notificação sobre a alteração do status da solicitação de pagamento)

Para receber uma notificação de alteração de status do pedido ao criar um pedido, você precisa enviar parâmetros adicionais:

  • clientCallbackUrl - um retorno de chamada quando o aplicativo for concluído o cliente verá um botão para retornar ao site e o cliente será direcionado para esta URL
  • hideOutData - ocultar os detalhes do destinatário
  • ipnUrl - Link HTTP/HTTPS para notificar seu servidor.
  • ipnSecret - String aleatória para criar uma assinatura de solicitação (para manter a integridade da solicitação)
  1. A solicitação será enviada pelo método POST
  2. O IPN será enviado uma vez
  3. A entrega do IPN não é garantida (se o servidor não respondeu ao pedido, não será reenviado)

Exemplo de IPN

  • POST
  • ['Content-Type'] = 'application/x-www-form-urlencoded'


  • orderUID :Number() - ordem uid
  • orderId :String(ObjectId) -ordem id
  • newStatus :String() - ordem status atual
  • inAmount :String(number) - order in sum
  • outAmount :String(number) - order out sum
  • xml_from :String() - ordem uid
  • xml_to :String() - ordem uid
  • timestamp :Number() - tempo unix ipn notificar
  • toValues :Array([{key,name,value}]) - requisitos do pedido

Lista de status

  • new - nova ordem
  • waitPayment - aguarde o pagamento do usuário
  • errorPayment - erro de pagamento do usuário (erro de envio do comerciante)
  • inProgress - em andamento (espera administrador ou pagamento do aplicativo)
  • inProgressPayout - em linha para pagamento (pagamento aceito com sucesso) (se configurado em moeda pagamento automático será inicializado)
  • errorPayout - erro de pagamento (ocorreu um erro durante o pagamento)
  • hold - congelado (problemas com o aplicativo)
  • done - pedido concluído com sucesso
  • returned - a encomenda foi paga mas nem todas as condições de troca foram cumpridas e os meios de devolução ao remetente
  • deleted - pedido excluído (cancelado)

Verificação da soma de verificação da solicitação (IPN)

sha256(orderId:newStatus:inAmount:outAmount:xml_from:xml_to:timestamp:ipnSecret)

        
const stringForHash = orderId+":"+newStatus+":"+inAmount+":"+outAmount+":"+xml_from+":"+xml_to+":"+timestamp+":"+ipnSecret;
// example string for hash 5d8e6002b80b7b4cd75a6424:inProgress:2:317.42:ETH:WMZ:1571328406072:SECRET123

const hash = crypto.createHash('sha256').update(stringForHash).digest('hex')
// example hash af3acf947e6f0e0f2c267e300b8582e504dba12d1f2d058652b7414163c09f48
        
      

Controle de pagamento

  1. Se você precisar controlar o status das solicitações, crie-as usando autorização, todas as solicitações serão refletidas em seu gabinete pessoal;
  2. Você pode salvar o UID da solicitação e o segredo e ir manualmente para a solicitação especificando esses dados na barra de endereço

Pagamento

  1. Você pode usar / pagamento / para mostrar a página de pagamento

    // schema
    https://www.novachange.cc/user-lang/payment/order-uid/order-secret
    // example result
    https://www.novachange.cc/en/payment/1409/dGqwF2M2eBPaSN1G5ljMS1cb
  2. Além disso, você pode simplesmente fornecer um link para a troca, pois é visto por todos os clientes de acordo com o mesmo esquema especificado na primeira variante, exceto /payment/ deve ser substituído por /order/
  3. Existem parâmetros no método que permitem exibir os dados de pagamento ou a forma de pagamento em seu site, você pode usá-los. IMPORTANTE: se for o método com pagamento manual você precisa atualizar o status do pedido de waitPayment para inProgress após o pagamento.