Rezervasyon oluşturma

Bu rehberde, rezervasyon yapmak için Siparişler API'sini kullanan bir Actions projesi geliştirme süreci açıklanmaktadır.

İşlem akışı

Actions projeniz rezervasyonları işlerken aşağıdaki akışı kullanır:

  1. İşlem gereksinimlerini doğrulayın (isteğe bağlı): Kullanıcının bir işlem gerçekleştirebildiğinden emin olmak için görüşmenin başında işlem gereksinimleri yardımcısını kullanın.
  2. Siparişi oluşturun: Kullanıcıyı rezervasyon ayrıntılarını oluşturduğu "alışveriş sepeti düzenlemesi" için yönlendirin.
  3. Siparişi önerin - "Alışveriş sepeti" tamamlandığında, doğru olduğunu onaylayabilmesi için kullanıcıya rezervasyon "siparişi"ni önerin. Rezervasyon onaylanırsa rezervasyon ayrıntılarını içeren bir yanıt alırsınız.
  4. Siparişi kesinleştirin ve makbuz gönderin - Sipariş onaylandıktan sonra rezervasyon sisteminizi güncelleyin ve kullanıcıya makbuz gönderin.
  5. Sipariş güncellemeleri gönderme - Rezervasyonun kullanım süresi boyunca, Orders API'ye PATCH istekleri göndererek kullanıcıya rezervasyon durumu güncellemeleri bildirin.

Kısıtlamalar ve inceleme kuralları

transactions ve Orders API'yi kullanan işlemler için ek politikaların geçerli olduğunu unutmayın. İşlem içeren işlemleri incelememiz altı haftayı bulabildiği için yayın planınızı planlarken bu süreyi de hesaba katın. İnceleme sürecini kolaylaştırmak için İşleminizi incelemeye göndermeden önce işlemlerle ilgili politikalara ve kurallara uyduğunuzdan emin olun.

Yalnızca aşağıdaki ülkelerde Siparişler API'sini kullanan İşlemleri dağıtabilirsiniz:

Avustralya
Brezilya
Kanada
Endonezya
Japonya
Meksika
Katar
Rusya
Singapur
İsviçre
Tayland
Türkiye
Birleşik Krallık
Amerika Birleşik Devletleri

Projenizi oluşturun

İşlem görüşmelerine ilişkin kapsamlı bir örnek için Node.js'deki İşlemler örneğimizi inceleyin.

Kurulum

İşleminizi oluştururken Actions Console'da işlem gerçekleştirmek istediğinizi belirtmeniz gerekir.

Projenizi ve sipariş karşılamanızı ayarlamak için aşağıdakileri yapın:

  1. Yeni proje oluşturun veya mevcut bir projeyi içe aktarın.
  2. Dağıtma > Dizin bilgileri'ne gidin.
  3. Ek bilgiler > İşlemler bölümünün altında "İşlemleriniz fiziksel ürünlerle ilgili işlemler yapmak için Transaction API'yi kullanıyor mu?" yazan kutuyu işaretleyin.

İşlem şartlarını doğrulayın (isteğe bağlı)

Kullanıcı rezervasyon yapmak istediğini belirttiğinde, rezervasyon isteğinde bulunabileceğinden emin olmalısınız. Örneğin, çağrıldığında İşleminiz "Koltuk rezerve etmek ister misiniz?" diye sorabilir Kullanıcı "evet" derse devam edebileceğinden emin olmalı ve işleme devam etmesini engelleyen ayarları düzeltmesi için bir fırsat vermelisiniz. Bunun için işlem gereksinimleri kontrolü gerçekleştiren bir sahneye geçiş yapmanız gerekir.

İşlem Koşulları Kontrolü sahnesi oluşturma

  1. Sahneler sekmesinden TransactionRequirementsCheck adıyla yeni bir sahne ekleyin.
  2. Slot doldurma bölümünde, yeni bir alan eklemek için + simgesini tıklayın.
  3. Tür seçin'in altında alan türü olarak actions.type.TransactionRequirementsCheckResult'yi seçin.
  4. Alan adı alanında, alana TransactionRequirementsCheck adını girin.
  5. Alan değeri yazma işlevini özelleştir onay kutusunu işaretleyin (varsayılan olarak etkindir).
  6. Kaydet'i tıklayın.

