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 |
---|---|
Valor a ser pago, expresso na menor unidade da moeda (o centavo para o BRL). | |
Moeda do pagamento. Code ISO 4217 alpha-3. Ex: "EUR” para o euro. | |
Escolha do método de pagamento: "PAYCONIQ" | |
Endereço e-mail do comprador. |
Recommandés
SOBRENOME | Descrição |
---|---|
Referência do pedido. | |
Período de validade em segundos. Também pode ser configurado no app. | |
size | Valores possíveis: S, M (padrão), L. |
Procedência do pagamento. Valores possíveis: 'EC' (padrão), 'INSTORE', 'APP'. | |
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
{ "amount": 10000, "currency": "EUR", "paymentMethodType": "[SELECTED PAYMENT METHOD]", "orderId": "myOrderId-1234", "customer": { "email": "sample@example.com" } }
<!-- <pre data-language="json" data-market="es-PE">
{
 "amount": 200050,
 "currency": "PEN",
 "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_PE",
 "dataCollectionForm": "false"
}
</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 em
base64
)
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.value
para criar o código QR.
Exemplo de implementação em
<?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 |
---|---|
Formato do campo amount inválido ou campo não enviado. | |
Formato do campo currency inválido ou campo não enviado. | |
Parâmetro strongAuthentication é inválido. | |
O parâmetro descrição está comprido demais. O comprimento máximo é de 65 caracteres. | |
Parâmetro local é inválido. | |
Parâmetro taxRate é inválido. | |
Parâmetro taxAmount é inválido. | |
Moeda desconhecida. | |
Moeda não suportada pelo contrato. | |
A criação do QR code não foi sucedida no app. | |
Erro ao criar o código QR. | |
Número de série do dispositivo (campotransactionOptions.paymentMethodOptions.deviceSerialNumber ) éobrigatórioSe o campotransactionOptions.paymentMethodOptions.paymentSource tem 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).
- Informe apenas o URL da notificação na seção API REST (TEST ou PRODUCTION): Procedimento.
- Analisar o IPN: Procedimento.