ÿÿ Các loại sá»± kiện và trưá»ng dữ liệu webhook

Các loại sá»± kiện và trưá»ng dữ liệu webhook

Adapty gửi webhook để phản hồi các sự kiện gói đăng ký. Phần này định nghĩa các loại sự kiện và dữ liệu có trong mỗi webhook.

Các loại sự kiện Webhook

Bạn có thể gá»­i tất cả các loại sá»± kiện đến webhook cá»§a mình hoặc chỉ chá»n má»™t số loại nhất định. Tham khảo Event flows để tìm hiểu loại dữ liệu đầu vào cần mong đợi và cách xây dá»±ng logic nghiệp vụ xung quanh đó. Bạn có thể tắt các loại sá»± kiện không cần thiết khi thiết lập tích hợp Webhook. Tại đó, bạn cÅ©ng có thể thay thế ID sá»± kiện mặc định cá»§a Adapty bằng ID cá»§a riêng mình nếu cần.

Tên sự kiệnMô tả
subscription_startedKích hoạt khi ngưá»i dùng bắt đầu gói đăng ký trả phí không có thá»i gian dùng thá»­, tức là bị tính phí ngay lập tức.
subscription_renewedXảy ra khi gói đăng ký được gia hạn và ngưá»i dùng bị tính phí. Sá»± kiện này bắt đầu từ lần thanh toán thứ hai, dù là gói đăng ký có hay không có dùng thá»­.
subscription_renewal_cancelledNgưá»i dùng đã tắt tính năng tá»± động gia hạn gói đăng ký. Ngưá»i dùng vẫn có thể sá»­ dụng các tính năng cao cấp cho đến khi kết thúc chu kỳ đăng ký đã thanh toán.
subscription_renewal_reactivatedKích hoạt khi ngưá»i dùng bật lại tính năng tá»± động gia hạn gói đăng ký.
subscription_expiredKích hoạt khi gói đăng ký hết hạn hoàn toàn sau khi bị há»§y. Ví dụ: nếu ngưá»i dùng há»§y gói đăng ký vào ngày 12 tháng 12 nhưng vẫn còn hiệu lá»±c đến ngày 31 tháng 12, sá»± kiện sẽ được ghi nhận vào ngày 31 tháng 12 khi gói đăng ký hết hạn.
subscription_pausedXảy ra khi ngưá»i dùng kích hoạt tính năng tạm dừng gói đăng ký (chỉ dành cho Android).
subscription_deferredKích hoạt khi giao dịch mua gói đăng ký được hoãn lại, cho phép ngưá»i dùng trì hoãn việc thanh toán trong khi vẫn duy trì quyá»n truy cập các tính năng cao cấp. Tính năng này có sẵn thông qua Google Play Developer API và có thể dùng cho các bản dùng thá»­ miá»…n phí hoặc há»— trợ ngưá»i dùng gặp khó khăn vá» tài chính.
non_subscription_purchaseBất kỳ sản phẩm mua má»™t lần nào, chẳng hạn như quyá»n truy cập trá»n Ä‘á»i hoặc các sản phẩm consumable như tiá»n trong game.
trial_startedKích hoạt khi ngưá»i dùng bắt đầu gói đăng ký dùng thá»­.
trial_convertedXảy ra khi thá»i gian dùng thá»­ kết thúc và ngưá»i dùng bị tính phí (lần mua đầu tiên). Ví dụ: nếu ngưá»i dùng có thá»i gian dùng thá»­ đến ngày 14 tháng 1 nhưng bị tính phí vào ngày 7 tháng 1, sá»± kiện sẽ được ghi nhận vào ngày 7 tháng 1.
trial_renewal_cancelledNgưá»i dùng đã tắt tính năng tá»± động gia hạn trong thá»i gian dùng thá»­. Ngưá»i dùng vẫn có thể sá»­ dụng các tính năng cao cấp cho đến khi thá»i gian dùng thá»­ kết thúc nhưng sẽ không bị tính phí hay chuyển sang gói đăng ký.
trial_renewal_reactivatedXảy ra khi ngưá»i dùng bật lại tính năng tá»± động gia hạn trong thá»i gian dùng thá»­.
trial_expiredKích hoạt khi thá»i gian dùng thá»­ kết thúc mà không chuyển sang gói đăng ký.
entered_grace_periodXảy ra khi má»™t lần thanh toán thất bại và ngưá»i dùng bước vào thá»i gian ân hạn (nếu được bật). Ngưá»i dùng vẫn có thể truy cập các tính năng cao cấp trong thá»i gian này.
billing_issue_detectedKích hoạt khi xảy ra sự cố thanh toán trong quá trình thực hiện giao dịch (ví dụ: số dư thẻ không đủ).
subscription_refundedKích hoạt khi gói đăng ký được hoàn tiá»n (ví dụ: do Apple Support xá»­ lý).
non_subscription_purchase_refundedKích hoạt khi má»™t sản phẩm mua má»™t lần được hoàn tiá»n.
access_level_updatedXảy ra khi mức độ truy cập cá»§a ngưá»i dùng được cập nhật.