İşlem gereksinimleri kontrolü aşağıdaki sonuçlardan biriyle sonuçlanır:

  • Şartlar karşılanırsa, oturum parametresi bir başarı koşulu ile ayarlanır ve kullanıcının siparişini oluşturma işlemine devam edebilirsiniz.
  • Koşullardan biri veya daha fazlası karşılanamazsa oturum parametresi bir hata koşuluyla ayarlanır. Bu durumda konuşmayı işlem deneyiminden uzaklaştırmalı veya sonlandırmalısınız.
    • Hata durumuyla sonuçlanan hatalar kullanıcı tarafından düzeltilebiliyorsa kullanıcıdan bu sorunları cihazında çözmesi istenir. Görüşme yalnızca sesli bir yüzeyde gerçekleşiyorsa kullanıcının telefonuna aktarım başlatılır.

İşlem Koşullarını İşleme Kontrol sonucu

  1. Sahneler sekmesinden, yeni oluşturduğunuz TransactionRequirementsCheck sahnesini seçin.
  2. Koşul bölümünde, yeni bir koşul eklemek için + simgesini tıklayın.
  3. Başarı koşulunu kontrol etmek için metin alanına aşağıdaki koşul söz dizimini girin:

    scene.slots.status == "FINAL" && session.params.TransactionRequirementsCheck.resultType == "CAN_TRANSACT"
    
  4. İmlecinizi yeni eklediğiniz koşulun üzerine getirin ve if scene.slots.status == "FINAL" koşulunun önüne yerleştirmek için yukarı oku tıklayın.

  5. İstemleri gönder'i etkinleştirin ve kullanıcıya bir işlem yapmaya hazır olduğunu bildiren basit bir istem sağlayın:

    candidates:
      - first_simple:
          variants:
            - speech: >-
                Looks like you're good to go!.
    
  6. Transition (Geçiş) bölümünde başka bir sahne seçin. Kullanıcının görüşmeye devam etmesine ve işlem gerçekleştirmesine olanak tanıyın.

  7. Koşulu seçin else if scene.slots.status == "FINAL".

  8. İstemleri gönder'i etkinleştirin ve kullanıcıya bir işlem yapamayacağını bildiren basit bir istem sağlayın:

    candidates:
      - first_simple:
          variants:
            - speech: Transaction requirements check failed.
    
  9. Bir kullanıcı işlem yapamıyorsa görüşmeyi sonlandırmak için Geçiş bölümünde Görüşmeyi sonlandır'ı seçin.

Siparişi oluşturmak

İhtiyacınız olan kullanıcı bilgilerini edindikten sonra, kullanıcıyı rezervasyonunu oluşturması için yönlendiren bir "alışveriş sepeti montajı" deneyimi oluşturun. Her İşlemin sunduğu hizmete uygun alışveriş sepeti montaj akışı biraz farklı olacaktır.

Temel bir alışveriş sepeti montaj deneyiminde kullanıcı, listeden rezervasyonuna eklemek için seçenekler belirler. Ancak siz konuşmayı kullanıcı deneyimini kolaylaştıracak şekilde tasarlayabilirsiniz. Örneğin, kullanıcının basit bir evet-hayır sorusuyla aylık rezervasyon planlaması yapmasını sağlayan bir alışveriş sepeti montaj deneyimi oluşturun. Ayrıca kullanıcıya "önerilen" rezervasyonlardan oluşan bir bant veya liste kartı sunabilirsiniz.

Kullanıcının seçeneklerini görsel olarak sunmak için zengin yanıtlar kullanmanızı öneririz. Ancak aynı zamanda konuşmayı, kullanıcının yalnızca sesini kullanarak alışveriş sepetini oluşturabileceği şekilde tasarlamanızı öneririz. Alışveriş sepetini montaj deneyimleriyle ilgili bazı en iyi uygulamalar ve örnekler için Tasarım yönergelerine bakın.

Sipariş oluşturma

Görüşmeniz boyunca kullanıcının rezervasyon bilgilerini toplayın ve ardından bir Order nesnesi oluşturun.

Order en azından aşağıdakileri içermelidir:

  • buyerInfo - Satın alma işlemini yapan kullanıcı hakkında bilgiler.
  • transactionMerchant: Siparişi sağlayan satıcı hakkında bilgiler.
  • contents - lineItems olarak listelenen siparişin gerçek içeriği.

Alışveriş sepetinizi oluşturmak için Order yanıt belgelerini inceleyin. Rezervasyona bağlı olarak farklı alanlar eklemeniz gerekebileceğini unutmayın.

Aşağıdaki örnek kod, isteğe bağlı alanlar da dahil olmak üzere eksiksiz bir rezervasyon siparişini göstermektedir:

