Метрика / Передавать покупки (интеграция ecommerce)

remotes/origin/feature/ecommerce-gtag
gzbender 6 years ago
parent 8852dcf915
commit 53729c5f2e
  1. 5
      apps/course/models.py
  2. 3
      apps/course/templates/course/course.html
  3. 2
      apps/payment/models.py
  4. 18
      apps/payment/templates/payment/pay.html
  5. 14
      apps/payment/templates/payment/payment_success.html
  6. 15
      web/src/js/modules/gtag.js

@ -144,6 +144,11 @@ class Course(BaseModel, DeactivatedMixin):
return super().save() return super().save()
@property
def age_str(self):
ages = dict(self.AGE_CHOICES)
return ages.get(self.age)
@property @property
def url(self): def url(self):
return self.get_absolute_url() return self.get_absolute_url()

@ -402,7 +402,8 @@
window.LIL_STORE.data.gtagProduct = { window.LIL_STORE.data.gtagProduct = {
id: +'{{ course.id }}', id: +'{{ course.id }}',
name: '{{ course.title }}', name: '{{ course.title }}',
category: 'course', category: '{{ course.category.title }}/{{ course.age_str }}',
brand: 'Lil.School/{{ course.author.get_full_name }}',
quantity: 1, quantity: 1,
price: +'{{ course.price|default:0|floatformat:"0" }}', price: +'{{ course.price|default:0|floatformat:"0" }}',
}; };

@ -301,7 +301,7 @@ class Payment(PolymorphicModel):
payment=self) payment=self)
if created: if created:
from apps.notification.tasks import send_gift_certificate from apps.notification.tasks import send_gift_certificate
send_gift_certificate(ugs.id) send_gift_certificate.delay(ugs.id)
# Если это не первая покупка, - отправляем бонусы юзеру # Если это не первая покупка, - отправляем бонусы юзеру
if self.user.paid_one_more and not self.user.bonuses.filter( if self.user.paid_one_more and not self.user.bonuses.filter(
is_service=True, action_name=UserBonus.ACTION_PAID_ONE_MORE).count(): is_service=True, action_name=UserBonus.ACTION_PAID_ONE_MORE).count():

@ -33,7 +33,8 @@
{% if course %} {% if course %}
id: +'{{ course.id }}', id: +'{{ course.id }}',
name: '{{ course.title }}', name: '{{ course.title }}',
category: 'course', category: '{{ course.category.title }}/{{ course.age_str }}',
brand: 'Lil.School/{{ course.author.get_full_name }}',
quantity: 1, quantity: 1,
price: +'{{ course.price|default:0|floatformat:"0" }}', price: +'{{ course.price|default:0|floatformat:"0" }}',
{% endif %} {% endif %}
@ -41,7 +42,8 @@
{% if school %} {% if school %}
id: +'{{ payment.package.id }}', id: +'{{ payment.package.id }}',
name: 'Подписка с {{ payment.date_start|date:"j-m-Y" }} до {{ payment.date_end|date:"j-m-Y" }}', name: 'Подписка с {{ payment.date_start|date:"j-m-Y" }} до {{ payment.date_end|date:"j-m-Y" }}',
category: 'package', category: 'Подписка',
brand: 'Lil.School',
quantity: 1, quantity: 1,
price: +'{{ payment.amount|default:0|floatformat:"0" }}', price: +'{{ payment.amount|default:0|floatformat:"0" }}',
{% endif %} {% endif %}
@ -49,7 +51,8 @@
{% if camp %} {% if camp %}
id: +'{{ payment.package.id }}', id: +'{{ payment.package.id }}',
name: 'Подписка с {{ payment.date_start|date:"j-m-Y" }} до {{ payment.date_end|date:"j-m-Y" }}', name: 'Подписка с {{ payment.date_start|date:"j-m-Y" }} до {{ payment.date_end|date:"j-m-Y" }}',
category: 'package', category: 'Подписка',
brand: 'Lil.School',
quantity: 1, quantity: 1,
price: +'{{ payment.amount|default:0|floatformat:"0" }}', price: +'{{ payment.amount|default:0|floatformat:"0" }}',
{% endif %} {% endif %}
@ -57,17 +60,12 @@
{% if gift_certificate %} {% if gift_certificate %}
id: +'{{ gift_certificate.id }}', id: +'{{ gift_certificate.id }}',
name: 'Сертификат {{ gift_certificate.price }}', name: 'Сертификат {{ gift_certificate.price }}',
category: 'gift_certificate', category: 'Подарочный сертификат',
brand: 'Lil.School',
quantity: 1, quantity: 1,
price: +'{{ gift_certificate.price|default:0|floatformat:"0" }}', price: +'{{ gift_certificate.price|default:0|floatformat:"0" }}',
{% endif %} {% endif %}
}; };
window.LIL_STORE.data.gtagTransaction = {
transaction_id: +'{{ payment.id }}',
value: '{{ payment.amount }}',
checkout_step: 1,
items: [window.LIL_STORE.data.gtagProduct],
};
</script> </script>
<script type="text/javascript" src="{% static 'pay.js' %}"></script> <script type="text/javascript" src="{% static 'pay.js' %}"></script>
{% endblock foot_js %} {% endblock foot_js %}