subscription_renewal_reactivated mang ID sản phẩm trước đó — tức là sản phẩm Ä‘ang hoạt động khi ngưá»i dùng há»§y — ngay cả khi ngưá»i dùng sau đó kích hoạt lại bằng cách mua má»™t sản phẩm khác. Apple giữ nguyên original_transaction_id trong toàn bá»™ chuá»—i há»§y → kích hoạt lại, vì vậy sá»± kiện này phản ánh sản phẩm ban đầu. Sản phẩm má»›i sẽ xuất hiện trong sá»± kiện subscription_renewed tiếp theo khi việc tính phí cho sản phẩm má»›i bắt đầu.

Cấu trúc sự kiện Webhook

Adapty chỉ gá»­i những sá»± kiện mà bạn đã chá»n trong phần Events names cá»§a trang Integrations -> Webhooks. Các sá»± kiện webhook được tuần tá»± hóa dưới dạng JSON. Phần thân cá»§a yêu cầu POST gá»­i đến máy chá»§ cá»§a bạn sẽ chứa sá»± kiện đã được tuần tá»± hóa, được đóng gói trong cấu trúc dưới đây. Tất cả các sá»± kiện Ä‘á»u có cùng cấu trúc, nhưng các trưá»ng dữ liệu sẽ khác nhau tùy theo loại sá»± kiện, cá»­a hàng và cấu hình cụ thể cá»§a bạn. Thuá»™c tính ngưá»i dùng là các thuá»™c tính ngưá»i dùng tùy chỉnh mà bạn đã thiết lập, vì vậy chúng chứa những gì bạn đã cấu hình. Các trưá»ng dữ liệu attribution cÅ©ng giống nhau cho tất cả các loại sá»± kiện, tuy nhiên danh sách các attribution sẽ phụ thuá»™c vào nguồn attribution bạn sá»­ dụng trong ứng dụng di động cá»§a mình. Xem bên dưới ví dụ vá» má»™t sá»± kiện:

{
  "profile_id": "00000000-0000-0000-0000-000000000000",
  "customer_user_id": "UserIdInYourSystem",
  "idfv": "00000000-0000-0000-0000-000000000000",
  "idfa": "00000000-0000-0000-0000-000000000000",
  "advertising_id": "00000000-0000-0000-0000-000000000000",
  "profile_install_datetime": "2000-01-31T00:00:00.000000+0000",
  "user_agent": "ExampleUserAgent/1.0 (Device; OS Version) Browser/Engine",
  "email": "john.doe@company.com",
  "event_type": "subscription_started",
  "event_datetime": "2000-01-31T00:00:00.000000+0000",
  "event_properties": {
    "store": "play_store",
    "currency": "USD",
    "price_usd": 4.99,
    "profile_id": "00000000-0000-0000-0000-000000000000",
    "cohort_name": "All Users",
    "environment": "Production",
    "price_local": 4.99,
    "original_price_usd": 4.99,
    "original_price_local": 4.99,
    "discount_amount_usd": 0,
    "discount_amount_local": 0,
    "base_plan_id": "b1",
    "developer_id": "onboarding_placement",
    "ab_test_name": "onboarding_ab_test",
    "ab_test_revision": 1,
    "paywall_name": "UsedPaywall",
    "proceeds_usd": 4.2315,
    "variation_id": "00000000-0000-0000-0000-000000000000",
    "purchase_date": "2024-11-15T10:45:36.181000+0000",
    "store_country": "AR",
    "event_datetime": "2000-01-31T00:00:00.000000+0000",
    "proceeds_local": 4.2415,
    "tax_amount_usd": 0,
    "transaction_id": "0000000000000000",
    "net_revenue_usd": 4.2415,
    "profile_country": "AR",
    "paywall_revision": "1",
    "profile_event_id": "00000000-0000-0000-0000-000000000000",
    "tax_amount_local": 0,
    "net_revenue_local": 4.2415,
    "vendor_product_id": "onemonth_no_trial",
    "profile_ip_address": "10.10.1.1",
    "consecutive_payments": 1,
    "rate_after_first_year": false,
    "original_purchase_date": "2000-01-31T00:00:00.000000+0000",
    "original_transaction_id": "0000000000000000",
    "subscription_expires_at": "2000-01-31T00:00:00.000000+0000",
    "profile_has_access_level": true,
    "profile_total_revenue_usd": 4.99,
    "promotional_offer_id": null,
    "store_offer_category": null,
    "store_offer_discount_type": null
  },
  "event_api_version": 1,
  "profiles_sharing_access_level": [{"profile_id": "00000000-0000-0000-0000-000000000000", "customer_user_id": "UserIdInYourSystem"}],
   "attributions": {
    "appsflyer": {
      "ad_set": "Keywords 1.12",
      "status": "non_organic",
      "channel": "Google Ads",
      "ad_group": null,
      "campaign": "Social media influencers - Rest of the world",
      "creative": null,
      "created_at": "2000-01-31T00:00:00.000000+0000"
    }
  },
  "user_attributes": {"Favourite_color": "Violet", "Pet_name": "Fluffy"},
  "integration_ids": {"firebase_app_instance_id": "val1", "branch_id": "val2", "one_signal_player_id": "val3"},
  "play_store_purchase_token": {
    "product_id": "product_123",
    "purchase_token": "token_abc_123",
    "is_subscription": true
  }
}