const order = {
   createTime: '2019-09-24T18:00:00.877Z',
   lastUpdateTime: '2019-09-24T18:00:00.877Z',
   merchantOrderId: orderId, // A unique ID String for the order
   userVisibleOrderId: orderId,
   transactionMerchant: {
     id: 'http://www.example.com',
     name: 'Example Merchant',
   },
   contents: {
     lineItems: [
       {
         id: 'LINE_ITEM_ID',
         name: 'Dinner reservation',
         description: 'A world of flavors all in one destination.',
         reservation: {
           status: 'PENDING',
           userVisibleStatusLabel: 'Reservation is pending.',
           type: 'RESTAURANT',
           reservationTime: {
             timeIso8601: '2020-01-16T01:30:15.01Z',
           },
           userAcceptableTimeRange: {
             timeIso8601: '2020-01-15/2020-01-17',
           },
           partySize: 6,
           staffFacilitators: [
             {
               name: 'John Smith',
             },
           ],
           location: {
             zipCode: '94086',
             city: 'Sunnyvale',
             postalAddress: {
               regionCode: 'US',
               postalCode: '94086',
               administrativeArea: 'CA',
               locality: 'Sunnyvale',
               addressLines: [
                 '222, Some other Street',
               ],
             },
           },
         },
       },
     ],
   },
   buyerInfo: {
     email: 'janedoe@gmail.com',
     firstName: 'Jane',
     lastName: 'Doe',
     displayName: 'Jane Doe',
   },
   followUpActions: [
     {
       type: 'VIEW_DETAILS',
       title: 'View details',
       openUrlAction: {
         url: 'http://example.com',
       },
     },
     {
       type: 'CALL',
       title: 'Call us',
       openUrlAction: {
         url: 'tel:+16501112222',
       },
     },
     {
       type: 'EMAIL',
       title: 'Email us',
       openUrlAction: {
         url: 'mailto:person@example.com',
       },
     },
   ],
   termsOfServiceUrl: 'http://www.example.com'
 };

Sipariş ve sunum seçenekleri oluşturma

const orderOptions = {
      'requestDeliveryAddress': false,
    };

const presentationOptions = {
      'actionDisplayName': 'RESERVE'
    };

Sipariş verilerini oturum parametresine kaydet

Sipariş karşılamanızdaki sipariş verilerini bir oturum parametresine kaydedin. Sıra nesnesi aynı oturum için sahnelerde kullanılır.

conv.session.params.order = {
    '@type': 'type.googleapis.com/google.actions.transactions.v3.TransactionDecisionValueSpec',
    order: order,
    orderOptions: orderOptions,
    presentationOptions: presentationOptions
};

Siparişi öner

Bir rezervasyon siparişi oluşturduğunuzda, siparişi onaylaması veya reddetmesi için kullanıcıya sunmanız gerekir. Bunun için işlem kararı veren bir sahneye geçiş yapmanız gerekir.

İşlem Kararı sahnesi oluşturma

  1. Sahneler sekmesinden TransactionDecision adlı yeni bir sahne ekleyin.
  2. Slot doldurma bölümünde, yeni bir alan eklemek için + simgesini tıklayın.
  3. Tür seçin'in altında, alan türü olarak actions.type.TransactionDecisionValue'yi seçin.
  4. Alan adı alanında, alana TransactionDecision adını girin.
  5. Alan değeri yazma işlevini özelleştir onay kutusunu işaretleyin (varsayılan olarak etkindir).
  6. Alanı yapılandır bölümünde, açılır listeden Oturum parametresini kullan'ı seçin.
  7. Alanı yapılandır bölümünde,sırayı metin alanına depolamak için kullanılan oturum parametresinin adını girin (ör. $session.params.order).
  8. Kaydet'i tıklayın.

Asistan, bir TransactionDecisionValue yuvasını doldurma girişiminde bulunmak için yerleşik bir deneyim başlatır. Bu deneyimde, ilettiğiniz Order doğrudan "alışveriş sepeti önizleme kartı"nda oluşturulur. Kullanıcı, "rezervasyon yap" diyebilir, işlemi reddedebilir veya rezervasyon ayrıntılarını değiştirme isteğinde bulunabilir.

Kullanıcı bu noktada sipariş için değişiklik isteğinde de bulunabilir. Bu durumda, alışveriş sepeti montajı deneyimini tamamladıktan sonra sipariş karşılama işleminizin sipariş değişikliği isteklerini karşılayabileceğinden emin olmanız gerekir.

