• França
lyra.com
Procurando
Categoria
Tags
pagina inicial
Suporte técnico

Pagamento com um código QR

Caso de uso

Usando o serviço Web Charge/CreateQRCode, o comerciante cria um código QR.

Depois de criado e exibido, o comprador escaneia o QR Code para pagar.

Lista de meios de pagamento


Payconiq

Teste

Teste o Web Service Charge/CreateQRCode em nosso playground.

Campos


Obligatoires
SOBRENOME Descrição
amount Valor a ser pago, expresso na menor unidade da moeda (o centavo para o BRL).
currency Moeda do pagamento. Code ISO 4217 alpha-3. Ex: "EUR” para o euro.
paymentMethodType Escolha do método de pagamento: "PAYCONIQ"
customer.email Endereço e-mail do comprador.

Recommandés
SOBRENOME Descrição
orderId Referência do pedido.
validityPeriod Período de validade em segundos. Também pode ser configurado no app.
size Taille.
Valores possíveis: S, M (padrão), L.
transactionOptions.paymentMethodOptions.paymentSource Procedência do pagamento.
Valores possíveis: 'EC' (padrão), 'INSTORE', 'APP'.
transactionOptions.paymentMethodOptions.deviceSerialNumber Número de série do dispositivo.
Campo obrigatóriosetransactionOptions.paymentMethodOptions.paymentSourcetem o valorINSTORE.
transactionOptions.paymentMethodOptions.mid Número de contrato adquirente.

Solicitação


Exemplo de solicitação
/pt-BR/rest/V4.0/api/kb/authentication.html
https://api.lyra.com/api-payment/V4/Charge/CreateQRCode
{
  "amount": 10000,
  "currency": "EUR",
  "paymentMethodType": "[SELECTED PAYMENT METHOD]",
  "orderId": "myOrderId-1234",
  "customer": {
    "email": "sample@example.com"
  }
}
<!-- <pre data-language="json" data-market="es-PE">&#010;{&#010;    &quot;amount&quot;: 200050,&#010;    &quot;currency&quot;: &quot;PEN&quot;,&#010;    &quot;orderId&quot;: &quot;myOrderId-999999&quot;,    &#010;    &quot;channelOptions&quot;: {&#010;      &quot;channelType&quot;: &quot;MAIL&quot;,&#010;      &quot;mailOptions&quot;: {&#010;        &quot;recipient&quot;: &quot;sample@example.com&quot;&#010;      }&#010;    },&#010;    &quot;paymentReceiptEmail&quot;: &quot;sample@example.com&quot;,&#010;    &quot;expirationDate&quot;: &quot;2020-04-20T20:13:26+02:00&quot;,&#010;    &quot;locale&quot;: &quot;es_PE&quot;,&#010;    &quot;dataCollectionForm&quot;: &quot;false&quot;&#010;}&#010;</pre>
{
    "amount": 200050,
    "currency": "ARS",
    "orderId": "myOrderId-999999",    
    "channelOptions": {
      "channelType": "MAIL",
      "mailOptions": {
        "recipient": "sample@example.com"
      }
    },
    "paymentReceiptEmail": "sample@example.com",
    "expirationDate": "2020-04-20T20:13:26+02:00",
    "locale": "es_AR",
    "dataCollectionForm": "false"
}
{
    "amount": 200050,
    "currency": "COP",
    "orderId": "myOrderId-999999",   
    "channelOptions": {
      "channelType": "MAIL",
      "mailOptions": {
        "recipient": "sample@example.com"
      }
    },
    "paymentReceiptEmail": "sample@example.com",
    "expirationDate": "2020-04-20T20:13:26+02:00",
    "locale": "es_CO",
    "dataCollectionForm": "false"
}
{
    "amount": 200050,
    "currency": "BRL",
    "orderId": "myOrderId-999999",   
    "channelOptions": {
      "channelType": "MAIL",
      "mailOptions": {
        "recipient": "sample@example.com"
      }
    },
    "paymentReceiptEmail": "sample@example.com",
    "expirationDate": "2020-04-20T20:13:26+02:00",
    "locale": "pt_BR",
    "dataCollectionForm": "false"
}
-->
/**
 * I initialize the PHP SDK
 */
require_once __DIR__ . '/vendor/autoload.php';
require_once __DIR__ . '/keys.php';
require_once __DIR__ . '/helpers.php';

/** 
 * Initialize the SDK 
 * see keys.php
 */
$client = new Lyra\Client();

/**
 * I create a formToken
 */
$store = array("amount" => 250, 
"currency" => "EUR", 
"orderId" => uniqid("MyOrderId"),
"customer" => array(
  "email" => "sample@example.com"
));
$response = $client->post("V4/Charge/CreatePayment", $store);

/* I check if there are some errors */
if ($response['status'] != 'SUCCESS') {
    /* an error occurs, I throw an exception */
    display_error($response);
    $error = $response['answer'];
    throw new Exception("error " . $error['errorCode'] . ": " . $error['errorMessage'] );
}

/* everything is fine, I extract the formToken */
$formToken = $response["answer"]["formToken"];

?>
/**
 * I initialize the PHP SDK
 */
require_once __DIR__ . '/vendor/autoload.php';
require_once __DIR__ . '/keys.php';
require_once __DIR__ . '/helpers.php';

/** 
 * Initialize the SDK 
 * see keys.php
 */
$client = new Lyra\Client();

/**
 * I create a formToken
 */
$store = array("amount" => 250, 
"currency" => "EUR", 
"orderId" => uniqid("MyOrderId"),
"customer" => array(
  "email" => "sample@example.com"
));
$response = $client->post("V4/Charge/CreatePayment", $store);