Các trưá»ng cá»§a sá»± kiện

Các tham số sá»± kiện Ä‘á»u giống nhau cho tất cả các loại sá»± kiện.

Trưá»ngKiểuMô tả
advertising_idUUIDID quảng cáo (chỉ dành cho Android).
attributionsJSONDữ liệu attribution. ÄÆ°á»£c đính kèm nếu Send Attribution được bật trong Webhook settings.
customer_user_idStringID ngưá»i dùng từ app cá»§a bạn (UUID, email, hoặc ID khác) nếu bạn đã thiết lập trong code app khi xác định ngưá»i dùng. Nếu bạn không xác định ngưá»i dùng trong code app hoặc ngưá»i dùng cụ thể này là ẩn danh (chưa đăng nhập), trưá»ng này sẽ là null.
emailStringEmail cá»§a ngưá»i dùng nếu bạn thiết lập bằng phương thức updateProfile trong Adapty SDK hoặc khi tạo/cập nhật hồ sÆ¡ ngưá»i dùng qua server-side API. Nếu bạn không truyá»n giá trị email vào SDK hoặc phương thức API, trưá»ng này sẽ là null.
event_api_versionIntegerPhiên bản Adapty API (hiện tại: 1).
event_datetimeISO 8601Thá»i Ä‘iểm thá»±c tế (nghiệp vụ) cá»§a sá»± kiện, chẳng hạn ngày mua hàng đối vá»›i giao dịch mua hoặc ngày hết hạn đối vá»›i sá»± kiện hết hạn — không phải thá»i Ä‘iểm Adapty nhận hoặc gá»­i sá»± kiện. Äịnh dạng ISO 8601 (ví dụ: 2020-07-10T15:00:00.000000+0000). Xem ghi chú bên dưới vá» thứ tá»± sắp xếp.
event_propertiesJSONThuộc tính sự kiện.
event_typeStringTên sự kiện theo định dạng Adapty. Xem Loại sự kiện Webhook để biết danh sách đầy đủ.
idfaUUIDID quảng cáo (chỉ dành cho Apple). IDFA trong hồ sÆ¡ ngưá»i dùng trên Adapty Dashboard. Có thể là null nếu không khả dụng do hạn chế theo dõi, chế độ trẻ em, hoặc cài đặt quyá»n riêng tư.
idfvUUIDIdentifier for Vendors (IDFV), duy nhất theo nhà phát triển. IDFV trong hồ sÆ¡ ngưá»i dùng trên Adapty Dashboard.
integration_idsJSONID tích hợp ngưá»i dùng nếu bạn thiết lập bằng phương thức setIntegrationIdentifier trong Adapty SDK hoặc khi tạo/cập nhật hồ sÆ¡ ngưá»i dùng qua server-side API. null nếu không khả dụng hoặc các tích hợp bị tắt.
play_store_purchase_tokenJSONToken mua hàng Play Store, được đính kèm nếu Send Play Store purchase token được bật trong Webhook settings.
profile_idUUIDID hồ sÆ¡ ngưá»i dùng được Adapty tá»± động tạo cho má»—i hồ sÆ¡. Má»™t Apple/Google ID có thể được liên kết vá»›i nhiá»u profile ID khác nhau nếu bạn không xác định ngưá»i dùng hoặc cho phép mua hàng trước khi đăng nhập. Tìm hiểu thêm vá» cách Adapty hoạt động vá»›i hồ sÆ¡ cha/con.
profile_install_datetimeISO 8601Thá»i Ä‘iểm cài đặt theo định dạng ISO 8601 (ví dụ: 2020-07-10T15:00:00.000000+0000).
profiles_sharing_access_levelJSONDanh sách ngưá»i dùng chia sẻ mức độ truy cập ngoại trừ hồ sÆ¡ ngưá»i dùng hiện tại. Nếu tính năng chia sẻ mức độ truy cập được bật cho app cá»§a bạn, danh sách này bao gồm các hồ sÆ¡ khác đã được sá»­ dụng vá»›i cùng Apple/Google ID.
Äịnh dạng:
  • profile_id: (UUID) Adapty ID
  • customer_user_id: (String) Customer User ID nếu được cung cấp
