chromium/components/facilitated_payments/core/browser/network_api/facilitated_payments_initiate_payment_request_details.h

// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef COMPONENTS_FACILITATED_PAYMENTS_CORE_BROWSER_NETWORK_API_FACILITATED_PAYMENTS_INITIATE_PAYMENT_REQUEST_DETAILS_H_
#define COMPONENTS_FACILITATED_PAYMENTS_CORE_BROWSER_NETWORK_API_FACILITATED_PAYMENTS_INITIATE_PAYMENT_REQUEST_DETAILS_H_

#include <cstdint>
#include <optional>
#include <string>
#include <vector>

#include "url/gurl.h"

namespace payments::facilitated {

// Contains information to make a `FacilitatedPaymentsInitiatePaymentRequest`.
class FacilitatedPaymentsInitiatePaymentRequestDetails {
 public:
  FacilitatedPaymentsInitiatePaymentRequestDetails();
  FacilitatedPaymentsInitiatePaymentRequestDetails(
      const FacilitatedPaymentsInitiatePaymentRequestDetails&) = delete;
  FacilitatedPaymentsInitiatePaymentRequestDetails& operator=(
      const FacilitatedPaymentsInitiatePaymentRequestDetails&) = delete;
  ~FacilitatedPaymentsInitiatePaymentRequestDetails();

  // Returns true if everything that's required for making a PIX payment request
  // is available.
  bool IsReadyForPixPayment();

  std::string risk_data_;
  std::vector<uint8_t> client_token_;
  std::optional<int64_t> billing_customer_number_;
  std::optional<std::string> merchant_payment_page_hostname_;
  // The identifier for the payment method selected by the user. This is a
  // required field. Its type is optional to avoid its default value being 0.
  std::optional<int64_t> instrument_id_;
  std::optional<std::string> pix_code_;
};

}  // namespace payments::facilitated

#endif  // COMPONENTS_FACILITATED_PAYMENTS_CORE_BROWSER_NETWORK_API_FACILITATED_PAYMENTS_INITIATE_PAYMENT_REQUEST_DETAILS_H_