Actions on Google Orders API

Actions on Google Orders API를 사용하면 개발자가 Actions에서 실제 상품의 거래를 처리할 수 있습니다.

인증 요청

API의 엔드포인트에 액세스하려면 OAuth 2.0 인증이 필요합니다. https://www.googleapis.com/auth/actions.order 범위에 승인된 OAuth 2.0 사용자 토큰이 필요합니다.

토큰을 가져오려면 서비스 계정 흐름을 제외하고 사용 가능한 흐름을 사용할 수 있습니다.

다음 스니펫에는 주문의 JSON 페이로드 예시가 포함되어 있습니다.

{
  "order": {
    "merchantOrderId": "1234",
    "userVisibleOrderId": "6789",
    "userVisibleStateLabel": "CONFIRMED",
    "buyerInfo": {
      "email": "xyz@example.com",
      "firstName": "Jane",
      "lastName": "Doe",
      "displayName": "Jane Doe",
      "phoneNumbers": [
        {
          "e164PhoneNumber": "+1234567890"
        }
      ]
    },
    "image": {
      "url": "www.someurl.com"
    },
    "createTime": "2017-01-15T01:30:15.01Z",
    "lastUpdateTime": "2017-01-15T01:30:15.01Z",
    "transactionMerchant": {
      "id": "www.examplemerchant.com",
      "name": "Example Merchant",
      "image": {
        "url": "www.someurl.com"
      },
      "phoneNumbers": [
        {
          "e164PhoneNumber": "+11112223333"
        }
      ],
      "address": {
        "zipCode": "94043",
        "city": "Mountain View",
        "postalAddress": {
          "regionCode": "US",
          "postalCode": "94043",
          "administrativeArea": "CA",
          "locality": "Mountain View",
          "addressLines": [
            "1600, Amphiteatre Parkway"
          ]
        }
      }
    },
    "contents": {
      "lineItems": [
        {
          "id": "1",
          "name": "Pizza Extreme",
          "description": "Has everything a pizza should have",
          "notes": [
            "Vegetarian please"
          ],
          "priceAttributes": [
            {
              "type": "REGULAR",
              "name": "Item Price",
              "state": "ACTUAL",
              "amount": {
                "currencyCode": "USD",
                "amountInMicros": "6000000"
              },
              "taxIncluded": false
            }
          ],
          "vertical": {
            "@type": "type.googleapis.com/google.actions.orders.v3.verticals.purchase.PurchaseItemExtension",
            "productId": "www.examplemerchant.com/123/3333",
            "quantity": 1,
            "itemOptions": [
              {
                "id": "",
                "name": "",
                "prices": [
                  {
                    "type": "REGULAR",
                    "name": "Item Price",
                    "state": "ACTUAL",
                    "amount": {
                      "currencyCode": "USD",
                      "amountInMicros": "2000000"
                    },
                    "taxIncluded": false
                  }
                ],
                "quantity": 1,
                "productId": "www.examplemerchant.com/123/3333/1",
                "subOptions": []
              }
            ]
          },
          "provider": {
            "id": "www.examplemerchant2.com/123",
            "name": "Example Merchant 2",
            "image": {},
            "phoneNumbers": [
              {
                "e164PhoneNumber": "+11112223333"
              }
            ],
            "address": {
              "zipCode": "94043",
              "city": "Mountain View",
              "postalAddress": {
                "regionCode": "US",
                "postalCode": "94043",
                "administrativeArea": "CA",
                "locality": "Mountain View",
                "addressLines": [
                  "1350 Charleston Road"
                ]
              }
            }
          }
        }
      ]
    },
    "priceAttributes": [
      {
        "type": "TOTAL",
        "name": "Total Price",
        "state": "ACTUAL",
        "amount": {
          "currencyCode": "USD",
          "amountInMicros": "10000000"
        },
        "taxIncluded": true
      },
      {
        "type": "TAX",
        "name": "Tax",
        "state": "ACTUAL",
        "amount": {
          "currencyCode": "USD",
          "amountInMicros": "2000000"
        },
        "taxIncluded": true
      },
      {
        "type": "SUBTOTAL",
        "name": "Subtotal",
        "state": "ACTUAL",
        "amount": {
          "currencyCode": "USD",
          "amountInMicros": "6000000"
        },
        "taxIncluded": false
      },
      {
        "type": "DELIVERY",
        "name": "Delivery",
        "state": "ACTUAL",
        "amount": {
          "currencyCode": "USD",
          "amountInMicros": "2000000"
        },
        "taxIncluded": false
      }
    ],
    "followUpActions": [
      {
        "type": "CALL",
        "title": "Call us",
        "openUrlAction": {
          "url": "tel:+16501112222"
        }
      },
      {
        "type": "EMAIL",
        "title": "Email us",
        "openUrlAction": {
          "url": "mailto:person@example.com"
        }
      }
    ],
    "paymentData": {
      "paymentInfo": {
        "paymentMethodDisplayInfo": {
          "paymentType": "PAYMENT_CARD",
          "paymentMethodDisplayName": "VISA **** 1234"
        },
        "paymentMethodProvenance": "PAYMENT_METHOD_PROVENANCE_GOOGLE"
      }
    },
    "termsOfServiceUrl": "www.examplemerchant.com/policy",
    "note": "Vegetarian only",
    "vertical": {
      "@type": "type.googleapis.com/google.actions.orders.v3.verticals.purchase.PurchaseOrderExtension",
      "status": "IN_PREPARATION",
      "type": "FOOD",
      "returnsInfo": {
        "isReturnable": false
      },
      "fulfillmentInfo": {
        "id": "www.examplemerchant.com/merchant-id/123",
        "fulfillmentType": "DELIVERY",
        "expectedFulfillmentTime": {
          "timeIso8601": "PT10M"
        },
        "location": {
          "zipCode": "94086",
          "city": "Sunnyvale",
          "postalAddress": {
            "regionCode": "US",
            "postalCode": "94086",
            "administrativeArea": "CA",
            "locality": "Sunnyvale",
            "addressLines": [
              "222, Some other Street"
            ]
          }
        },
        "price": {
          "type": "REGULAR",
          "name": "Delivery Price",
          "state": "ACTUAL",
          "amount": {
            "currencyCode": "USD",
            "amountInMicros": "2000000"
          },
          "taxIncluded": "FALSE"
        },
        "fulfillmentContact": {
          "email": "xyz@example.com",
          "firstName": "Jane",
          "lastName": "Doe",
          "displayName": "Jane Doe",
          "phoneNumbers": [
            {
              "e164PhoneNumber": "+16507146554"
            }
          ]
        }
      }
    }
  }
}