user_agentStringUser-agent trình duyệt của thiết bị.
user_attributesJSONDữ liệu tùy chỉnh bạn có thể thiết lập để bổ sung thông tin cụ thể cá»§a app vào hồ sÆ¡ ngưá»i dùng. Thưá»ng dùng để theo dõi tùy chá»n cá»§a ngưá»i dùng (ví dụ: giao diện, ngôn ngữ) hoặc các cá» hành vi (đã hoàn thành onboarding, mức độ sá»­ dụng tính năng).
ÄÆ°á»£c định dạng dưới dạng các cặp key-value trong đó key là chuá»—i và value có thể là chuá»—i hoặc số (ví dụ: {"Favourite_color": "Violet", "Pet_name": "Fluffy"}).
Bạn có thể thiết lập thuá»™c tính tùy chỉnh thá»§ công trong Adapty Dashboard cho từng hồ sÆ¡ ngưá»i dùng riêng lẻ, theo lập trình bằng phương thức updateProfile trong Adapty SDK, hoặc qua server-side API khi tạo/cập nhật hồ sÆ¡ ngưá»i dùng.
ÄÆ°á»£c đính kèm nếu Send User Attributes được bật trong Webhook settings.

Trong khi các giá trị thuá»™c tính tùy chỉnh trong code app di động có thể được thiết lập dưới dạng float hoặc string, các thuá»™c tính nhận được qua server-side API hoặc import lịch sá»­ có thể có định dạng khác. Trong trưá»ng hợp này, các giá trị boolean và integer sẽ được chuyển đổi thành float.

event_datetime phản ánh thá»i Ä‘iểm má»™t sá»± kiện xảy ra trong vòng Ä‘á»i gói đăng ký, chứ không phải thá»i Ä‘iểm Adapty xá»­ lý hay gá»­i nó. Vì vậy, các sá»± kiện có thể có cùng event_datetime hoặc đến không theo thứ tá»± thá»i gian. Ví dụ, má»™t sá»± kiện subscription_expired có thể mang event_datetime sá»›m hÆ¡n má»™t sá»± kiện subscription_renewal_cancelled mà Adapty gá»­i trước nó. Äừng dá»±a vào event_datetime để sắp xếp thứ tá»± các sá»± kiện. Thay vào đó, hãy sắp xếp sá»± kiện theo thá»i gian bạn nhận được, và loại bá» trùng lặp bằng profile_event_id hoặc các transaction ID.

Attribution

Äể gá»­i dữ liệu attribution, hãy bật tùy chá»n Send Attribution trong trang Integrations -> Webhooks. Nếu bạn đã bật tính năng gá»­i dữ liệu attribution và đã thiết lập tích hợp attribution, dữ liệu dưới đây sẽ được gá»­i kèm theo sá»± kiện cho má»—i nguồn. Cùng má»™t dữ liệu attribution sẽ được gá»­i cho tất cả các loại sá»± kiện.

{
  "attributions": {
    "appsflyer": {
      "ad_set": "sample_ad_set_123",
      "status": "non_organic",
      "channel": "sample_channel",
      "ad_group": "sample_ad_group_456",
      "campaign": "sample_ios_campaign",
      "creative": "sample_creative_789",
      "created_at": "2000-01-31T00:00:00.000000+0000",
      "network_user_id": "0000000000000-0000000"
    }
  }
}
Tên trưá»ngKiểu dữ liệuMô tả
ad_setStringAd set attribution.
statusStringCó thể là organic, non_organic, hoặc unknown.
channelStringTên kênh marketing.
ad_groupStringAd group attribution.
campaignStringTên chiến dịch marketing.
creativeStringTừ khóa creative của attribution.
created_atISO 8601 dateNgày và giỠtạo bản ghi attribution.
network_user_idStringID được nguồn attribution gán cho ngưá»i dùng.

ID tích hợp

Các ID tích hợp sau đây hiện được sử dụng trong các sự kiện:

  • adjust_device_id
  • airbridge_device_id
  • amplitude_device_id
  • amplitude_user_id
  • appmetrica_device_id
  • appmetrica_profile_id
  • appsflyer_id
  • branch_id
  • facebook_anonymous_id
  • firebase_app_instance_id
  • mixpanel_user_id
  • pushwoosh_hwid
  • one_signal_player_id
  • one_signal_subscription_id
  • tenjin_analytics_installation_id
  • posthog_distinct_user_id

Mã token mua hàng trên Play Store

Trưá»ng này chứa toàn bá»™ dữ liệu cần thiết để xác thá»±c lại giao dịch khi cần. Nó chỉ được gá»­i khi tùy chá»n Send Play Store purchase token được bật trong cài đặt tích hợp Webhook.

FieldTypeDescription
product_idStringMã định danh duy nhất của sản phẩm (SKU) được mua trên Play Store.
purchase_tokenStringToken do Google Play tạo ra để xác định duy nhất giao dịch mua này.
is_subscriptionBooleanCho biết sản phẩm được mua là gói đăng ký (true) hay sản phẩm mua một lần (false).

Thuộc tính sự kiện

Thuộc tính sự kiện có thể khác nhau tùy theo loại sự kiện và thậm chí giữa các sự kiện cùng loại. Ví dụ, một sự kiện từ App Store sẽ không bao gồm các thuộc tính dành riêng cho Android như base_plan_id. Sự kiện Access Level Updated có các thuộc tính riêng biệt, vì vậy chúng tôi đã dành một mục riêng cho nó. Tương tự, chúng tôi cũng tách riêng Thuộc tính sự kiện thuế và doanh thu bổ sung, vì chúng chỉ áp dụng cho một số loại sự kiện nhất định.

