solidus_meta 1.0.0 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +10 -1
- data/app/models/solidus_meta/event.rb +17 -8
- data/lib/solidus_meta/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: a184b34b3cc96543d01321991267b34e00f9e4f70e9525842dd656fc5aa243e4
|
|
4
|
+
data.tar.gz: 1be9681add46e69481edd0868f79fa77f4bb7c2e5bb585406536f305b71fd270
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a62b7241a870ba49481770ac8185f72dfb132073ec6de3ebcb56ee448383704646398a17d74e15512058670ef5ab4158488cb5bbb0b9cd7d16e8b264bd47713e
|
|
7
|
+
data.tar.gz: 23cf1fff325b7cd284afbdf408895954212979b8ded7d7053b4f1eb0a9d952ec3b03161a545a8bf240ef1dd3f8cce9fe7162552a05eacf9eaf014ff2e7d7aad5
|
data/README.md
CHANGED
|
@@ -48,10 +48,19 @@ SolidusMeta::EventJob.perform_later("AddPaymentInfo", payment_id: payment.id, **
|
|
|
48
48
|
SolidusMeta::EventJob.perform_later("Purchase", order_id: order.id, **meta_tracking_data)
|
|
49
49
|
```
|
|
50
50
|
|
|
51
|
+
### Eventos suportados
|
|
52
|
+
|
|
53
|
+
| Evento | Quando chamar | Parâmetros |
|
|
54
|
+
|---|---|---|
|
|
55
|
+
| `AddToCart` | Item adicionado ao carrinho | `line_item_id:`, `quantity:` |
|
|
56
|
+
| `InitiateCheckout` | Entrou no checkout | `order_id:` |
|
|
57
|
+
| `AddPaymentInfo` | Pagamento criado com sucesso (PIX gerado, cartão aprovado ou em análise) | `payment_id:` |
|
|
58
|
+
| `Purchase` | Pedido completado (`order.complete` retornou `true`) | `order_id:` |
|
|
59
|
+
|
|
51
60
|
Fora de um controller (por exemplo, num job que confirma um pagamento PIX), passe `cookies_meta:` e `ahoy_visit_id:` direto, com os valores salvos durante o checkout.
|
|
52
61
|
|
|
53
62
|
O `event_time` enviado à Meta é o momento em que o job foi enfileirado.
|
|
54
63
|
|
|
55
64
|
### Adicionando um evento
|
|
56
65
|
|
|
57
|
-
Inclua o nome em `SolidusMeta::Event::EVENTS` e crie um método privado em `SolidusMeta::Event` com o nome em snake_case (`ViewContent` → `view_content`). Ele recebe as opções passadas ao job, define `@order` e retorna `
|
|
66
|
+
Inclua o nome em `SolidusMeta::Event::EVENTS` e crie um método privado em `SolidusMeta::Event` com o nome em snake_case (`ViewContent` → `view_content`). Ele recebe as opções passadas ao job, define `@order` e retorna `path` e, opcionalmente, `event_id`, `fallback` e `custom_data` (que sobrescreve os campos padrão). Sem `event_id`, o id é `<número do pedido>-<event_time>`, então cada disparo conta como um evento separado. Defina um `event_id` fixo quando o evento só pode contar uma vez por pedido, como o `Purchase`.
|
|
@@ -11,11 +11,12 @@ module SolidusMeta
|
|
|
11
11
|
def track(event_name, cookies_meta:, ahoy_visit_id: nil, event_time: Time.current, **options)
|
|
12
12
|
raise Error, "evento não suportado: #{event_name}" unless EVENTS.include?(event_name)
|
|
13
13
|
event = send(event_name.underscore, **options)
|
|
14
|
+
event_id = event[:event_id] || "#{order.number}-#{event_time.to_time.to_i}"
|
|
14
15
|
|
|
15
16
|
@client.send_event(
|
|
16
17
|
event_name,
|
|
17
18
|
event_time:,
|
|
18
|
-
event_id
|
|
19
|
+
event_id:,
|
|
19
20
|
event_source_url: File.join(SolidusMeta.config.store_url(order.store), event[:path]),
|
|
20
21
|
user_data: user_data(cookies_meta, ahoy_visit_id, fallback: event[:fallback]),
|
|
21
22
|
custom_data: {
|
|
@@ -37,7 +38,7 @@ module SolidusMeta
|
|
|
37
38
|
@order = line_item.order
|
|
38
39
|
|
|
39
40
|
{
|
|
40
|
-
event_id: "#{line_item.id}
|
|
41
|
+
event_id: "#{line_item.id}-#{line_item.updated_at.to_i}",
|
|
41
42
|
path: "carrinho",
|
|
42
43
|
fallback: "sem usuário",
|
|
43
44
|
custom_data: {
|
|
@@ -52,9 +53,10 @@ module SolidusMeta
|
|
|
52
53
|
@order = Spree::Order.find(order_id)
|
|
53
54
|
|
|
54
55
|
{
|
|
55
|
-
event_id: order.number,
|
|
56
56
|
path: "checkout/address/edit",
|
|
57
|
-
custom_data: {
|
|
57
|
+
custom_data: {
|
|
58
|
+
num_items: order.line_items.count
|
|
59
|
+
}
|
|
58
60
|
}
|
|
59
61
|
end
|
|
60
62
|
|
|
@@ -63,12 +65,12 @@ module SolidusMeta
|
|
|
63
65
|
@order = payment.order
|
|
64
66
|
|
|
65
67
|
{
|
|
66
|
-
event_id: order.number,
|
|
67
68
|
path: "checkout/payment",
|
|
68
69
|
custom_data: {
|
|
69
70
|
currency: payment.currency,
|
|
70
71
|
value: payment.amount.to_f,
|
|
71
|
-
content_id: payment.number
|
|
72
|
+
content_id: payment.number,
|
|
73
|
+
payment_type: payment.payment_method.name
|
|
72
74
|
}
|
|
73
75
|
}
|
|
74
76
|
end
|
|
@@ -76,7 +78,10 @@ module SolidusMeta
|
|
|
76
78
|
def purchase(order_id:)
|
|
77
79
|
@order = Spree::Order.find(order_id)
|
|
78
80
|
|
|
79
|
-
{
|
|
81
|
+
{
|
|
82
|
+
event_id: order.number,
|
|
83
|
+
path: "pedidos"
|
|
84
|
+
}
|
|
80
85
|
end
|
|
81
86
|
|
|
82
87
|
def user_data(cookies_meta, ahoy_visit_id, fallback: nil)
|
|
@@ -112,7 +117,11 @@ module SolidusMeta
|
|
|
112
117
|
end
|
|
113
118
|
|
|
114
119
|
def content_line_item(line_item, quantity)
|
|
115
|
-
{
|
|
120
|
+
{
|
|
121
|
+
id: line_item.sku,
|
|
122
|
+
quantity:,
|
|
123
|
+
item_price: line_item.price.to_f
|
|
124
|
+
}
|
|
116
125
|
end
|
|
117
126
|
|
|
118
127
|
def address
|
data/lib/solidus_meta/version.rb
CHANGED