Tiêu chuẩn giao thức

API tuân theo một bộ tiêu chuẩn API HTTP và hỗ trợ không đồng đều để hỗ trợ tích hợp.

URL do Google lưu trữ

Tài liệu về mỗi phương thức do Google lưu trữ đều cung cấp một URL cơ sở. bao gồm tên phương thức và số phiên bản chính. Đã tạo URL hoàn chỉnh bằng cách thêm ID tài khoản nhà tích hợp thanh toán của người gọi vào kết thúc. Ví dụ: tài liệu về phương thức lặp lại do Google lưu trữ chỉ định URL:

https://vgw.googleapis.com/secure-serving/gsp/v1/echo

Nếu Mã tài khoản Trình tích hợp thanh toán của người gọi là INTEGRATOR_1, họ sẽ thêm mà vào cuối URL tạo thành:

https://vgw.googleapis.com/secure-serving/gsp/v1/echo/INTEGRATOR_1

URL do đối tác lưu trữ

Tài liệu về mỗi phương thức API do đối tác lưu trữ cung cấp một URL cơ sở. bao gồm tên phương thức và số phiên bản chính. Bạn không nên đưa vào Mã tài khoản của đơn vị tích hợp thanh toán (PIAID) trong các URL bạn lưu trữ.

Môi trường hộp cát và môi trường thực tế

Google lưu trữ API Thanh toán tiêu chuẩn trong cả hộp cát (để phát triển và cho mục đích thử nghiệm) và sản xuất. Yêu cầu trong môi trường hộp cát của Google không phát sinh trách nhiệm tài chính nào trong thực tế. Hộp cát và môi trường sản xuất hoàn toàn riêng biệt và không dùng chung khoá hoặc thông tin giao dịch.

Google hy vọng hộp cát của bạn luôn có sẵn vì chúng tôi sẽ sử dụng hộp cát để thử nghiệm các thay đổi và tính năng mới lần đầu tiên.

Đường dẫn cơ sở hộp cát của Google

https://vgw.sandbox.google.com/secure-serving/gsp/

Đường dẫn cơ sở sản xuất của Google

https://vgw.googleapis.com/secure-serving/gsp/

Hướng dẫn này sẽ sử dụng các điểm cuối thực tế.

Loại nội dung và phương thức mã hoá

Các tải trọng thư sử dụng phương thức mã hoá PGP phải sử dụng loại nội dung application/octet-stream; charset=utf-8. Nội dung yêu cầu PGP phải được gửi bằng phương thức mã hoá base64url, như được xác định trong rfc4648 §5. Các tải trọng tin nhắn sử dụng phương thức mã hoá JWE phải sử dụng loại nội dung application/jose; charset=utf-8. Tuỳ chọn Chuyển đổi tuần tự thu gọn mà JWE/JWS hỗ trợ sẽ xử lý việc mã hoá cho nội dung yêu cầu cuối cùng.

Mã trạng thái HTTP

API Thanh toán tiêu chuẩn được thiết kế để trả về mã trạng thái HTTP 200 cho tất cả yêu cầu mà máy chủ có thể xử lý. Bao gồm cả yêu cầu đã thành công và bị từ chối xét từ khía cạnh kinh doanh hoặc logic ứng dụng. Những yêu cầu không xử lý được không được dẫn đến Mã trạng thái HTTP 200 vì chúng biểu thị lỗi giữa Google và trở thành đối tác. Thay vào đó, phản hồi của API phải sử dụng trạng thái HTTP thích hợp các mã bên dưới với đối tượng ErrorResponse không bắt buộc.

Lỗi và lý do HTTP
400 BAD REQUEST

Ứng dụng khách chỉ định một đối số không hợp lệ.

Mã lỗi này cũng có thể được trả về nếu thao tác bị từ chối do hệ thống không ở trạng thái cần thiết để thực thi thao tác.

Sử dụng phương thức này nếu bạn không thể gửi lại yêu cầu cho đến khi hệ thống đạt trạng thái đã được khắc phục một cách rõ ràng. Ví dụ: nếu yêu cầu hoàn tiền không thành công do tệp tham chiếu đến một ảnh chụp không tồn tại, thử lại sẽ không thành công cho đến khi việc thu thập dữ liệu tồn tại trong hệ thống tích hợp.

401 UNAUTHORIZED

Yêu cầu không có thông tin xác thực hợp lệ cho hoạt động. Ví dụ: chữ ký không hợp lệ hoặc chữ ký không xác định phải trả về 401.

403 FORBIDDEN / PERMISSION DENIED

Phương thức gọi không có quyền thực thi thao tác đã chỉ định.

404 NOT FOUND

Không tìm thấy một số pháp nhân được yêu cầu như thanh toán hoặc người dùng.

409 CONFLICT / ABORTED

Thao tác này đã bị huỷ, thường là do sự cố xảy ra đồng thời như lỗi kiểm tra trình tự, huỷ giao dịch, v.v.

412 PRECONDITION FAILED

Bạn nên sử dụng mã này trong trường hợp khoá không xác định đang được sử dụng được sử dụng lại với các tham số khác nhau.

429 RESOURCE EXHAUSTED / TOO MANY REQUESTS

Một số tài nguyên hệ thống đã hết.

499 CANCELLED

Thao tác đã bị huỷ (thường là do phương thức gọi).

500 INTERNAL ERROR

Lỗi nội bộ. Tức là có một số giá trị bất biến mà hệ thống cơ bản dự kiến đã bị hỏng.

501 UNIMPLEMENTED

Thao tác chưa được triển khai, được hỗ trợ hoặc được bật trong dịch vụ này.