Äối vá»›i hầu hết các loại sá»± kiện

Thuá»™c tính sá»± kiện cá»§a hầu hết các loại sá»± kiện Ä‘á»u nhất quán (ngoại trừ sá»± kiện Access Level Updated, được mô tả trong phần riêng cá»§a nó). Dưới đây là bảng tổng hợp các thuá»™c tính và chỉ rõ chúng thuá»™c vá» sá»± kiện cụ thể nào.

Adapty chuyển đổi các loại tiá»n tệ khác sang USD theo tá»· giá hối Ä‘oái từ currencylayer.com (cập nhật má»—i 8 giá»). Tá»· giá được cố định tại thá»i Ä‘iểm giao dịch — những thay đổi sau đó không ảnh hưởng đến kết quả chuyển đổi.

Trưá»ngKiểuMô tả
ab_test_nameStringTên của A/B test trên Adapty mà giao dịch bắt nguồn từ đó.
ab_test_revisionIntegerPhiên bản của A/B test mà giao dịch bắt nguồn từ đó.
base_plan_idStringID gói cơ bản trên Google Play Store hoặc ID giá trên Stripe.
cancellation_reasonString

Các lý do hủy có thể có: voluntarily_cancelled, billing_error, price_increase, product_was_not_available, refund, cancelled_by_developer, new_subscription_replace, upgraded, unknown, adapty_revoked.

Xuất hiện trong các loại sự kiện sau:

subscription_cancelled, subscription_refunded, và trial_cancelled.
cohort_nameStringTên cá»§a đối tượng đã xác định paywall nào được hiển thị cho ngưá»i dùng.
consecutive_paymentsIntegerSố kỳ mà ngưá»i dùng đã đăng ký liên tục không bị gián Ä‘oạn. Bao gồm kỳ hiện tại.
currencyStringÄÆ¡n vị tiá»n tệ địa phương.
developer_idStringID của placement mà giao dịch bắt nguồn từ đó.
discount_amount_localFloatMức chiết khấu áp dụng cho giao dịch: giá tiêu chuẩn trừ Ä‘i số tiá»n thá»±c tế được tính, trước khi Apple/Google khấu trừ phần cá»§a há», tính theo tiá»n tệ địa phương. 0 vá»›i giao dịch mua giá đầy đủ. Vá»›i bản dùng thá»­ miá»…n phí, bằng giá tiêu chuẩn đầy đủ (original_price_local) vì không tính phí gì. null khi có ưu đãi áp dụng nhưng không biết giá tiêu chuẩn (xem original_price_local). Luôn là null vá»›i ưu đãi trả trước má»™t lần cá»§a App Store: khoản thanh toán trả trước má»™t lần bao gồm nhiá»u kỳ thanh toán nên không thể so sánh vá»›i giá tiêu chuẩn theo kỳ.
discount_amount_usdFloatGiá trị của discount_amount_local tính theo USD.
environmentStringCác giá trị có thể có là Sandbox hoặc Production.
event_datetimeISO 8601 dateNgày và giỠxảy ra sự kiện. Giống với giá trị ở cấp gốc của sự kiện.
original_price_localFloatGiá tiêu chuẩn, chưa chiết khấu cá»§a sản phẩm trước khi Apple/Google khấu trừ phần cá»§a há», tính theo tiá»n tệ địa phương. Vá»›i gói đăng ký, đây là giá gia hạn. Bằng price_local vá»›i giao dịch mua giá đầy đủ và luôn bằng price_local vá»›i sản phẩm mua má»™t lần vì cá»­a hàng không báo cáo giá tiêu chuẩn riêng cho chúng. null vá»›i giao dịch mua có chiết khấu khi cá»­a hàng không báo cáo giá tiêu chuẩn đáng tin cậy (ví dụ: tá»± gia hạn bị tắt, lần gia hạn vẫn có ưu đãi, hoặc Ä‘ang chá» thay đổi sản phẩm).
original_price_usdFloatGiống original_price_local, tính theo USD.
original_purchase_dateISO 8601 dateVá»›i gói đăng ký tá»± động gia hạn, giao dịch mua gốc là giao dịch đầu tiên trong chuá»—i, ID cá»§a nó được gá»i là original transaction ID liên kết chuá»—i gia hạn; các giao dịch sau là phần mở rá»™ng cá»§a nó. Ngày mua gốc là ngày và giá» cá»§a giao dịch đầu tiên này.
original_transaction_idString

Với gói đăng ký tự động gia hạn, đây là original transaction ID liên kết chuỗi gia hạn. Giao dịch gốc là giao dịch đầu tiên trong chuỗi; các giao dịch sau là phần mở rộng của nó.

Nếu không có phần mở rộng, original_transaction_id trùng với store_transaction_id.

