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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b9df7c2815f8fcf61690d5f9728822ed9d2e38c2395bfd3a903e7765b8e629fc
4
- data.tar.gz: 79881489f2cd955db11445883dd359fa415392525b33728d734f5ebcb94be54c
3
+ metadata.gz: a184b34b3cc96543d01321991267b34e00f9e4f70e9525842dd656fc5aa243e4
4
+ data.tar.gz: 1be9681add46e69481edd0868f79fa77f4bb7c2e5bb585406536f305b71fd270
5
5
  SHA512:
6
- metadata.gz: 27f7e2c7c2c6301b40f1053d8dec9a531acb5cf34081b2ae5bceddccb8e8a9f022fca3dddfd6ca543690cda4542723652bf586fa389e93015e3a38326723a6dc
7
- data.tar.gz: 9dfbf78a4f965421222ee53d00051727a5600c6e3f3b216a7329ad5063d199da37bd21094bffd130f916c493572cc7df7f13e19bd8611f38afeaf149c0538e2d
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 `event_id`, `path` e, opcionalmente, `fallback` e `custom_data` (que sobrescreve os campos padrão).
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: event[: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}#{line_item.updated_at.to_i}",
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: {num_items: order.line_items.count}
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
- {event_id: order.number, path: "pedidos"}
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
- {id: line_item.sku, quantity:, item_price: line_item.price.to_f}
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SolidusMeta
4
- VERSION = "1.0.0"
4
+ VERSION = "1.1.1"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solidus_meta
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - marialuiza1324