Resumindo: a sua aplicação ou website abre um URL payment://, Payment for Stripe processa o pagamento e, em seguida, abre o seu URL de retorno com o resultado. Sem SDK. Sem trabalho no servidor. Funciona da mesma forma no iPhone e no Android, com algumas diferenças descritas abaixo.
A referência completa encontra-se em paymentforstripe.com/api.
Como funciona
- A sua aplicação abre uma URL
payment://com parâmetros. - Payment for Stripe inicia e configura a venda. O comerciante recebe o pagamento com um leitor, Tap to Pay) ou com um cartão dactilografado.
- Ao concluir, a aplicação abre o URL
callbackcom o resultado adicionado como parâmetros de consulta.
O comerciante precisa de estar ligado. Se um link chegar enquanto outra cobrança estiver em curso, a aplicação irá rejeitá-lo e o seu retorno de chamada receberá error=charge_in_progress.
Criar uma cobrança: pagamento://novo
Um pagamento único no valor que definir.
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
amount
|
inteiro | Sim | Valor na unidade mais pequena da moeda, superior a 0. 1000 = $10,00. |
currency
|
fio | Não | Código ISO de três letras, como usd ou eur. Se omitir este código, a aplicação utilizará a moeda já configurada. |
description
|
fio | Não | Descrição da cobrança. Codifique-a em URL. |
customer
|
fio | Não | ID de cliente Stripe existente ( cus_…). customer_id também funciona. Quando definido, email e name são ignorados. |
email
|
fio | Não | E-mail do cliente. Cria um novo cliente. |
name
|
fio | Não | Nome do cliente. Codifique-o em URL. Cria um novo cliente. |
metadata
|
fio | Não | Objeto JSON codificado em URL contendo pares chave-valor, adicionado ao pagamento. Aplicam-se as limitações de metadados do Stripe. |
callback
|
fio | Não | URL a abrir quando a promoção terminar. |
autoprocess
|
booleano | Não | true ignora o teclado e inicia o carregamento imediatamente. O valor por defeito false. |
auto_return
|
booleano | Não | true abre a função de callback assim que o resultado é conhecido. O valor por defeito é false: a função de callback aguarda até que o comerciante feche o ecrã de resultados. |
payment://new?amount=2500¤cy=eur&description=Coffee%20and%20pastry payment://new?amount=3500&autoprocess=true&auto_return=true&callback=myapp://payment-complete Um link com um amount em falta, zero ou não numérico será ignorado.
Crie uma fatura a partir do seu catálogo: payment://cart
Preenche o carrinho com os preços do teu catálogo de produtos Stripe. O comerciante efetua então a cobrança normalmente, e a venda é guardada no Stripe como uma fatura paga com esses artigos. Não envia uma fatura por e-mail ao seu cliente.
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
prices
|
fio | Sim | Pares price_id:quantity separados por vírgula, como por exemplo price_abc:2,price_xyz:1. line_items também funcionam. |
coupon
|
fio | Não | Código do cupão Stripe para aplicar no carrinho. |
customer
|
fio | Não | ID de cliente Stripe existente. customer_id também funciona. |
email
|
fio | Não | E-mail do cliente. Cria um novo cliente. |
name
|
fio | Não | Nome do cliente. Codifique-o em URL. |
metadata
|
fio | Não | Objeto JSON codificado em URL contendo pares chave-valor. |
callback
|
fio | Não | URL a abrir quando a promoção terminar. |
autoprocess
|
booleano | Não | true inicia a cobrança assim que todos os preços (e o cupão) são carregados. |
auto_return
|
booleano | Não | Igual ao anterior. O valor por defeito false. |
payment://cart?prices=price_coffee:2,price_muffin:1&email=customer@example.com Não envie amount juntamente com prices. O total é calculado a partir dos preços, e uma ligação com ambos será ignorada. Os preços ocultos com `payment_hidden` ainda funcionam aqui.
Pagar uma fatura existente: pagamento://fatura
Recebe pagamentos presenciais referentes a faturas Stripe em aberto. O valor, a moeda, o cliente e os impostos são todos provenientes da fatura. Em caso de sucesso, a aplicação marca a fatura como paga. Funciona em iPhone e Android.
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id
|
fio | Sim | ID da fatura Stripe. Deve começar por in_. Enviar uma fatura aberta. No iPhone, um rascunho é finalizado primeiro. No Android, um rascunho é rejeitado com error=invoice_state_changed. |
metadata
|
fio | Não | Objeto JSON codificado em URL, adicionado ao PaymentIntent. |
callback
|
fio | Não | URL a abrir quando a venda estiver concluída. Obtém invoice_id e payment_intent_id em caso de sucesso. |
autoprocess
|
booleano | Não | true inicia a cobrança apenas após a aprovação da fatura, quando um leitor de cartões estiver ligado. |
auto_return
|
booleano | Não | Igual ao anterior. O valor por defeito false. |
payment://invoice?id=in_1ABC123xyz&autoprocess=true&callback=myapp://invoice-paid A fatura define a venda, pelo que qualquer um dos amount, currency, customer, customer_id, email, name, ` description, coupon, prices ou line_items resulta no link rejeitado com error=invoice_invalid_param. As faturas pagas, anuladas, não cobráveis, com valor 0, ligadas a uma assinatura ou configuradas para cobrar um método de pagamento padrão são também rejeitadas, cada uma com o seu próprio erro invoice_… `.
O retorno de chamada
A aplicação adiciona estes elementos ao seu URL de retorno de chamada:
| Nome | Tipo | Enviado | Descrição |
|---|---|---|---|
status
|
fio | Sempre | success, error ou cancelled. |
charge_id
|
fio | Sobre o sucesso | O ID do pagamento. No iPhone, é a cobrança Stripe ( ch_…). No Android, é o PaymentIntent ( pi_…). |
stripe_charge_id
|
fio | Apenas para Android | A cobrança Stripe ( ch_…). |
payment_intent_id
|
fio | Sobre o sucesso | O PaymentIntent. O iPhone envia-o apenas para payment://invoice. O Android envia-o para todos os pagamentos com cartão. |
invoice_id
|
fio | Links para faturas | A fatura paga, para payment://invoice. |
amount
|
inteiro | Sobre o sucesso | Valor cobrado, na unidade mais baixa. |
currency
|
fio | Sobre o sucesso | Código ISO em minúsculas. |
error
|
fio | Em caso de erro | Um código curto como charge_in_progress ou invoice_already_paid, ou uma mensagem legível para um cartão recusado. |
myapp://payment-complete?status=success&charge_id=ch_3Qx…&success=true&amount=3500¤cy=usd&chargeId=ch_3Qx… Necessita do mesmo ID em ambas as plataformas? Leia primeiro stripe_charge_id e depois utilize o charge_id alternativa.
Para integrações mais antigas, a aplicação também envia success=true, chargeId, cancelled=true e error[message]. O novo código deve ler status.
Um cancelamento inicia a função de retorno de chamada imediatamente. O sucesso ou erro de uma cobrança aguarda o fecho do ecrã de resultados pelo comerciante, a menos que passe auto_return=true. No iPhone, uma venda a dinheiro nunca inicia a função de retorno de chamada, uma vez que nada foi cobrado.
Codificação de URL
- Codifique todos os valores que contenham espaços ou símbolos. Os espaços passam
%20,{e}passam%7Be%7D,"passa a%22,:passa a%3A. - Se o seu URL de retorno de chamada tiver a sua própria string de consulta, codifique todo o URL de retorno de chamada para que o caractere
&não separe o seu linkpayment://. - As vírgulas e os dois pontos nos
pricespodem manter-se como estão.
Os metadados {"order_id":"1234","location":"Store A"} passam a ser:
payment://new?amount=10000&description=Invoice%20%231234&metadata=%7B%22order_id%22%3A%221234%22%2C%22location%22%3A%22Store%20A%22%7D O formato antigo metadata[order_id]=1234 também funciona.