paywall_nameStringTên của paywall mà giao dịch bắt nguồn từ đó.
paywall_revisionStringPhiên bản của paywall mà giao dịch bắt nguồn từ đó. Giá trị mặc định là 1.
price_localFloatSố tiá»n được tính cho giao dịch trước khi Apple/Google khấu trừ phần cá»§a há», tính theo tiá»n tệ địa phương. null vá»›i bản dùng thá»­ miá»…n phí vì không tính phí gì.
price_usdFloatSố tiá»n được tính cho giao dịch trước khi Apple/Google khấu trừ phần cá»§a há», tính theo USD. null vá»›i bản dùng thá»­ miá»…n phí vì không tính phí gì.
profile_countryStringÄÆ°á»£c Adapty xác định dá»±a trên IP cá»§a hồ sÆ¡ ngưá»i dùng.
profile_event_idUUIDID sự kiện duy nhất có thể dùng để loại trùng lặp.
profile_has_access_levelBooleanGiá trị boolean cho biết hồ sÆ¡ ngưá»i dùng có mức độ truy cập Ä‘ang hoạt động hay không.
profile_idUUIDID hồ sÆ¡ ngưá»i dùng do Adapty tạo ra. Giống vá»›i giá trị ở cấp gốc cá»§a sá»± kiện.
profile_ip_addressStringIP cá»§a hồ sÆ¡ ngưá»i dùng (có thể là IPv4 hoặc IPv6, ưu tiên IPv4 khi có). null nếu Collect users’ IP addresses bị tắt trong cài đặt ứng dụng.
profile_total_revenue_usdFloatTổng doanh thu cá»§a hồ sÆ¡ ngưá»i dùng sau khi đã trừ Ä‘i các khoản hoàn tiá»n.
promotional_offer_idStringID Adapty của ưu đãi được sử dụng. Bạn đặt ID này khi tạo ưu đãi trong dashboard.
purchase_dateISO 8601 dateNgày và giỠmua sản phẩm.
rate_after_first_yearBooleanBoolean cho biết gói đăng ký đủ Ä‘iá»u kiện để được giảm tá»· lệ hoa hồng (thưá»ng là 15%) sau má»™t năm gia hạn liên tục. Tá»· lệ hoa hồng thay đổi tùy theo Ä‘iá»u kiện chương trình và quốc gia. Xem Hoa hồng cá»­a hàng và thuế để biết thêm chi tiết.
storeStringCửa hàng nơi sản phẩm được mua. Các giá trị tiêu chuẩn: app_store, play_store, stripe, paddle.
Nếu bạn thiết lập giao dịch cửa hàng tùy chỉnh qua API phía máy chủ, giá trị từ tham số store sẽ được sử dụng.
store_countryStringQuốc gia do cửa hàng ứng dụng gửi cho chúng tôi.
store_offer_categoryStringDanh mục ưu đãi được áp dụng. Các giá trị có thể có là introductory, promotional, winback.
store_offer_discount_typeStringLoại ưu đãi được áp dụng. Các giá trị có thể có là free_trial, pay_as_you_go, và pay_up_front.
store_offer_number_of_periodsIntegerSố kỳ thanh toán cÆ¡ bản mà ưu đãi chiết khấu (1 kỳ trở lên). Chỉ xuất hiện khi có ưu đãi áp dụng. null vá»›i ưu đãi trả trước má»™t lần cá»§a App Store và khi cá»­a hàng không báo cáo thá»i hạn ưu đãi.
subscription_expires_atISO 8601 dateNgày hết hạn cá»§a gói đăng ký. Thưá»ng là trong tương lai.
transaction_idStringMã định danh duy nhất của giao dịch.
trial_durationStringThá»i hạn cá»§a giai Ä‘oạn dùng thá»­ tính bằng ngày. ÄÆ°á»£c gá»­i theo định dạng †daysâ€, ví dụ “7 daysâ€. Chỉ xuất hiện trong các loại sá»± kiện liên quan đến dùng thá»­: trial_started, trial_converted, trial_cancelled.
variation_idUUIDID duy nhất của paywall nơi thực hiện giao dịch mua.
vendor_product_idString

ID sản phẩm trên Apple App Store, Google Play Store, hoặc Stripe.

Nếu quyá»n truy cập được cấp mà không có giao dịch cá»­a hàng thá»±c, vendor_product_id sẽ là má»™t trong các giá trị:

Thuộc tính sự kiện vỠthuế và doanh thu bổ sung

Các thuá»™c tính sá»± kiện liên quan đến thuế và doanh thu dưới đây là các trưá»ng bổ sung chỉ áp dụng cho má»™t số loại sá»± kiện nhất định. Äiá»u này có nghÄ©a là các loại sá»± kiện được liệt kê bao gồm Thuá»™c tính sá»± kiện cho hầu hết các loại sá»± kiện, cùng vá»›i các trưá»ng bổ sung được liệt kê bên dưới.

