الگوهای URL برای تغییر مسیر پرداخت، الگوهای URL برای تغییر مسیر پرداخت

پس از رزرو یک اسلات در دسترس بودن با قیمتی خاص، کاربر با استفاده از یک URL که توسط شما تعریف شده است به صفحه رزرو شما هدایت می شود. مراحل ارائه شده به شما نشان می دهد که چگونه کارهای زیر را انجام دهید:

  1. قالب URL خود را تعریف کنید.
  2. الگوی URL خود را در فیدهای خود تنظیم کنید.
  3. فعال کردن پیوند در هر شکاف دسترسی.

1. تعریف قالب URL شما.

الگوی uri از مشخصات الگوی Uri سطح 2 RFC6570 نیروی کار مهندسی اینترنت (IETF) پیروی می کند، جزئیات بیشتر در datatracker.ietf.org URL توسط شما با پارامترهایی تنظیم شده است که به صورت پویا با اطلاعات مربوط به آن رزرو پر شده است. جدول زیر شامل پارامترهای مورد نیاز و اختیاری است که برای الگوی uri شما موجود است.

`https://reservation-provider.com/examplerestaurant/book?date={availability_slot_start_seconds}&num_guests={resources_party_size}`

مقادیر موجود برای الگوی URL

پارامترهای قالب مورد نیاز / اختیاری خوراک رشته مقدار نمونه
availability_slot_start_seconds ضروری دسترسی start_sec 4152695841
منابع_حزب_اندازه ضروری در دسترس بودن.منابع اندازه_پارتی 2
availability_slot_availability_tag اختیاری دسترسی availability_tag res-123
availability_slot_duration_seconds اختیاری دسترسی duration_sec 3600
resources_room_id اختیاری در دسترس بودن.منابع room_id bar_123

2. الگوی URI خود را در فید خود تنظیم کنید.

بخش زیر فرض می‌کند که یک E2E زنده با یک سرویس فید موجود یکپارچه شده‌اید. نشانی اینترنتی که تعریف کرده‌اید در فید سرویس تنظیم می‌شود، موارد زیر شامل تعریف آن قسمت می‌شود.

message Service {
  // ..
  UriTemplate uri_template = 38;
}

تعریف قالب Uri

// A template specifying how Google should generate URLs to external site.
message UriTemplate {
  // The uri template must follow the RFC6570, see
  // https://datatracker.ietf.org/doc/html/rfc6570.
  // Supports Level 2 templates.
  // These parameters will be resolved to their values specified in their
  // respective entities.
  //
  // 5 available parameters for Dining Reservation Linkout:
  // 1) (required) {availability_slot_start_seconds} :: populated from start_sec
  //   field in availability feed
  // 2) (required) {availability_slot_duration_seconds} :: populated from
  //   duration_sec field in availability feed
  // 3) (optional) {resources_party_size} :: populated from party_size field in
  //   availability feed
  // 4) (optional) {availability_availability_tag} :: populated from
  //   availability_tag field in availability feed
  // 5) (optional) {resources_room_id} :: populated from room_id field in
  //   availability feed
  //
  // Example usage:
  // http://example.com/book/restaurant?start={availability_slot_start_seconds}
  // &num_guests={resources_party_size}
  // * start_sec = 123456
  // * party_size = 2
  // https://example.com/book/restaurant?start=123456&num_guests=2
  string uri_template = 1;
}

تعریف نمونه خدمات

{
  "metadata": {
    "processing_instruction": "PROCESS_AS_COMPLETE",
    "shard_number": 0,
    "total_shards": 1,
    "nonce": "12484913",
    "generation_timestamp": 1530432018
  },
  "service": [
    {
      "merchant_id": "dining-A",
      "service_id": "reservation",
      "uri_template": {
        "uri_template": "https://reservation-provider.com/examplerestaurant/book?date={availability_slot_start_seconds}&num_guests={resources_party_size}"
      },
      "localized_service_name": {
        "value": "Reservation",
        "localized_value": [
          {
            "locale": "en",
            "value": "Reservation"
          }
        ]
      }
    }
  ]
}

بخش زیر فرض می‌کند که یک E2E زنده با یک فید موجودی موجود ادغام شده‌اید. هنگامی که الگوی URL را در فید سرویس خود تنظیم کردید، باید مشخص کنید که کدام یک از اسلات های موجود برای پیوند دادن لازم است.

می توانید این کار را با افزودن فیلد linkout_required_reason با مقدار PAYMENT_REQUIRED انجام دهید.

تعریف دلیل Linkout

message Availability {
  // ..
  LinkoutRequiredReason linkout_required_reason = 19;
}
  // The reason why a slot requires a linkout. Currently only used for Dining
  // Reservations Payment Redirect Partners.
  enum LinkoutRequiredReason {
    // Default value: Do not use, equates to unknown.
    LINKOUT_REQUIRED_REASON_UNSPECIFIED = 0;
    // Slot requires payment in the partner platform to be booked.
    PAYMENT_REQUIRED = 1;
  }

تعریف نمونه دلیل Linkout

{
  "metadata": {
    "processing_instruction": "PROCESS_AS_COMPLETE",
    "shard_number": 0,
    "total_shards": 1,
    "nonce": "11203880",
    "generation_timestamp": 1543875200
  },
  "service_availability": [
    {
      "availability": [
        {
          "merchant_id": "dining-A",
          "service_id": "reservation",
          "linkout_required_reason": "PAYMENT_REQUIRED",
          "start_sec": 1535853600,
          "duration_sec": 2700,
          "spots_total": 2,
          "spots_open": 2,
          "resources": {
            "room_id": "A-dining-room",
            "room_name": "Dining Room",
            "party_size": 2
          }
        }
      ]
    }
  ]
}