Sử dụng API Meta Pay

Khi xử lý các khoản thanh toán cho Meta Pay, bạn phải thông báo cho Meta về hoạt động giao dịch thanh toán (ví dụ: ủy quyền và hoàn tiền) bằng cách gọi webhook trong API Meta Pay. Hoạt động giao dịch thanh toán sẽ hiện trên trang Đơn đặt hàng và thanh toán trong tài khoản Facebook của khách hàng.

Nếu bạn muốn tìm hiểu cách sử dụng các API của Meta, hãy xem bài viết Tổng quan về API Đồ thị và lưu ý rằng những API được mô tả bên dưới đều liên quan đến URL lưu trữ API Đồ thị tiêu chuẩn (https://graph.facebook.com). Để biết thêm thông tin chung, hãy xem bài viết Tổng quan về quá trình tích hợp Meta Pay.

Tích hợp

Bạn cần hoàn tất các bước sau thì mới có thể bắt đầu sử dụng API Meta Pay:

Gọi API Meta Pay

Trong các bước tích hợp chung, bạn sẽ tạo một ứng dụng mới trên Cổng thông tin Meta for Developers. Sau khi tạo ứng dụng, bạn sẽ nhận được ID ứng dụngkhóa bí mật của ứng dụng cho ứng dụng của mình.

Mỗi lệnh gọi mà bạn thực hiện đến API Meta Pay đều cần có một mã truy cập ứng dụng được lấy từ ID ứng dụng và khóa bí mật của ứng dụng. Hãy gửi mã truy cập ứng dụng bằng cách sử dụng tiêu đề Authorization, chứ không phải thông số truy vấn access_token. API Meta Pay sẽ từ chối các lệnh gọi bằng mã người dùng.

Ví dụ: sử dụng mã sau đây:

Authorization: OAuth <APP_ACCESS_TOKEN>

Chữ ký

Mọi yêu cầu HTTP gửi đến API Meta Pay đều phải chứa một tiêu đề yêu cầu FBPAY-SIGNATURE. Giá trị của tiêu đề này là một đối tượng Chữ ký web JSON (JWS) có thuật toán ES256, phương thức nối tiếp hóa nhỏ gọn và phần tải dữ liệu tách biệt (theo https://tools.ietf.org/html/rfc7515#appendix-F). Giá trị phần tải dữ liệu là phần nội dung yêu cầu HTTP POST. Khóa chữ ký JWS phải được xác định bằng tiêu đề x5c. Tiêu đề này phải chứa một chứng chỉ liên kết với gốc tin cậy của đối tác. Chứng chỉ gốc của đối tác được chia sẻ với Meta trong quy trình tích hợp (được gọi là chứng chỉ ký API Meta Pay).

Ví dụ về yêu cầu có chữ ký

curl -i -X POST \
  -H "Content-Type: application/json" \
  -H "FBPAY_SIGNATURE: eyJhbGciOiJFUzI1NiIsIng1YyI6WyJNSUlCaERDQ0FTcWdBd0lCQWdJQkFUQUtCZ2dxaGtqT1BRUURBakFoTVI4d0hRWURWUVFEREJad1lYSjBibVZ5SUhOcFoyNWhkSFZ5WlNCalpYSjBNQjRYRFRJd01EY3hNekl5TWpVek1Gb1hEVEkwTURNeE1USXlNalV6TUZvd0lURWZNQjBHQTFVRUF3d1djR0Z5ZEc1bGNpQnphV2R1WVhSMWNtVWdZMlZ5ZERCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkFuRngwR1NKMklPZGZpcFdiMGMwZytBVThlbDh6QnRVS0kxdWRzT2kzN2thd1JRSFkzV29YaWRvRThIOHM1cVIySmo2ZkFKWVhOTURXY0NiditWMEJ1alV6QlJNQjBHQTFVZERnUVdCQlR4NlBGRkhjd2FUZnY5cVdzZUJcL1NjMWFPbVZ6QWZCZ05WSFNNRUdEQVdnQlR4NlBGRkhjd2FUZnY5cVdzZUJcL1NjMWFPbVZ6QVBCZ05WSFJNQkFmOEVCVEFEQVFIXC9NQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJUUNBRE9zZ0pZanRXVm9xNUZOSjc3U2JDeWtON1ZldUlKR2pXb3NBVUFNd1ZRSWdUTlVcL2ttc1wvN0cxVUx5Z01DRWVXemNiYTNrMVo4NEE4RmNlMXQzYUNGbGc9Il19..ZnT7ZR3EqsPYMQt3WdgUZYScBiyK9RI77zMaUKr-tkFRBHgBJQVTOORwM2fFh0QQCTLwOp1TiAzt_q9ofvw6JQ" "https://graph.facebook.com/1001200005002/notify_authorizations" \
  -d '{"notification":{"partner_merchant_id":"123e4567-e89b-12d3-a456-426614174000","container_id":"cGF5bWVudF9jb250YWluZAXI6MTIzNDU2NzhfX01FUkNIQU5UX1RFU1RfRTJFX19QU1BfVEVTVF8x","event_time":1582230020020,"type":"notify_authorizations"},"resource":{"partner_auth_id":"1234567890","auth_amount":{"currency":"USD","value":29508},"status":"SUCCEEDED","created_time":1582230019010,"metadata":[]},"idempotence_token":"ddbdf2cf-d339-4b0b-a27e-4731d8d37c9d"}'

Yêu cầu trước đó mã hóa dữ liệu sau đây:

{
  "notification": {
    "partner_merchant_id": "123e4567-e89b-12d3-a456-426614174000",
    "container_id": "cGF5bWVudF9jb250YWluZAXI6MTIzNDU2NzhfX01FUkNIQU5UX1RFU1RfRTJFX19QU1BfVEVTVF8x",
    "event_time": 1582230020020,
    "type": "notify_authorizations"
  },
  "resource": {
    "partner_auth_id": "1234567890",
    "auth_amount": {
      "currency": "USD",
      "value": 29508
    },
    "status": "SUCCEEDED",
    "created_time": 1582230019010,
    "metadata": []
  },
  "idempotence_token": "ddbdf2cf-d339-4b0b-a27e-4731d8d37c9d"
}

Sau đây là chữ ký từ yêu cầu trước đó, Base64 và JSON được giải mã để dễ hiểu:

base64url(
 json({
   "x5c": [
     "MIIBhDCCASqgAwIBAgIBATAKBggqhkjOPQQDAjAhMR8wHQYDVQQDDBZwYXJ0bmVyIHNpZ25hdHVyZSBjZXJ0MB4XDTIwMDcxMzIyMjUzMFoXDTI0MDMxMTIyMjUzMFowITEfMB0GA1UEAwwWcGFydG5lciBzaWduYXR1cmUgY2VydDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABAnFx0GSJ2IOdfipWb0c0g+AU8el8zBtUKI1udsOi37kawRQHY3WoXidoE8H8s5qR2Jj6fAJYXNMDWcCbv+V0BujUzBRMB0GA1UdDgQWBBTx6PFFHcwaTfv9qWseB/Sc1aOmVzAfBgNVHSMEGDAWgBTx6PFFHcwaTfv9qWseB/Sc1aOmVzAPBgNVHRMBAf8EBTADAQH/MAoGCCqGSM49BAMCA0gAMEUCIQCADOsgJYjtWVoq5FNJ77SbCykN7VeuIJGjWosAUAMwVQIgTNU/kms/7G1ULygMCEeWzcba3k1Z84A8Fce1t3aCFlg="
   ],
   "alg": "ES256"
 })
) + // Protected Header
 "." +
 "" + // Payload is detached
 "." +
 "ZnT7ZR3EqsPYMQt3WdgUZYScBiyK9RI77zMaUKr-tkFRBHgBJQVTOORwM2fFh0QQCTLwOp1TiAzt_q9ofvw6JQ" // Signature

Tích lũy đẳng

Trường idempotence_token được dùng để ngăn tình trạng thực thi trùng lặp các yêu cầu khi yêu cầu được gửi lại do lỗi mạng hoặc hết thời gian chờ. Mã tích lũy đẳng là giá trị duy nhất do ứng dụng tạo ra và ứng dụng sẽ quyết định cách tạo mã này. Ví dụ: bạn có thể sử dụng UUID V4 để tạo mã tích luỹ đẳng.

Khi một yêu cầu hoàn tất thành công hoặc lệnh gọi đến API trả về kết quả hợp lệ, dữ liệu phản hồi sẽ được lưu kèm theo mã tích luỹ đẳng. Khi bạn thử lại một yêu cầu thành công bằng mã tích luỹ đẳng từng sử dụng, phản hồi đã lưu trước đó sẽ được trả về mà không cần chạy lại mã nào.

Khi một yêu cầu bị lỗi, kết quả sẽ không được lưu. Bạn có thể thử lại yêu cầu đó và sử dụng cùng một mã tích lũy đẳng.

Nếu bạn gửi đồng thời 2 yêu cầu bằng một mã tích lũy đẳng, chỉ một yêu cầu trả về dữ liệu phản hồi.

Mã tích lũy đẳng chỉ mang tính tạm thời và chỉ được dùng để thử lại lệnh gọi API trong trường hợp xảy ra lỗi. Nếu thử lại một yêu cầu sau một thời gian, bạn có thể nhận được phản hồi khác với lệnh gọi trước đó.

Các thông số yêu cầu được bỏ qua. Nếu bạn thay đổi nội dung yêu cầu theo cách nào đó, hãy tạo mã tích luỹ đẳng mới cho yêu cầu.

Đối chiếu hàng loạt

Khi xử lý các khoản thanh toán, bạn sẽ thông báo cho Meta về hoạt động giao dịch thanh toán thông qua webhook dành cho Meta Pay. Khi bạn gọi webhook, hoạt động giao dịch thanh toán sẽ xuất hiện ở trang Hoạt động trên Facebook Pay trong tài khoản Facebook của khách hàng ngay khi có thể.

Những thông báo không thành công sẽ được Meta ghi lại trong quá trình đối chiếu hàng loạt và xuất hiện trong tài khoản Facebook của khách hàng sau đó.

Để hỗ trợ đối chiếu hàng loạt, mỗi ngày, hãy tải lên một file có chứa các thông báo mà bạn đã gửi đến Meta vào ngày đó. Hãy đưa vào cả thông báo thành công lẫn thông báo không thành công. Để biết chi tiết về cách tải file lên Meta API, hãy xem phần Tải file lên Facebook.

Xử lý lỗi

API Meta Pay sử dụng phương thức xử lý lỗi API Đồ thị tiêu chuẩn.

Khởi tạo và cập nhật người bán

Để khởi tạo hoặc cập nhật dữ liệu cho một người bán mà bạn hỗ trợ, hãy gửi yêu cầu POST đến API Đồ thị cho người bán /metapay_partner/merchant và chỉ định thông số người bán.

https://graph.facebook.com/metapay_partner/merchant

Thông số yêu cầu

Thông sốLoạiMô tảBắt buộc

partner_merchant_id

Chuỗi

Thông tin nhận dạng duy nhất cho tài khoản của người bán với đối tác thanh toán.

business_uri

Chuỗi

URI đến trang web của người bán mà khách hàng sẽ nhìn thấy trong giao diện Meta Pay. URI này phải bắt đầu bằng http:// hoặc https://.

display_name

Chuỗi

Tên của người bán như khách hàng sẽ nhìn thấy trong giao diện Meta Pay.

mcc

int64

[Không dùng nữa]

Mã hạng mục người bán. Meta sử dụng mã này để phân loại hoạt động thanh toán và đảm bảo rằng khoản thanh toán đáp ứng điều khoản dịch vụ của chúng tôi.


Lưu ý:

Bạn phải cung cấp mcc hoặc mcc_list.

Không*

mcc_list

Mảng< int64>

Danh sách mã hạng mục người bán. Meta sử dụng các mã này để phân loại hoạt động thanh toán và đảm bảo rằng khoản thanh toán đáp ứng điều khoản dịch vụ của chúng tôi.


Lưu ý:

Bạn phải cung cấp mcc hoặc mcc_list. Đây là thông số được ưu tiên hơn mcc.

Không*

merchant_status

Chuỗi

Người bán được bật hay bị vô hiệu hóa với đối tác thanh toán. Một trong các giá trị là PENDING (ĐANG CHỜ), ENABLED (ĐÃ BẬT) hoặc DISABLED (ĐÃ VÔ HIỆU HÓA). Đang chờ có hiệu lực tương tự như đã vô hiệu hóa. Tuy nhiên, giá trị này cho biết trạng thái bị vô hiệu hóa tạm thời.

icon_uri

URI

URI đến biểu tượng của người bán mà khách hàng sẽ nhìn thấy trong giao diện Meta Pay. File biểu tượng sẽ có một trong các định dạng: png, jpeg.

Không

support_email

Chuỗi

Địa chỉ email để khách hàng yêu cầu biên lai hoặc bản tóm tắt giao dịch.

Không

support_phone

Chuỗi

Số điện thoại để khách hàng yêu cầu hỗ trợ cho một giao dịch thanh toán. Hãy cung cấp số điện thoại theo một trong các định dạng sau đây: 16315551000, +1 631 555 1001, +1 (631) 555-1004, 1-631-555-1005.

Không

valid_origins

Mảng< Chuỗi>

Danh sách đầy đủ gồm các URI nguồn gốc bảo mật hợp lệ dành cho người bán. Thông số này được dùng để đảm bảo rằng khoản thanh toán đang được khởi tạo từ các nguồn gốc bảo mật web dự kiến.

Không

pixel_id

Chuỗi

Thông tin nhận dạng duy nhất cho Meta Pixel của người bán. Thông tin này được dùng để hỗ trợ các tính năng cụ thể của Meta Checkout trong Trình quản lý quảng cáo

Không

Phản hồi

Sau khi bạn gửi yêu cầu POST đến API người bán, phản hồi 200 OK sẽ cho biết rằng POST đã được xử lý thành công. Phần nội dung phản hồi cho biết trạng thái của người bán là ENABLED hay DISABLED. Thông số sửa đổi trạng thái không trống sẽ cung cấp thông tin bổ sung.

Một phản hồi thành công thường gặp sẽ có dạng như sau:

{
    "status":"ENABLED",
    "status_modifiers":[]
}

Một phản hồi dành cho người bán đang được sàng lọc tạm thời sẽ có dạng như sau:

{
    "status":"DISABLED",
    "status_modifiers":["PENDING_SCREENING"]
}

Sau đây là các thông số sửa đổi trạng thái có thể có.

Thông số sửa đổi trạng tháiMô tả

PENDING_SCREENING

Người bán tạm thời bị chặn sử dụng Meta Pay trong khi chờ kết quả sàng lọc sự tuân thủ. Quá trình sàng lọc thường hoàn tất trong vòng 24 giờ. Hãy truy vấn API người bán để xác minh trạng thái.

INVALID_ICON

icon_uri không được chấp nhận. Định dạng file không chính xác, file vượt quá giới hạn kích thước hoặc không thể truy xuất URI. Thông số sửa đổi trạng thái này không có nghĩa là người bán không thể sử dụng Meta Pay.

INTEGRITY_FLAG

Một hoặc nhiều thuộc tính người bán đã kích hoạt cờ tính liêm chính. Người bán sẽ bị vô hiệu hóa.

BLOCKED

Người bán vĩnh viễn bị chặn sử dụng Meta Pay.

Lấy người bán

Để tìm nạp danh sách những người bán đã đăng ký, hãy gửi yêu cầu GET đến API Đồ thị cho người bán /metapay_partner/merchants.

https://graph.facebook.com/metapay_partner/merchants

Thông số yêu cầu

Sau đây là các thông số yêu cầu không bắt buộc được hỗ trợ dưới dạng thông số URL:

Thông sốLoạiMô tảBắt buộc

partner_merchant_id

Chuỗi

ID người bán đối tác được phân tách bằng dấu phẩy để áp dụng làm tiêu chí lọc

Không

Phản hồi

Khi gửi yêu cầu GET đến API Người bán, bạn sẽ nhận được kết quả theo trang. Hãy xem định dạng phản hồi chung trên trang được liên kết. Mỗi thành phần được trả về trong mảng data sẽ có định dạng như thông số yêu cầu của Người bán. Ví dụ:

curl -H "Authorization: OAuth $OAUTH" -X GET "https://graph.facebook.com/metapay_partner/merchants?partner_merchant_id=MERCHANT_TEST_1"
{
    "data": [
        {
            "partner_merchant_id": "MERCHANT_TEST_1",
            "merchant_status": "DISABLED",
            "display_name": "Test merchant 1",
            "business_uri": "https://facebook.com/",
            "icon_uri": "https://facebook.com/favicon.ico",
            "mcc_list": [7311],
            "support_email": "example@facebook.com",
            "support_phone": "+11234567890",
            "valid_origins": [
                "https://facebook.com/"
            ],
            "legal_structure": "COMPANY_TYPE_NOT_SPECIFIED",
            "status_modifiers":["BLOCKED"],
            "effective_merchant_status":"DISABLED"
        }
    ],
    "paging": {
        "cursors": {
            "before": "aaa...",
            "after": "bbb..."
        },
        "next": "https://graph.facebook.com/metapay_partner/merchants?limit=25&after=..."
    }
}

Webhooks

Bạn phải thông báo cho Meta về hoạt động giao dịch thanh toán bằng cách gọi webhook của Meta bất cứ khi nào diễn ra hoạt động ủy quyền, giữ lại, tranh chấp, thanh toán hoặc hoàn tiền.

Phản hồi 200 OK cho biết rằng webhook đã được xử lý thành công. Nội dung phản hồi thành công sẽ trả về container_id:

{
    "id":"cGF5bWVudF9jb250YWluZAXI6N2I3ODA1ZATYtZAmRiNS00Yzc4LWFjYjAtZATg3ZAjJhMzg2YTc5XzM2ODkyNjAzMTc4MDEzNzYZD"
}

Nếu gọi webhook không thành công, hãy thử gọi lại ít nhất 3 lần trong tối thiểu 72 giờ với thời gian chờ tăng dần. Nếu lệnh gọi này vẫn không thành công, hệ thống có thể ghi lại thông báo sau trong quá trình đối chiếu hàng loạt.

Sau đây là sơ đồ mối quan hệ thực thể cho các tài nguyên được lập mô hình trong webhook của Meta API. Chấm đen biểu thị thuộc tính bắt buộc.

Thông báo

Mỗi khi bạn gọi một webhook, hãy thêm thông số thông báo vào phần nội dung yêu cầu và thông tin chi tiết về loại thông báo vào trường tài nguyên, như được mô tả trong phần tiếp theo. Cấu trúc chung của thông báo sẽ như sau:

{
  idempotence_token: '<your token>',
  notification:
  {
    ...
  },
  resource:
  {
    ...
  }
}

Thông số thông báo

Thuộc tínhLoạiMô tảBắt buộc

merchant_id

Chuỗi

Thông tin nhận dạng duy nhất cho tài khoản của người bán. Bạn có thể sử dụng các ký tự sau: [a-zA-Z0-9_-].

type

Chuỗi

Loại thông báo. Các giá trị hợp lệ là: notify_authorizations, notify_captures, notify_disputes, notify_paymentsnotify_refunds. Các giá trị này cần khớp với webhook mà bạn đang gọi. Quá trình đối chiếu hàng loạt sẽ sử dụng thông số này.

event_time

Int64

Nhãn thời gian UNIX tính theo mili giây.

container_id

Chuỗi

Thông tin nhận dạng duy nhất cho cấu trúc vùng chứa.

Thông báo về hoạt động ủy quyền

Hãy gửi yêu cầu POST đến /<CONTAINER_ID>/notify_authorizations để thông báo cho Meta về hoạt động ủy quyền đối với một giao dịch thanh toán.

https://graph.facebook.com/<CONTAINER_ID>/notify_authorizations

Tài nguyên về hoạt động ủy quyền

Thuộc tínhLoạiMô tảBắt buộc

partner_auth_id

Chuỗi

Thông tin nhận dạng duy nhất cho hoạt động ủy quyền hoặc tính phí. Bạn có thể sử dụng các ký tự sau: [a-zA-Z0-9_-].

auth_amount

Đối tượng số tiền thông báo

Số tiền được ủy quyền. Hiện tại, chỉ USD được hỗ trợ cho currency.

status

Chuỗi

Trạng thái ủy quyền. Một trong các giá trị: PENDING, SUCCEEDED, FAILED, CANCELED.

created_time

Int64

Nhãn thời gian UNIX tính theo mili giây của thời gian thực hiện hoạt động ủy quyền.

description

Chuỗi

Nội dung mô tả giao dịch thanh toán.

Không

statement_descriptor

Chuỗi

Nội dung mô tả giao dịch thanh toán mà khách hàng sẽ nhìn thấy, chẳng hạn như trên bảng sao kê thẻ tín dụng.

Không

error

Đối tượng lỗi thông báo.

Thông tin chi tiết về lỗi, nếu có. Các giá trị hợp lệ cho codeINVALID_PAYMENT_METHOD, PROCESSING_FAILURE, EXPIREDOTHER.

Không

metadata

Đối tượng {String : String}

Một mảng cặp khóa-giá trị cung cấp thêm thông tin về hoạt động ủy quyền.

Không

Thông báo về hoạt động giữ lại

Hãy gửi yêu cầu POST đến /<CONTAINER_ID>/notify_captures để thông báo cho Meta về hoạt động giữ lại đối với một giao dịch thanh toán.

https://graph.facebook.com/<CONTAINER_ID>/notify_captures

Tài nguyên về hoạt động giữ lại

Thuộc tínhLoạiMô tảBắt buộc

partner_capture_id

Chuỗi

Thông tin nhận dạng duy nhất cho hoạt động giữ lại. Bạn có thể sử dụng các ký tự sau: [a-zA-Z0-9_-].

partner_auth_id

Chuỗi

Thông tin nhận dạng mà bạn tạo trước đó cho hoạt động ủy quyền hoặc tính phí tương ứng với hoạt động giữ lại này.

Không

capture_amount

Đối tượng số tiền thông báo

Số tiền được giữ lại. Hiện tại, chỉ USD được hỗ trợ cho currency.

status

Chuỗi

Trạng thái giữ lại. Một trong các giá trị: PENDING, SUCCEEDED, FAILED.

created_time

Int64

Nhãn thời gian UNIX tính theo mili giây của thời gian thực hiện hoạt động giữ lại.

note

Chuỗi

Ghi chú của người bán mô tả hoạt động giữ lại.

Không

error

Đối tượng lỗi thông báo.

Thông tin chi tiết về lỗi, nếu có. Các giá trị hợp lệ cho codePROCESSING_FAILURE, DECLINEDOTHER.

Không

Thông báo về hoạt động tranh chấp

Hãy gửi yêu cầu POST đến /<CONTAINER_ID>/notify_disputes để thông báo cho Meta về hoạt động tranh chấp đối với một giao dịch thanh toán.

https://graph.facebook.com/<CONTAINER_ID>/notify_disputes

Tài nguyên về hoạt động tranh chấp

Thuộc tínhLoạiMô tảBắt buộc

partner_dispute_id

Chuỗi

Thông tin nhận dạng duy nhất cho hoạt động tranh chấp. Bạn có thể sử dụng các ký tự sau: [a-zA-Z0-9_-].

created_time

Int64

Nhãn thời gian UNIX tính theo mili giây của thời gian tạo tranh chấp.

dispute_amount

Đối tượng số tiền thông báo

Số tiền bị tranh chấp. Hiện tại, chỉ USD được hỗ trợ cho currency.

reason

Chuỗi

Lý do tranh chấp. Một trong các giá trị: BANK_CANNOT_PROCESS, CREDIT_NOT_PROCESSED, CUSTOMER_INITIATED, DEBIT_NOT_AUTHORIZED, DUPLICATE, FRAUDULENT, GENERAL, INCORRECT_ACCOUNT_DETAILS, INSUFFICIENT_FUNDS, PRODUCT_UNACCEPTABLE, SUBSCRIPTION_CANCELED, OTHER_UNRECOGNIZED, PRODUCT_NOT_RECEIVED, INCORRECT_AMOUNT, PAYMENT_BY_OTHER_MEANS, PROBLEM_WITH_REMITTANCE.

status

Chuỗi

Trạng thái tranh chấp. Một trong các giá trị: RESOLVED_BUYER_FAVOR, REVERSED_SELLER_FAVOR, RETRIEVAL_EVIDENCE_REQUESTED, RETRIEVAL_UNDER_REVIEW, RETRIEVAL_CLOSED, BUYER_REFUNDED, CHARGEBACK_EVIDENCE_REQUESTED, CHARGEBACK_UNDER_REVIEW.

partner_payment_id

Chuỗi

Thông tin nhận dạng mà bạn tạo trước đó cho hoạt động thanh toán tương ứng với hoạt động tranh chấp này.

Không

partner_capture_ids

Mảng< Chuỗi>

Thông tin nhận dạng cho hoạt động giữ lại tương ứng với hoạt động tranh chấp. Thuộc tính này không bắt buộc.

Không

description

Chuỗi

Nội dung mô tả tranh chấp.

Không

metadata

Đối tượng {Chuỗi : Chuỗi}

Một mảng cặp khóa-giá trị cung cấp thêm thông tin về hoạt động tranh chấp.

Không

Thông báo về hoạt động thanh toán

Hãy gửi yêu cầu POST đến /<CONTAINER_ID>/notify_payments để thông báo cho Meta về hoạt động thanh toán không liên quan đến hoạt động chuyển tiền. Ví dụ: bạn có thể quyết định không xử lý khoản thanh toán của người dùng nếu thấy khoản thanh toán đó có rủi ro khi kiểm tra.

https://graph.facebook.com/<CONTAINER_ID>/notify_payments

Tài nguyên về hoạt động thanh toán

Thuộc tínhLoạiMô tảBắt buộc

partner_payment_id

Chuỗi

Thông tin nhận dạng duy nhất cho hoạt động thanh toán. Bạn có thể sử dụng các ký tự sau: [a-zA-Z0-9_-].

status

Chuỗi

Trạng thái thanh toán. Một trong các giá trị: PENDING, SUCCEEDED, FAILED, CANCELED.

created_time

Int64

Nhãn thời gian UNIX tính theo mili giây của thời gian thực hiện thanh toán.

metadata

Đối tượng {Chuỗi : Chuỗi}

Một mảng cặp khóa-giá trị cung cấp thêm thông tin về hoạt động thanh toán.

Không

Thông báo về hoạt động hoàn tiền

Hãy gửi yêu cầu POST đến /<CONTAINER_ID>/notify_refunds để thông báo cho Meta về hoạt động hoàn tiền đối với một giao dịch thanh toán.

https://graph.facebook.com/<CONTAINER_ID>/notify_refunds

Tài nguyên về hoạt động hoàn tiền

Thuộc tínhLoạiMô tảBắt buộc

partner_refund_id

Chuỗi

Thông tin nhận dạng duy nhất cho hoạt động hoàn tiền. Bạn có thể sử dụng các ký tự sau: [a-zA-Z0-9_-].

created_time

Int64

Nhãn thời gian UNIX tính theo mili giây của thời gian tạo hoạt động hoàn tiền.

refund_amount

Đối tượng số tiền thông báo

Số tiền được hoàn lại. Hiện tại, chỉ USD được hỗ trợ cho currency.

status

Chuỗi

Trạng thái hoàn tiền. Một trong các giá trị: PENDING, SUCCEEDED, FAILED, CANCELED.

partner_capture_id

Chuỗi

Thông tin nhận dạng mà bạn tạo trước đó cho hoạt động giữ lại tương ứng với hoạt động hoàn tiền này.

Không

description

Chuỗi

Nội dung mô tả hoạt động hoàn tiền.

Không

statement_descriptor

Chuỗi

Nội dung mô tả hoạt động hoàn tiền mà khách hàng sẽ nhìn thấy, chẳng hạn như trên bảng sao kê thẻ tín dụng.

Không

error

Đối tượng lỗi thông báo.

Thông tin chi tiết về lỗi, nếu có. Các giá trị hợp lệ cho codePROCESSING_FAILURE, DECLINEDOTHER.

Không

metadata

Đối tượng {Chuỗi : Chuỗi}

Một mảng cặp khóa-giá trị cung cấp thêm thông tin về hoạt động hoàn tiền.

Không

Đối tượng số tiền thông báo

Hãy sử dụng đối tượng số tiền để biểu thị giá trị tiền tệ bằng một đơn vị tiền tệ cụ thể cho các thông báo về hoạt động ủy quyền, giữ lại, tranh chấp và hoàn tiền.

Đối tượng số tiền

Thuộc tínhLoạiMô tả

currency

Chuỗi

Mã đơn vị tiền tệ gồm 3 chữ cái theo tiêu chuẩn ISO 4217 cho số tiền. Để biết danh sách mã đơn vị tiền tệ, hãy xem ISO 4217. Hiện tại, chỉ USD được hỗ trợ cho currency.

value

Số nguyên

Giá trị số tiền được biểu thị bằng đơn vị nhỏ nhất của currency. Ví dụ: nếu currencyUSD, hãy biểu thị value 19,99 USD theo đơn vị cent là 1999.

Đối tượng lỗi thông báo

Nếu xảy ra lỗi khi bạn xử lý hoạt động ủy quyền, giữ lại, thanh toán hoặc hoàn tiền, hãy thêm đối tượng error vào resource để cung cấp thông tin về lỗi.

Đối tượng lỗi

Thuộc tínhLoạiMô tả

code

Chuỗi

Mã lỗi dành riêng cho Meta. Các giá trị hợp lệ sẽ tùy theo loại thông báo và được ghi lại trong những phần trước đó.

partner_code

Chuỗi

Mã lỗi của bạn.

partner_error

Chuỗi

Nội dung mô tả lỗi.