/* I check if there are some errors */
if ($response['status'] != 'SUCCESS') {
    /* an error occurs, I throw an exception */
    display_error($response);
    $error = $response['answer'];
    throw new Exception("error " . $error['errorCode'] . ": " . $error['errorMessage'] );
}

/* everything is fine, I extract the formToken */
$formToken = $response["answer"]["formToken"];

?>

Resposta

Há três tipos de resposta no campo qrCode.qrType :

  • URL
  • DATA
  • IMAGEM(codificado embase64)

Exemplo de resposta

URL
{
    "webService": "Charge/CreateQRCode",
    "version": "V4",
    "applicationVersion": "6.10.0",
    "status": "SUCCESS",
    "answer": {
            "uuid": "3e14c758e0464a1f85f6de287689306d",
            "amount": 10000,
            "currency": "EUR",
            "orderId": "myOrderId-1234",
            "qrCode": {
              "expirationDate": "2024-02-22T09:55:44+00:00",
              "qrType": "URL",
              "value": "https://secure.lyra.com/checkout(...)entID=253965149&s=M",
              "copyPasteValue": null,
              "_type": "URL"
          },
            "_type": "V4/Charge/CreateQRCodeResponse"
        },    
    (...)   
    "_type": "V4/WebService/Response" 
}

O campo qrCode.value contém uma URL. O comprador clica na URL para exibir o QR Code.

O comerciante também pode criar um QR Code com a URL gerada. Exemplo de implementação em PHP :

<?php
include('phpqrcode/qrlib.php'); // Load the PHP QR Code librairy
$url='qrCode.value'; // Retrieve the answer.qrCode.value
QRcode::png($url, 'image-qrcode.png'); // Create the QR Code
?>
DATA
{
    "webService": "Charge/CreateQRCode",
    "version": "V4",
    "applicationVersion": "6.10.0",
    "status": "SUCCESS",
    "answer": {
            "uuid": "3e14c758e0464a1f85f6de287689306d",
            "amount": 10000,
            "currency": "EUR",
            "orderId": "myOrderId-1234",
            "qrCode": {
                "expirationDate": "2024-01-04T09:50:27+00:00",
                "qrType": "DATA",
                "value": "00020101021226(...)f3f8-44fa-805d-3552f3ae759c5204000053039865802BR5925LYRA NETWORK TEL M PAGAME6009SAO PAULO62070503***630426BD",
                "_type": "DATA"
            },
            "_type": "V4/Charge/CreateQRCodeResponse"
        },    
    (...)   
    "_type": "V4/WebService/Response" 
}

Use o valor do campoqrCode.valuepara criar o código QR.
Exemplo de implementação emPHP:

<?php
include('phpqrcode/qrlib.php'); // Load the PHP QR Code librairy
$value='qrCode.value'; // Retrieve the answer.qrCode.value
QRcode::png($value, 'image-qrcode.png'); // Create the QR Code
?>
IMAGE (encodée en base64 )
{
    "webService": "Charge/CreateQRCode",
    "version": "V4",
    "applicationVersion": "6.10.0",
    "status": "SUCCESS",
    "answer": {
            "uuid": "3e14c758e0464a1f85f6de287689306d",
            "amount": 10000,
            "currency": "EUR",
            "orderId": "myOrderId-1234",
            "qrCode": {
                "expirationDate": "2024-01-04T09:50:27+00:00",
                "qrType": "IMAGE",
                "value": "iVBORw07(...)wewJpltJrLXvdENKGtEvQpazhQYeMy3B4up5XyA64lTSD+Apcr0Opbr760ZEKiSLRj8r/F3AH5oAdICpAVIC5A8gD9G7EWe3QLtLAAAAABJRU5ErkJggg==",
                "_type": "IMAGE"
            },
            "_type": "V4/Charge/CreateQRCodeResponse"
        },    
    (...)   
    "_type": "V4/WebService/Response" 
}

Recupere o valor do campo ,qrCode.value, codificado em ,base64, e coloque ele dentro de um tag img.

<div>
   <img src="data:image/png;base64,iVBORw07(...)wewJpltJrLXvdENKGtEvQpazhQYeMy3B4up5XyA64lTSD+Apcr0Opbr760ZEKiSLRj8r/F3AH5oAdICpAVIC5A8gD9G7EWe3QLtLAAAAABJRU5ErkJggg==" alt="QR Code">
</div>

Encontre a descrição e todos os campos em nosso playground: QRCodeTransaction

Gerenciamento dos erros

Tableau des erreurs
Código Descrição
INT_009 Formato do campo amount inválido ou campo não enviado.
INT_010 Formato do campo currency inválido ou campo não enviado.
INT_050 Parâmetro strongAuthentication é inválido.
INT_815 O parâmetro descrição está comprido demais. O comprimento máximo é de 65 caracteres.
INT_856 Parâmetro local é inválido.
INT_858 Parâmetro taxRate é inválido.
INT_869 Parâmetro taxAmount é inválido.
PSP_519 Moeda desconhecida.
PSP_606 Moeda não suportada pelo contrato.
PSP_1091 A criação do QR code não foi sucedida no app.
PSP_1094 Erro ao criar o código QR.
PSP_1095 Número de série do dispositivo (campotransactionOptions.paymentMethodOptions.deviceSerialNumber) éobrigatórioSe o campotransactionOptions.paymentMethodOptions.paymentSourcetem o valor 'INSTORE'.

Análise do resultado do pagamento

Para saber o resultado do pagamento, implemente o URL de notificação no final do pagamento (também conhecido como IPN).

  1. Informe apenas o URL da notificação na seção API REST (TEST ou PRODUCTION): Procedimento.
  2. Analisar o IPN: Procedimento.
Jobs
Legal
GDPR
25.22-1.11