Documentação/Referência da API

API REFERENCE

Notificações assíncronas

Durante todo o ciclo de vida de um pedido, enviamos uma notificação assíncrona para notify_url a cada alteração de status. O endpoint receptor deve usar https. As notificações incluem uma assinatura e parâmetros de pagamento (no formato json).

Dica

  1. O URL de notificação é o notify_url enviado. Após a conclusão do pagamento, a YabandPay envia para esse URL as informações relevantes sobre o pagamento e o usuário. A instituição adquirente terceirizada deve receber a notificação e verificar a assinatura antes de realizar qualquer outra ação.
  1. Durante as trocas de notificações entre servidores, se a instituição adquirente terceirizada retornar uma resposta que não indique sucesso ou se a solicitação expirar, a YabandPay considerará a notificação malsucedida. A YabandPay tentará reenviar notificações periodicamente de acordo com sua estratégia de novas tentativas para maximizar a probabilidade de entrega, mas não garante a entrega final.
  1. Como as notificações do servidor podem ser reenviadas, o mesmo aviso pode chegar várias vezes ao sistema parceiro. O sistema parceiro deve tratar corretamente as notificações duplicadas. Recomendamos verificar primeiro o estado dos dados comerciais correspondentes para determinar se a notificação já foi processada. Processe-a apenas se ainda não tiver sido tratada; caso contrário, retorne sucesso imediatamente. Antes de verificar e processar os dados comerciais, use bloqueios de dados para controlar a concorrência e evitar inconsistências causadas pela reentrada da função.
  1. A YabandPay envia notificações assíncronas a partir dos endereços IP abaixo. Recomendamos adicioná-los à lista de permissões do firewall. 8.211.41.31 8.211.10.244 8.211.8.123

1. Notificações assíncronas de pagamento

ParâmetroTipoDescrição
signStringSignature
typeStringpayment
userStringUID ou e-mail da conta de caixa
amountStringValor do pagamento enviado
tip_amountStringGorjeta incluída no valor total
trade_idStringNúmero de transação YabandPay
currencyStringMoeda de pagamento enviada
settlement_amountStringValor na moeda de liquidação
settlement_currencyStringMoeda de liquidação
exchange_rateStringValor do pagamento/valor de liquidação
amount_cnyStringValor do pagamento em CNY
settlement_rateStringTaxa de câmbio de liquidação CNY
order_idStringNúmero do pedido do estabelecimento
transaction_idStringNúmero do pedido retornado pelo método de pagamento, por exemplo, número da transação WeChat Pay ou Alipay+. Na maioria dos casos, é igual a acquirer_id.
acquirer_idStringAcquirer Reference Number (ARN)
descriptionStringDescrição do pedido
createDateStringHora de criação do pedido
stateStringStatus do pagamento: Processing, Paid, Cancelled, Expired, Verify, Authorized, Declined, Failed
demoStringCampo definido pelo cliente
out_trade_noStringNúmero interno do pedido no sistema de transações
sub_pay_methodStringMétodo de pagamento: WeChat Pay, Alipay+ etc. (consulte as descrições dos métodos de pagamento)
pay_methodStringTipo de pagamento: offline, online
paid_timeStringHorário do pagamento
yb_transaction_idStringID exclusivo da transação YabandPay
3ds_statusStringstatus 3ds
3ds_trxidStringID exclusivo 3ds
3ds_versionStringversão 3ds
3DS response statuses:
ParâmetroTipoDescrição
AStringTentativa de processamento realizada; não autenticado/verificado, mas há comprovante de tentativa de autenticação/verificação.
CStringDesafio necessário; é necessária autenticação adicional.
DStringDesafio necessário; autenticação desacoplada confirmada.
IStringApenas informativo; preferência do estabelecimento por desafio reconhecida.
NStringNão autenticado/conta não verificada; transação negada.
RStringAutenticação/verificação da conta rejeitada; o emissor rejeita a autenticação/verificação e solicita que não se tente a autorização.
UStringNão foi possível realizar a autenticação/verificação da conta devido a um problema técnico ou outro problema.
YStringAutenticação/verificação da conta bem-sucedida.
Exemplo de notificação assíncrona:
{
	"sign": "YOUR_SIGNATURE",
	"data": {
		"type": "payment",
		"user": "YOUR_CASHIER_UID",
		"order_id": "YOUR_ORDER_ID",
		"trade_id": "8a8aa7c7-66d7-e2cc-e2a6-fff7c77aaefd",
		"transaction_id": "4200000298201905227377147799",
		"acquirer_id": "4200000298201905227377147799",
		"yb_transaction_id": "c8823612-383f-35fc-f28d-c0eae039e870",
		"amount": "1.00",
		"tip_amount": "0.10",
		"currency": "EUR",
		"settlement_amount": "1.00",
		"settlement_currency": "EUR",
		"exchange_rate": "1",
		"amount_cny": "0.77",
		"settlement_rate": "7.779779",
		"description": "yaband test",
		"createDate": "1558510731",
		"pay_method": "online",
		"state": "paid",
		"demo": "test",
		"out_trade_no": "a4d7684a-e326-44c1-bea5-0601f7a9b191",
		"sub_pay_method": "WeChat Pay",
		"paid_time": "1603355159",
		"3ds_status": "Y",
		"3ds_trxid": "1d0c6eb3-6282-4cf9-9549-884410918d2d",
		"3ds_version": "2.2.0"
	}

}