İşlem Kararı sonucunu işleme

Bir TransactionDecisionValue slotu doldurulduğunda kullanıcının işlem kararına verdiği yanıt bir oturum parametresinde depolanır. Bu değer şunları içerir:

  • ORDER_ACCEPTED,
  • ORDER_REJECTED,
  • CART_CHANGE_REQUESTED
  • USER_CANNOT_TRANSACT.

Bir işlem kararı sonucunu işlemek için:

  1. Sahneler sekmesinden, yeni oluşturduğunuz TransactionDecision sahnesini seçin.
  2. Koşul bölümünde, yeni bir koşul eklemek için + simgesini tıklayın.
  3. Başarı koşulunu kontrol etmek için metin alanına aşağıdaki koşul söz dizimini girin:

    scene.slots.status == "FINAL" && session.params.TransactionDecision.transactionDecision == "ORDER_ACCEPTED"
    
  4. İmlecinizi yeni eklediğiniz koşulun üzerine getirin ve if scene.slots.status == "FINAL" koşulunun önüne yerleştirmek için yukarı oku tıklayın.

  5. İstemleri gönder'i etkinleştirin ve kullanıcıya rezervasyonunun tamamlandığını bildiren basit bir istem sağlayın:

    candidates:
      - first_simple:
          variants:
            - speech: >-
                Transaction completed! Your reservation
                $session.params.TransactionDecision.order.merchantOrderId is all
                set!
    
  6. İleti dizisini sonlandırmak için Geçiş bölümünde Görüşmeyi sonlandır'ı seçin.

  7. Koşul bölümünde, yeni bir koşul eklemek için + simgesini tıklayın.

  8. Hata koşullarını kontrol etmek için metin alanına aşağıdaki koşul söz dizimini girin:

      scene.slots.status == "FINAL" && session.params.TransactionDecision.transactionDecision == "ORDER_REJECTED"
    
  9. İmlecinizi yeni eklediğiniz koşulun üzerine getirin ve if scene.slots.status == "FINAL" koşulunun önüne yerleştirmek için yukarı oku tıklayın.

  10. İstemleri gönder'i etkinleştirin ve kullanıcıya siparişin reddedildiğini bildiren basit bir istem sağlayın:

    candidates:
      - first_simple:
          variants:
            - speech: Looks like you don't want to set up a reservation. Goodbye.
    
  11. İleti dizisini sonlandırmak için Geçiş bölümünde Görüşmeyi sonlandır'ı seçin.

  12. Koşulu seçin else if scene.slots.status == "FINAL".

  13. İstemleri gönder'i etkinleştirin ve kullanıcıya bir işlem yapamayacağını bildiren basit bir istem sağlayın:

    candidates:
      - first_simple:
          variants:
            - speech: >-
                Transaction failed with status
                $session.params.TransactionDecision.transactionDecision
    
  14. Bir kullanıcı işlem yapamıyorsa görüşmeyi sonlandırmak için Geçiş bölümünde Görüşmeyi sonlandır'ı seçin.

Rezervasyonu tamamlama ve makbuz gönderme

TransactionDecisionValue alanı ORDER_ACCEPTED sonucunu döndürdüğünde rezervasyonu planlamak için gerekli olan işlemleri hemen gerçekleştirmeniz gerekir (rezervasyonu kendi veritabanınızda tutmak gibi).

İletişimin devam etmesi için basit bir yanıt gönderin. Kullanıcı, yanıtınızla birlikte bir "daraltılmış makbuz kartı" alır.

İlk sipariş güncellemesini göndermek için:

  1. Sahneler sekmesinden TransactionDecision sahnenizi seçin.
  2. Koşul bölümünde, başarılı sonucu kontrol eden koşulu seçin. ORDER_ACCEPTED:

    scene.slots.status == "FINAL" && session.params.TransactionDecision.transactionDecision == "ORDER_ACCEPTED"
    
  3. Bu koşul için Webhook'unuzu çağırın özelliğini etkinleştirin ve update_order gibi bir amaç işleyici adı sağlayın.

  4. Webhook kodunuza, ilk sipariş güncellemesi göndermek için bir amaç işleyici ekleyin:

    app.handle('update_order', conv => {
      const currentTime = new Date().toISOString();
      let order = conv.session.params.TransactionDecision.order;
      conv.add(new OrderUpdate({
        'updateMask': {
          'paths': [
            'reservation.status',
            'reservation.user_visible_status_label',
            'reservation.confirmation_code'
          ]
        },
        'order': {
          'merchantOrderId': order.merchantOrderId,
          'lastUpdateTime': currentTime,
          'reservation': {
            'status': 'CONFIRMED',
            'userVisibleStatusLabel': 'Reservation confirmed',
            'confirmationCode': '123ABCDEFGXYZ',
          },
        },
        'reason': 'Reason string'
      }));
    });
    

