POST /api/v1/profile/transaction-event/save/

Lưu sự kiện giao dịch

Ghi lại một sự kiện giao dịch từ cửa hàng cho một hồ sơ người dùng. Adapty Mail sử dụng các sự kiện giao dịch để đưa hồ sơ người dùng vào các flow dựa trên lịch sử mua hàng — event_type được ánh xạ tới các flow như hủy gia hạn, vấn đề thanh toán, hết hạn và hoàn tiền — cũng như để attribution doanh thu.

Gửi các sự kiện này khi bạn xử lý các giao dịch mua, gia hạn và hủy. Chỉ có flow chưa từng mua là hoạt động mà không cần chúng.

Request body

event_typestringrequired

Loại sự kiện giao dịch. Các flow dựa trên giao dịch mua được kích hoạt bởi các giá trị này.

One of: "subscription_started", "subscription_renewed", "subscription_renewal_cancelled", "subscription_renewal_reactivated", "billing_issue_detected", "entered_grace_period", "subscription_refunded", "subscription_expired", "non_subscription_purchase", "non_subscription_purchase_refunded"

event_idstringrequired

Mã định danh duy nhất cho sự kiện này, do hệ thống của bạn quản lý. Sử dụng để đảm bảo tính idempotent cho các sự kiện.

event_datetimestringrequired

Thời điểm sự kiện được ghi lại, theo định dạng ISO 8601.

external_profile_idstringrequired

external_profile_id ổn định mà bạn gửi khi lưu hồ sơ người dùng. Liên kết giao dịch với hồ sơ người dùng đúng. Bạn có thể gửi giao dịch trước khi hồ sơ người dùng tồn tại. Adapty Mail lưu trữ sự kiện chưa được liên kết và sẽ liên kết với hồ sơ người dùng trong lần lưu tiếp theo có cùng mã định danh.

customer_user_idstring

Mã định danh của người dùng trong hệ thống của bạn. Adapty Mail sử dụng nó để tìm hồ sơ người dùng khi external_profile_id không khớp. Nó không được lưu trữ trong sự kiện.

emailstring

Địa chỉ email của người mua. Adapty Mail sử dụng nó để tìm hồ sơ người dùng khi cả hai mã định danh đều không khớp. Nó không được lưu trữ trong sự kiện.

storestringrequired

Cửa hàng mà giao dịch đến từ đó, ví dụ như app_store, play_store hoặc stripe.

store_product_idstringrequired

Mã định danh của sản phẩm đã mua trong cửa hàng.

store_transaction_idstringrequired

Mã định danh của giao dịch này trong cửa hàng.

store_original_transaction_idstringrequired

Mã định danh của giao dịch đầu tiên trong chuỗi gói đăng ký. Đối với lần mua đầu tiên, giá trị này bằng store_transaction_id.

purchased_atstringrequired

Thời điểm giao dịch này xảy ra, theo định dạng ISO 8601.

originally_purchased_atstringrequired

Thời điểm gói đăng ký được mua lần đầu tiên, theo định dạng ISO 8601.

price_usdstring

Số tiền giao dịch tính bằng USD, dưới dạng chuỗi thập phân (ví dụ như "9.99").

expires_atstring

Thời điểm gói đăng ký hết hạn hoặc đã hết hạn, theo định dạng ISO 8601. Bỏ qua đối với các sản phẩm mua một lần.

offerobject

Chi tiết của ưu đãi hoặc ưu đãi giới thiệu được áp dụng cho giao dịch.

categorystringrequired

One of: "introductory", "promotional", "offer_code", "win_back"

offer_typestringrequired

One of: "free_trial", "pay_as_you_go", "pay_up_front"

offer_idstring

Mã định danh của ưu đãi trong cửa hàng, nếu có.

Responses

Sự kiện giao dịch đã được lưu thành công. Nội dung phản hồi là một đối tượng rỗng.

Schema
object
Example
{}

Xác thực thất bại — một trường bắt buộc bị thiếu hoặc không hợp lệ. field_name cho biết trường nào bị lỗi.

Schema

Phản hồi lỗi tiêu chuẩn. Mọi lỗi đều trả về trạng thái 4XX với cấu trúc này.

errorsarray of object
messagestring

Mô tả lỗi có thể đọc được.

error_codestring

Mã định danh lỗi dành cho máy đọc.

status_codeinteger

Mã trạng thái HTTP cho lỗi này.

field_namestring

Trường yêu cầu gây ra lỗi, hoặc null nếu lỗi không liên quan đến trường cụ thể nào.

Example
{
  "errors": [
    {
      "message": "Field required",
      "error_code": "base_error",
      "status_code": 400,
      "field_name": "event_type"
    }
  ]
}

Thiếu hoặc không hợp lệ secret API key.

Schema

Phản hồi lỗi tiêu chuẩn. Mọi lỗi đều trả về trạng thái 4XX với cấu trúc này.

errorsarray of object
messagestring

Mô tả lỗi có thể đọc được.

error_codestring

Mã định danh lỗi dành cho máy đọc.

status_codeinteger

Mã trạng thái HTTP cho lỗi này.

field_namestring

Trường yêu cầu gây ra lỗi, hoặc null nếu lỗi không liên quan đến trường cụ thể nào.

Example
{
  "errors": [
    {
      "message": "Secret key doesn't exist",
      "error_code": "secret_key_does_not_exist_error",
      "status_code": 403,
      "field_name": null
    }
  ]
}