@ -42,7 +42,8 @@
{% if course %} {% if course %}
id: +'{{ course.id }}', id: +'{{ course.id }}',
name: '{{ course.title }}', name: '{{ course.title }}',
category: 'course', category: '{{ course.category.title }}/{{ course.age_str }}',
brand: 'Lil.School/{{ course.author.get_full_name }}',
quantity: 1, quantity: 1,
price: +'{{ course.price|default:0|floatformat:"0" }}', price: +'{{ course.price|default:0|floatformat:"0" }}',
{% endif %} {% endif %}
@ -50,7 +51,8 @@
{% if school %} {% if school %}
id: +'{{ payment.package.id }}', id: +'{{ payment.package.id }}',
name: 'Подписка с {{ payment.date_start|date:"j-m-Y" }} до {{ payment.date_end|date:"j-m-Y" }}', name: 'Подписка с {{ payment.date_start|date:"j-m-Y" }} до {{ payment.date_end|date:"j-m-Y" }}',
category: 'school', category: 'Подписка',
brand: 'Lil.School',
quantity: 1, quantity: 1,
price: +'{{ payment.amount|default:0|floatformat:"0" }}', price: +'{{ payment.amount|default:0|floatformat:"0" }}',
{% endif %} {% endif %}
@ -58,7 +60,8 @@
{% if camp %} {% if camp %}
id: +'{{ payment.package.id }}', id: +'{{ payment.package.id }}',
name: 'Подписка с {{ payment.date_start|date:"j-m-Y" }} до {{ payment.date_end|date:"j-m-Y" }}', name: 'Подписка с {{ payment.date_start|date:"j-m-Y" }} до {{ payment.date_end|date:"j-m-Y" }}',
category: 'camp', category: 'Подписка',
brand: 'Lil.School',
quantity: 1, quantity: 1,
price: +'{{ payment.amount|default:0|floatformat:"0" }}', price: +'{{ payment.amount|default:0|floatformat:"0" }}',
{% endif %} {% endif %}
@ -66,7 +69,8 @@
{% if gift_certificate %} {% if gift_certificate %}
id: +'{{ gift_certificate.id }}', id: +'{{ gift_certificate.id }}',
name: 'Сертификат {{ gift_certificate.price }}', name: 'Сертификат {{ gift_certificate.price }}',
category: 'gift_certificate', category: 'Подарочный сертификат',
brand: 'Lil.School',
quantity: 1, quantity: 1,
price: +'{{ gift_certificate.price|default:0|floatformat:"0" }}', price: +'{{ gift_certificate.price|default:0|floatformat:"0" }}',
{% endif %} {% endif %}
@ -74,7 +78,7 @@
window.LIL_STORE.data.gtagTransaction = { window.LIL_STORE.data.gtagTransaction = {
transaction_id: +'{{ payment.id }}', transaction_id: +'{{ payment.id }}',
value: +'{{ payment.amount|floatformat:"0" }}', value: +'{{ payment.amount|floatformat:"0" }}',
checkout_step: 2, checkout_step: 1,
items: [window.LIL_STORE.data.gtagProduct], items: [window.LIL_STORE.data.gtagProduct],
}; };
</script> </script>

@ -26,14 +26,13 @@ $(document).ready(function () {
window.gtag('event', 'checkout_progress', { window.gtag('event', 'checkout_progress', {
"items": [window.LIL_STORE.data.gtagProduct], "items": [window.LIL_STORE.data.gtagProduct],
}); });
window.gtag('event', 'purchase', window.LIL_STORE.data.gtagTransaction);
} }
if(window.LIL_STORE.urlIs(['courseBuySuccess', 'schoolBuySuccess', 'campBuySuccess', 'giftCertificateBuySuccess'])){ if(window.LIL_STORE.urlIs(['courseBuySuccess', 'schoolBuySuccess', 'campBuySuccess', 'giftCertificateBuySuccess'])){
window.gtag('event', 'checkout_progress', { window.gtag('event', 'checkout_progress', {
"items": [window.LIL_STORE.data.gtagProduct], "items": [window.LIL_STORE.data.gtagProduct],
}); });
window.gtag('event', 'purchase', window.LIL_STORE.data.gtagTransaction); window.gtag('event', 'purchase', window.LIL_STORE.data.gtagTransaction);
} }
if(window.LIL_STORE.urlIs('course')){ if(window.LIL_STORE.urlIs('course')){
@ -69,7 +68,8 @@ $(document).ready(function () {
"items": [{ "items": [{
id: $this.data('package'), id: $this.data('package'),
name: 'Подписка на ' + +$this.data('duration') + ' месяцев', name: 'Подписка на ' + +$this.data('duration') + ' месяцев',
category: 'package', category: 'Подписка',
brand: 'Lil.School',
quantity: 1, quantity: 1,
price: +$this.data('price'), price: +$this.data('price'),
}], }],
@ -85,7 +85,8 @@ $(document).ready(function () {
"items": [{ "items": [{
id: $this.data('gift-certificate'), id: $this.data('gift-certificate'),
name: 'Подарочный сертификат на ' + +$this.data('price') + ' руб', name: 'Подарочный сертификат на ' + +$this.data('price') + ' руб',
category: 'gift-certificate', category: 'Подарочный сертификат',
brand: 'Lil.School',
quantity: 1, quantity: 1,
price: +$this.data('price'), price: +$this.data('price'),
}], }],

Loading…
Cancel
Save