Sipariş güncellemeleri gönder

Rezervasyon durumu, kullanım ömrü boyunca değişir. Kullanıcıya, HTTP PATCH istekleriyle rezervasyon siparişi güncellemelerini, sipariş durumunu ve ayrıntılarını içeren Orders API'ye gönderin.

Orders API'ye eşzamansız istekler oluşturma

Orders API'ye gönderilen sipariş güncelleme istekleri, erişim jetonuyla yetkilendirilir. Siparişler API'ye YAMA YAYAMAK için Actions Console projenizle ilişkili bir JSON hizmet hesabı anahtarı indirin, ardından hizmet hesabı anahtarını, HTTP isteğinin Authorization başlığına iletilebilecek bir hamiline ait jetonla değiştirin.

Hizmet hesabı anahtarınızı almak için aşağıdaki adımları uygulayın:

  1. Google Cloud konsolunda, Menü değişikliği > API'ler ve Hizmetler > Kimlik bilgileri > Kimlik bilgisi oluştur > Hizmet hesabı anahtarı'na gidin.
  2. Service Account (Hizmet Hesabı) bölümünde New Service Account (Yeni Hizmet Hesabı) seçeneğini belirleyin.
  3. Hizmet hesabını service-account olarak ayarlayın.
  4. RolProje > Sahip olarak ayarlayın.
  5. Anahtar türünü JSON olarak ayarlayın.
  6. Oluştur'u seçin.
  7. Özel bir JSON hizmet hesabı anahtarı yerel makinenize indirilir.

Sipariş güncellemeleri kodunuzda, Google API'leri istemci kitaplığını ve "https://www.googleapis.com/auth/actions.order.developer" kapsamını kullanarak hizmet anahtarınızı hamiline ait jetonla değiştirin. Kurulum adımlarını ve örnekleri API istemci kitaplığı GitHub sayfasında bulabilirsiniz.

Örnek anahtar değişimi için Node.js örneğimizde order-update.js referansına bakın.

Sipariş güncellemeleri gönder

Hizmet hesabı anahtarınızı OAuth hamiline ait jetonla değiştirdikten sonra, sipariş güncellemelerini Siparişler API'sine yetkili PATCH istekleri olarak gönderin.

Siparişler API URL'si: PATCH https://actions.googleapis.com/v3/orders/${orderId}

İsteğinizde aşağıdaki başlıkları sağlayın:

  • Hizmet hesabı anahtarınızı değiştirdiğiniz OAuth hamiline ait jetonla "Authorization: Bearer token".
  • "Content-Type: application/json".

YAMA isteği, aşağıdaki biçimde bir JSON gövdesi almalıdır:

{ "orderUpdate": OrderUpdate }

OrderUpdate nesnesi, aşağıdaki üst düzey alanlardan oluşur:

  • updateMask - Güncellediğiniz siparişin alanları. Rezervasyon durumunu güncellemek için değeri reservation.status, reservation.userVisibleStatusLabel olarak ayarlayın.
  • order - Güncellemenin içeriği. Rezervasyonun içeriğini güncelliyorsanız değeri, güncellenen Order nesnesine ayarlayın. Sadece rezervasyonun durumunu güncelliyorsanız (örneğin, "PENDING" değerinden "FULFILLED" değerine) nesne aşağıdaki alanları içerir:

    • merchantOrderId: Order nesnenizde ayarladığınız kimlik.
    • lastUpdateTime - Bu güncellemenin zaman damgası.
    • purchase - Aşağıdakileri içeren bir nesne:
      • status - Siparişin ReservationStatus olarak durumu (ör. "CONFIRMED" veya "CANCELLED").
      • userVisibleStatusLabel: Sipariş durumuyla ilgili ayrıntıları (ör. "Rezervasyonunuz onaylandı") sağlayan, kullanıcıya gösterilen etiket.
  • userNotification nesnesi. Bu nesnenin dahil edilmesinin, kullanıcının cihazında bir bildirimin görüneceğini garanti etmediğini unutmayın.