2. Notificações assíncronas de reembolso

ParâmetroTipoDescrição
signStringSignature
typeStringrefund
userStringUID ou e-mail da conta de caixa
pay_methodStringonline ou offline para o pedido de pagamento original
sub_pay_methodStringMétodo de pagamento do pedido original: WeChat Pay, Alipay+ etc. (consulte as descrições dos métodos de pagamento)
refund_idStringNúmero do reembolso
m_refund_idStringNúmero do pedido de reembolso do estabelecimento informado ao iniciar o reembolso
transaction_idStringNúmero da transação
acquirer_idStringNúmero da transação da instituição de liquidação
refund_amountStringValor do reembolso enviado
refund_currencyStringMoeda do reembolso
order_idStringNúmero do pedido do estabelecimento
refund_descriptionStringDescrição do pedido
refund_timeStringHora do reembolso
stateStringStatus do reembolso: to-be-approval, refund pending, refund processing, refunded, refund error, refund failed, refund cancelled
Notification information:
{
	"sign": "YOUR_SIGNATURE",
	"data":  {
		"type": "refund",
		"user": "YOUR_CASHIER_UID",
		"refund_id": "b20d3668-d71f-432f-8809-f84f0d9139d4",
		"m_refund_id":"20240301143029616187",
        "transaction_id":"cf483d9e-637c-a92d-0716-5b8199d10f8c",
		"refund_amount": "1.00",
		"refund_currency": "EUR",
		"order_id": "YOUR_ORDER_ID",
		"refund_description": "test",
		"refund_time": "0",
		"state": "refunded",
		"pay_method": "online",
		"sub_pay_method": "WeChat Pay"}
}   

Dica

  1. Após o envio de um reembolso, retornamos o status refund processing.
  1. Quando o reembolso for concluído, enviaremos uma notificação com o status refunded.

3. Frequência das notificações assíncronas

Atenção: a resposta à notificação deve retornar o status-code 200 e “ok” no corpo. Se “ok” não for retornado, enviaremos a notificação novamente.

A frequência das notificações é a seguinte:

Notification attemptInterval
110s
230s
360s
4300s
53600s
...3600s
153600s

Se não recebermos a resposta “ok” correta, interromperemos o envio de notificações após 15 tentativas.

4. Descrições dos status de pagamento nas notificações assíncronas

1. Status de pagamento:
CodeCampoDescrição
00paidPagamento bem-sucedido
01authorizedAutorização bem-sucedida
02pendingPagamento criado
03processingAguardando pagamento
04verifyO cliente efetuou o pagamento, que está sob análise por motivos de controle de risco.
05declinedPagamento recusado
06failedPagamento falhou
07expiredTempo limite do pagamento esgotado
08cancelledPagamento cancelado
2. Status de reembolso:
CodeCampoDescrição
20to-be-approvalAguardando aprovação do administrador.
21refund pendingO saldo atual é insuficiente. O reembolso será enviado automaticamente quando houver fundos suficientes.
22refund processingA solicitação de reembolso foi enviada e está sendo processada pelo sistema.
23refundedO reembolso foi concluído com sucesso.
24refund failedO reembolso falhou. Tente novamente.
25refund errorO reembolso falhou. Entre em contato com o suporte ao cliente online.
26refund cancelledO pedido de reembolso foi cancelado.