Olá, preciso saber se tem algum caminho de gerenciar a base de cupons de desconto por Api. Procurei na documentação e encontrei pontos relacionados a pedidos, clientes e produtos, entre outras coisas, mas não achei nada específico sobre os cupons. Preciso gerenciar a base de cupons cadastrados, além das informações de cada um, e a quantidade de usos também.
Boa tarde, tudo bem @sejabazico?
Sobre quantidade e usos, você consegue pelo nosso relatório padrão. Não sei como planeja fazer isso programaticamente, mas se fizer diretamente dentro do painel, algumas etapas são evitadas como a questão da autenticação. Já se for externo por algum BI, precisará da etapa de autenticação, então vou te dar um exemplo de ambos.
- Externo ao painel (por exemplo usando alguma planilha):
Para autenticar, precisará criar um usuário, dê permissões a ele para realizar o processo de autenticação:
Ao conseguir o access token, poderá realizar chamadas em nossa api, pois já saberá os
X-Store-ID,
X-My-ID,
X-Access-Token
Para inserir ou editar cupons, pode seguir a linha mostrada em E-Com Plus - Manipulando cupons no aplicativo de descontos padrão · GitHub
Caso realize um GET no mesmo endpoint citado acima, conseguirá todos as as regras de desconto. No caso, existem duas possibilidades, o que são criados dentro do painel, você conseguirá acessá-los na propriedade discount_rules, os que são inseridos pela API, será o código do cupom de cara, no seu caso, como usa fidelizar mais, verá por exemplo:
{
"230132469712300": {
"discount": {
"apply_at": "freight",
"type": "percentage",
"value": 100
},
"cumulative_discount": false,
"usage_limit": 1,
"total_usage_limit": 1
}
}
Em que 230132469712300 é um cupom gerado pela api do fidelizar mais, só modifiquei o código do cupom, para que não fique público, mas em verá semelhante a isso.
Para saber os usos dos cupons por período, será em outro lugar da API:
POST https://api.e-com.plus/v1/$aggregate.json
-H "X-Store-ID: <store_id>"
-H "X-My-ID: <authentication_id>"
-H "X-Access-Token: <access_token>"
-d '{
"resource": "orders"
"pipeline": [
{
"$match": {
"created_at": {
"$gte": "2023-04-02T03:00:00.000Z",
"$lte": "2023-05-03T02:59:59.059Z"
},
"extra_discount.flags": {
"$in": [
"COUPON"
]
},
"financial_status.current": "paid"
}
},
{
"$group": {
"_id": {
"$toUpper": "$extra_discount.discount_coupon"
},
"count": {
"$sum": 1
}
}
}
]
}
Como retorno, terá uma lista de cupons e seus respectivos usos durante
2023-04-02T03:00:00.000Z e 2023-05-03T02:59:59.059Z
Caso seja dentro do painel, fará as mesmas requisições, porém usando a função: callApi, um exemplo é:
callApi(
'$aggregate.json',
'POST',
(err, json) => {
if (!err) {
const { result } = json
if (Array.isArray(result)) {
// do what you need to do
}
}
},
{
resource: 'orders',
pipeline: [
{
$match : {
created_at: {
$gte: start.toISOString(),
$lte: end.toISOString(),
},
'financial_status.current': 'paid',
'extra_discount.flags': {
$in: ['COUPON']
}
}
},
{
$group: {
_id: {
$toUpper: '$extra_discount.discount_coupon'
},
count: {
$sum: 1
},
total: {
$sum: '$amount.total'
},
discount: {
$sum: '$extra_discount.value'
}
}
}
]
})
Na função callApi(url, method, callback, body)
URL é somente o final, pois o callApi já tem como baseURL https://api.e-com.plus/v1/
, por isso precisará preencher apenas o restante. O body será somente necessário se for usar os métodos PATCH, POST ou PUT. Um exemplo de callback é:
(err, json) => {
if (!err) {
const { result } = json
if (Array.isArray(result)) {
// do what you need to do
}
}
}