Các loại sự kiện có thuộc tính sự kiện vỠthuế và doanh thu:

  • subscription_renewed
  • subscription_initial_purchase (còn được gá»i là subscription_started — cùng má»™t sá»± kiện)
  • subscription_refunded
  • non_subscription_purchase | Field | Type | Description | | :-------------------- | :---- | :----------------------------------------------------------- | | net_revenue_local | Float | Doanh thu thuần (thu nhập sau khi trừ phần cá»§a Apple/Google và thuế) tính theo tiá»n tệ địa phương. | | net_revenue_usd | Float | Doanh thu thuần (thu nhập sau khi trừ phần cá»§a Apple/Google và thuế) tính theo USD. | | proceeds_local | Float | Giá sản phẩm sau khi trừ phần cá»§a Apple/Google tính theo tiá»n tệ địa phương. | | proceeds_usd | Float | Giá sản phẩm sau khi trừ phần cá»§a Apple/Google. | | tax_amount_local | Float | Số tiá»n thuế bị khấu trừ tính theo tiá»n tệ địa phương. | | tax_amount_usd | Float | Số tiá»n thuế bị khấu trừ tính theo USD. |

Ví dụ payload non_subscription_purchase

non_subscription_purchase có cùng cấu trúc vá»›i các sá»± kiện gói đăng ký nhưng phản ánh má»™t lần mua má»™t lần hoặc consumable. Các trưá»ng chỉ dành cho gói đăng ký không áp dụng: cancellation_reason, will_renew, is_in_grace_period, is_refund, is_lifetime, và trial_duration Ä‘á»u không có. subscription_expires_at có mặt nhưng là null. Các trưá»ng thuế và doanh thu (net_revenue_*, proceeds_*, tax_amount_*) được bao gồm.

Ví dụ payload (nhấn để mở rộng)
{
  "profile_id": "00000000-0000-0000-0000-000000000000",
  "customer_user_id": "UserIdInYourSystem",
  "event_type": "non_subscription_purchase",
  "event_datetime": "2000-01-31T00:00:00.000000+0000",
  "event_properties": {
    "store": "app_store",
    "currency": "USD",
    "price_usd": 4.99,
    "price_local": 4.99,
    "original_price_usd": 4.99,
    "original_price_local": 4.99,
    "discount_amount_usd": 0,
    "discount_amount_local": 0,
    "proceeds_usd": 4.2415,
    "proceeds_local": 4.2415,
    "net_revenue_usd": 4.2415,
    "net_revenue_local": 4.2415,
    "tax_amount_usd": 0,
    "tax_amount_local": 0,
    "profile_id": "00000000-0000-0000-0000-000000000000",
    "environment": "Production",
    "vendor_product_id": "100coins",
    "transaction_id": "0000000000000000",
    "original_transaction_id": "0000000000000000",
    "purchase_date": "2024-11-15T10:45:36.181000+0000",
    "original_purchase_date": "2024-11-15T10:45:36.181000+0000",
    "subscription_expires_at": null,
    "store_country": "US",
    "profile_country": "US",
    "profile_ip_address": "10.10.1.1",
    "profile_has_access_level": false,
    "profile_total_revenue_usd": 4.99,
    "consecutive_payments": 1,
    "rate_after_first_year": false,
    "profile_event_id": "00000000-0000-0000-0000-000000000000"
  },
  "event_api_version": 1
}

Äối vá»›i sá»± kiện Access Level Updated

Sự kiện Access Level Updated là một loại sự kiện webhook đặc biệt, chỉ được tạo ra khi tích hợp Webhook đang hoạt động và loại sự kiện này được bật. Nếu được bật, sự kiện sẽ được gửi đến Webhook đã cấu hình và hiển thị trong Event Feed. Nếu không được bật, sự kiện sẽ không được tạo.

Nếu bạn đã bật chia sẻ mức độ truy cập, sá»± kiện access level updated sẽ được gá»­i cho tất cả các hồ sÆ¡ ngưá»i dùng Ä‘ang chia sẻ mức độ truy cập đó.

Sá»­ dụng sá»± kiện này để cập nhật mức độ truy cập cá»§a ngưá»i dùng trong cÆ¡ sở dữ liệu, cấp hoặc thu hồi các tính năng cao cấp trên backend, và đồng bá»™ quyá»n truy cập trên các thiết bị hoặc ná»n tảng khác nhau.

