blob: 788c6c55ce23458afc60d3060aac867e61eadc0b [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_PAYMENTS_CORE_PAYMENT_DETAILS_H_
#define COMPONENTS_PAYMENTS_CORE_PAYMENT_DETAILS_H_
#include <memory>
#include <string>
#include <vector>
#include "components/payments/core/payment_details_modifier.h"
#include "components/payments/core/payment_item.h"
#include "components/payments/core/payment_shipping_option.h"
// C++ bindings for the PaymentRequest API PaymentDetails. Conforms to the
// following spec:
// https://w3c.github.io/payment-request/#payment-details-dictionaries
namespace base {
class DictionaryValue;
}
namespace payments {
// Details about the requested transaction.
class PaymentDetails {
public:
PaymentDetails();
PaymentDetails(const PaymentDetails& other);
~PaymentDetails();
PaymentDetails& operator=(const PaymentDetails& other);
bool operator==(const PaymentDetails& other) const;
bool operator!=(const PaymentDetails& other) const;
// Populates the properties of this PaymentDetails from |value|. Returns true
// if the required values are present. If |requires_total| is true, the total
// property has to be present.
bool FromDictionaryValue(const base::DictionaryValue& value,
bool requires_total);
// The unique free-form identifier for this payment request.
std::string id;
// The total amount of the payment request.
std::unique_ptr<PaymentItem> total;
// Line items for the payment request that the user agent may display. For
// example, it might include details of products or breakdown of tax and
// shipping.
std::vector<PaymentItem> display_items;
// The different shipping options for the user to choose from. If empty, this
// indicates that the merchant cannot ship to the current shipping address.
std::vector<PaymentShippingOption> shipping_options;
// Modifiers for particular payment method identifiers. For example, it allows
// adjustment to the total amount based on payment method.
std::vector<PaymentDetailsModifier> modifiers;
// If non-empty, this is the error message the user agent should display to
// the user when the payment request is updated using updateWith.
std::string error;
};
} // namespace payments
#endif // COMPONENTS_PAYMENTS_CORE_PAYMENT_DETAILS_H_