Aşağıdaki örnek kod, rezervasyon siparişinin durumunu FULFILLED olarak güncelleyen bir OrderUpdate örneğini gösterir:

// Import the 'googleapis' module for authorizing the request.
const {google} = require('googleapis');
// Import the 'request-promise' module for sending an HTTP POST request.
const request = require('request-promise');
// Import the OrderUpdate class from the client library.
const {OrderUpdate} = require('@assistant/conversation');

// Import the service account key used to authorize the request.
// Replacing the string path with a path to your service account key.
// i.e. const serviceAccountKey = require('./service-account.json')

// Create a new JWT client for the Actions API using credentials
// from the service account key.
let jwtClient = new google.auth.JWT(
   serviceAccountKey.client_email,
   null,
   serviceAccountKey.private_key,
   ['https://www.googleapis.com/auth/actions.order.developer'],
   null,
);

// Authorize the client
let tokens = await jwtClient.authorize();

// Declare the ID of the order to update.
const orderId = '<UNIQUE_MERCHANT_ORDER_ID>';

// Declare order update
const orderUpdate = new OrderUpdate({
   updateMask: {
     paths: [
       'contents.lineItems.reservation.status',
       'contents.lineItems.reservation.userVisibleStatusLabel'
     ]
   },
   order: {
     merchantOrderId: orderId, // Specify the ID of the order to update
     lastUpdateTime: new Date().toISOString(),
     contents: {
       lineItems: [
         {
           reservation: {
             status: 'FULFILLED',
             userVisibleStatusLabel: 'Reservation fulfilled',
           },
         }
       ]
     },
   },
   reason: 'Reservation status was updated to fulfilled.',
});

// Set up the PATCH request header and body,
// including the authorized token and order update.
let options = {
 method: 'PATCH',
 uri: `https://actions.googleapis.com/v3/orders/${orderId}`,
 auth: {
   bearer: tokens.access_token,
 },
 body: {
   header: {
     isInSandbox: true,
   },
   orderUpdate,
 },
 json: true,
};

// Send the PATCH request to the Orders API.
try {
 await request(options);
} catch (e) {
 console.log(`Error: ${e}`);
}

Rezervasyon durumunu ayarlama

Sipariş güncellemesinin ReservationStatus değeri, siparişin mevcut durumunu açıklayıcı olmalıdır. Güncellemenizin order.ReservationStatus alanında aşağıdaki değerlerden birini kullanın:

  • PENDING - Rezervasyon İşleminiz tarafından "oluşturulmuş" ancak arka uçunuzda ek işlem yapılması gerekiyor.
  • CONFIRMED - Rezervasyon, planlama arka uçunuzda onaylanmıştır.
  • CANCELLED - Kullanıcı rezervasyonunu iptal etti.
  • FULFILLED - Kullanıcının rezervasyonu hizmet tarafından yerine getirildi.
  • CHANGE_REQUESTED - Kullanıcı, rezervasyonda değişiklik isteğinde bulundu ve değişiklik işleniyor.
  • REJECTED - Rezervasyonu işleyemediyseniz veya başka bir şekilde onaylayamadıysanız.

Rezervasyonunuzla ilgili her durum için sipariş güncellemeleri gönderin. Örneğin, rezervasyonunuz istendiğinde rezervasyonu onaylamak için manuel işlem gerektiriyorsa ek işlem tamamlanana kadar PENDING sipariş güncellemesi gönderin. Her rezervasyon için her durum değeri gerekli değildir.

Projenizi test etme

Projenizi test ederken herhangi bir ödeme yöntemi ücreti almadan İşleminizi test etmek için Actions konsolunda korumalı alan modunu etkinleştirebilirsiniz. Korumalı alan modunu etkinleştirmek için aşağıdaki adımları uygulayın:

  1. Actions Console'daki gezinme menüsünde Test et'i tıklayın.
  2. Ayarlar'ı tıklayın.
  3. Geliştirme Korumalı Alanı seçeneğini etkinleştirin.

Fiziksel işlemler için, örneğinizde isInSandbox alanını true olarak da ayarlayabilirsiniz. Bu işlem, Actions konsolundaki korumalı alan modu ayarını etkinleştirmeyle eşdeğerdir. isInSandbox kullanan bir kod snippet'i görmek için Sipariş güncellemelerini gönderme bölümünü inceleyin.

Sorun giderme

Test sırasında herhangi bir sorunla karşılaşırsanız işlemlerle ilgili sorun giderme adımlarımızı okuyun.