Thuộc tínhKiểuMô tả
ab_test_nameStringTên A/B test nơi giao dịch bắt nguồn.
access_level_idStringID của mức độ truy cập.
activated_atISO 8601 dateNgày và giá» khi quyá»n truy cập được kích hoạt lần gần nhất.
active_introductory_offer_typeStringLoại ưu đãi giới thiệu được áp dụng. Các giá trị có thể là free_trial, pay_as_you_go, và pay_up_front.
active_promotional_offer_idStringID của ưu đãi như được chỉ định trong phần Product của Adapty Dashboard
active_promotional_offer_typeStringLoại ưu đãi được áp dụng. Các giá trị có thể là free_trial, pay_as_you_go, và pay_up_front.
base_plan_idStringBase plan ID trong Google Play Store hoặc price ID trong Stripe.
billing_issue_detected_atISO 8601 dateNgày và giỠxảy ra sự cố thanh toán.
cancellation_reasonStringCác lý do hủy có thể có: voluntarily_cancelled, billing_error, price_increase, product_was_not_available, refund, cancelled_by_developer, new_subscription_replace, upgraded, unknown, adapty_revoked.
cohort_nameStringTên đối tượng mà hồ sÆ¡ ngưá»i dùng thuá»™c vá».
currencyStringÄÆ¡n vị tiá»n tệ địa phương (mặc định là USD).
developer_idStringID của placement nơi giao dịch bắt nguồn.
environmentStringCác giá trị có thể là Sandbox hoặc Production.
event_datetimeISO 8601 dateNgày và giỠcủa sự kiện.
expires_atISO 8601 dateNgày và giá» khi quyá»n truy cập hết hạn.
is_activeBooleanBoolean cho biết mức độ truy cập có đang hoạt động hay không.
is_in_grace_periodBooleanBoolean cho biết hồ sÆ¡ ngưá»i dùng có Ä‘ang trong thá»i gian ân hạn hay không.
is_lifetimeBooleanBoolean cho biết mức độ truy cập có phải là trá»n Ä‘á»i hay không.
is_refundBooleanBoolean cho biết giao dịch có phải là hoàn tiá»n hay không.
original_purchase_dateISO 8601 dateÄối vá»›i các gói đăng ký định kỳ, giao dịch mua ban đầu là giao dịch đầu tiên trong chuá»—i, ID cá»§a nó được gá»i là original transaction ID liên kết chuá»—i gia hạn; các giao dịch sau là phần mở rá»™ng cá»§a nó. Ngày mua ban đầu là ngày và giá» cá»§a giao dịch đầu tiên này.
original_transaction_idString

Äối vá»›i các gói đăng ký định kỳ, đây là original transaction ID liên kết chuá»—i gia hạn. Giao dịch ban đầu là giao dịch đầu tiên trong chuá»—i; các giao dịch sau là phần mở rá»™ng cá»§a nó.

Nếu không có phần mở rộng nào, original_transaction_id trùng với store_transaction_id.

Mã định danh giao dịch của lần mua ban đầu.
paywall_nameStringTên paywall nơi giao dịch bắt nguồn.
paywall_revisionStringPhiên bản của paywall nơi giao dịch bắt nguồn. Giá trị mặc định là 1.
profile_countryStringÄÆ°á»£c xác định bởi Adapty, dá»±a trên IP cá»§a hồ sÆ¡ ngưá»i dùng.
profile_event_idUUIDID sự kiện duy nhất có thể dùng để loại trùng lặp.
profile_has_access_levelBooleanBoolean cho biết hồ sÆ¡ ngưá»i dùng có mức độ truy cập Ä‘ang hoạt động hay không.
profile_idUUIDID hồ sÆ¡ ngưá»i dùng ná»™i bá»™ cá»§a Adapty.
profile_ip_addressStringIP cá»§a hồ sÆ¡ ngưá»i dùng (có thể là IPv4 hoặc IPv6, ưu tiên IPv4 khi có). null nếu Collect users’ IP addresses bị tắt trong cài đặt ứng dụng.
profile_total_revenue_usdFloatTổng doanh thu cá»§a hồ sÆ¡ ngưá»i dùng, bao gồm cả hoàn tiá»n.
purchase_dateISO 8601 dateNgày và giỠmua sản phẩm.
renewed_atISO 8601 dateNgày và giá» khi quyá»n truy cập sẽ được gia hạn.
starts_atISO 8601 dateNgày và giỠkhi mức độ truy cập bắt đầu.
storeStringCửa hàng nơi sản phẩm được mua. Các giá trị tiêu chuẩn: app_store, play_store, stripe, paddle.
Nếu bạn thiết lập giao dịch cửa hàng tùy chỉnh bằng API phía máy chủ, giá trị từ tham số store sẽ được sử dụng.
store_countryStringQuốc gia được app store gửi đến Adapty.
subscription_expires_atISO 8601 dateNgày hết hạn của gói đăng ký.
transaction_idStringMã định danh duy nhất cho một giao dịch.
trial_durationStringThá»i hạn cá»§a giai Ä‘oạn dùng thá»­ tính theo ngày (ví dụ: “7 daysâ€).
variation_idUUIDMã định danh của một biến thể, dùng để gán các giao dịch mua cho paywall này.
vendor_product_idString

ID sản phẩm trong cửa hàng (Apple/Google/Stripe).

Nếu quyá»n truy cập được cấp mà không có giao dịch cá»­a hàng thá»±c, vendor_product_id sẽ là má»™t trong các giá trị sau:

will_renewBooleanCho biết mức độ truy cập trả phí có được gia hạn hay không.

Lưu ý rằng cấu trúc này có thể mở rá»™ng theo thá»i gian — vá»›i dữ liệu má»›i được chúng tôi hoặc các bên thứ ba mà chúng tôi hợp tác giá»›i thiệu. Hãy đảm bảo rằng code xá»­ lý cấu trúc này đủ linh hoạt và chỉ phụ thuá»™c vào các trưá»ng cụ thể thay vì toàn bá»™ cấu trúc.

ÿÿÿÿ