503 UNAVAILABLE

Dịch vụ này hiện không dùng được. Rất có thể đây là một lỗi tạm thời tình trạng và có thể khắc phục bằng cách thử lại.

504 GATEWAY TIMEOUT / DEADLINE EXCEEDED

Đã hết thời hạn trước khi thao tác có thể hoàn tất. Đối với toán tử thay đổi trạng thái của hệ thống, lỗi này có thể được trả về ngay cả khi đã hoàn tất thành công. Ví dụ: một phản hồi thành công từ một máy chủ có thể bị trì hoãn đủ lâu trước thời hạn hết hạn.

Yêu cầu giá trị không đổi

Yêu cầu giá trị không thay đổi là chiến lược trọng tâm được sử dụng trong phương thức Thanh toán thông thường Các API được dùng để đảm bảo rằng các hoạt động tương tác trên hệ thống giữa Google và đối tác mạnh mẽ và chống lỗi. Yêu cầu không thay đổi giá trị là các yêu cầu có thể có thể được gửi nhiều lần nhưng vẫn có tác dụng giống như một yêu cầu duy nhất. Chiến lược này tạo điều kiện cho tính nhất quán cuối cùng giữa các hệ thống bằng cách tạo và thử lại một cách an toàn, giúp hệ thống của chúng tôi thống nhất với nhau về trạng thái của tài nguyên.

API của chúng tôi tận dụng giá trị nhận dạng để:

  • giảm thiểu các vấn đề điều chỉnh bằng cách giúp bạn dễ dàng truy vết mọi hành động và có thể kiểm tra.
  • ngăn chặn điều kiện tranh đấu bằng cách đảm bảo rằng nhiều yêu cầu giống hệt nhau từ cùng một ứng dụng không dẫn đến trạng thái cuối cùng khác.
  • giảm thiểu trạng thái bằng cách cho phép hiểu rõ các yêu cầu một cách riêng biệt, cho phép giúp cải thiện hiệu suất và thông lượng bằng cách loại bỏ tải máy chủ gây ra do giữ lại dữ liệu.
  • tránh nhu cầu các trường bổ sung để cho biết liệu một yêu cầu có phải là một yêu cầu thử lại hay không

Ví dụ

Ví dụ 1: Mất kết nối trước khi nhận được phản hồi

Tình huống:

  1. Google sẽ gửi yêu cầu đến đơn vị tích hợp.
  2. Máy chủ tích hợp nhận được yêu cầu này và xử lý thành công.
  3. Máy chủ của Google mất nguồn trước khi nhận được phản hồi ở bước số 2.
  4. Nguồn điện máy chủ của Google đã được khôi phục và cùng một yêu cầu sẽ được gửi đi với tất cả các thông số giống nhau (cùng mã yêu cầu và thông tin chi tiết về yêu cầu nhưng được cập nhật requestTimestamp) đến máy chủ của đối tác tích hợp.

Kết quả:

Trong trường hợp này, máy chủ tích hợp phải trả lời bằng cùng một nội dung trả lời được cung cấp tại bước 2 vì tất cả tham số đều giống nhau, ngoại trừ responseTimestamp. Tác dụng phụ chỉ xảy ra một lần, ở bước 2. Bước 4 không có tác dụng phụ.

Ví dụ 2: Yêu cầu được gửi đến một máy chủ đang được bảo trì

Tình huống:

  1. Cơ sở dữ liệu của máy chủ tích hợp đang ngừng hoạt động để bảo trì.
  2. Google sẽ gửi yêu cầu đến đơn vị tích hợp.
  3. Trình tích hợp trả về chính xác mã trạng thái UNAVAILABLE.
  4. Máy chủ của Google nhận được phản hồi và lên lịch thử lại.
  5. Cơ sở dữ liệu của máy chủ tích hợp đã hoạt động trở lại.
  6. Google gửi lại yêu cầu ở bước 2 (cùng một mã yêu cầu và thông tin chi tiết về yêu cầu nhưng đã cập nhật vào requestTimestamp). Lưu ý rằng mã yêu cầu cho cả hai yêu cầu phải giống nhau.
  7. Máy chủ tích hợp nhận yêu cầu và trả về mã trạng thái OK cùng với phản hồi đầy đủ.

Kết quả:

Trong trường hợp này, máy chủ tích hợp phải xử lý yêu cầu ở bước 7 và không trả về HTTP 503 (UNAVAILABLE). Thay vào đó, máy chủ tích hợp sẽ hoàn toàn hãy xử lý yêu cầu và trả về OK bằng tin nhắn thích hợp. Xin lưu ý rằng mặc dù hệ thống là UNAVAILABLE Google có thể đưa ra các yêu cầu lặp lại tương tự như bước 2. Mỗi yêu cầu sẽ nhận được một thông báo tương tự như bước 3. Cuối cùng, bước 6 và bước #7 sẽ xảy ra.

Ví dụ 3: Thông báo đã thử lại không khớp với thông báo ban đầu do lỗi khôi phục

Tình huống:

  1. Google sẽ gửi yêu cầu đến đơn vị tích hợp.
  2. Máy chủ tích hợp nhận được yêu cầu này và xử lý thành công.
  3. Máy chủ của Google mất nguồn trước khi nhận được phản hồi ở bước số 2.
  4. Nguồn máy chủ của Google được khôi phục và cố gắng gửi cùng một yêu cầu nhưng rất tiếc, một số tham số lại khác.

Kết quả:

Trong trường hợp này, máy chủ tích hợp sẽ trả lời bằng HTTP 412 (PRECONDITION FAILED) cho Google biết rằng có lỗi trong hệ thống này.