File: payments_service_url.cc

package info (click to toggle)
chromium 139.0.7258.127-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 6,122,156 kB
  • sloc: cpp: 35,100,771; ansic: 7,163,530; javascript: 4,103,002; python: 1,436,920; asm: 946,517; xml: 746,709; pascal: 187,653; perl: 88,691; sh: 88,436; objc: 79,953; sql: 51,488; cs: 44,583; fortran: 24,137; makefile: 22,147; tcl: 15,277; php: 13,980; yacc: 8,984; ruby: 7,485; awk: 3,720; lisp: 3,096; lex: 1,327; ada: 727; jsp: 228; sed: 36
file content (132 lines) | stat: -rw-r--r-- 4,757 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
// Copyright 2013 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "components/autofill/core/browser/payments/payments_service_url.h"

#include <string>

#include "base/command_line.h"
#include "base/format_macros.h"
#include "base/metrics/field_trial.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h"
#include "components/autofill/core/browser/data_model/payments/bnpl_issuer.h"
#include "components/autofill/core/browser/payments/constants.h"
#include "components/autofill/core/common/autofill_payments_features.h"
#include "components/autofill/core/common/autofill_switches.h"
#include "google_apis/gaia/gaia_urls.h"
#include "net/base/url_util.h"
#include "url/gurl.h"
#include "url/origin.h"

namespace autofill {
namespace {

// Service URLs used for calls to Google Payments endpoints.
const char kProdPaymentsServiceUrl[] = "https://payments.google.com/";
const char kSandboxPaymentsSecureServiceUrl[] =
    "https://payments.sandbox.google.com/";

// Origins of execution used by Google Pay's pay.js script
const char kProdGooglePayScriptOrigin[] = "https://pay.google.com/";
const char kSandboxGooglePayScriptOrigin[] = "https://pay.sandbox.google.com/";

// URLs used when opening the Payment methods management page from
// chrome://settings/payments.
const char kProdPaymentsManageCardsUrl[] =
    "https://wallet.google.com/wallet?"
    "p=paymentmethods&utm_source=chrome&utm_medium=settings&utm_campaign="
    "paymentmethods";
const char kSandboxPaymentsManageCardsUrl[] =
    "https://pay.sandbox.google.com/"
    "pay?p=paymentmethods&utm_source=chrome&utm_medium=settings&utm_campaign="
    "payment_methods";

// URL used when opening the Loyalty cards page from chrome://settings/payments.
const char kManageLoyaltyCardsUrl[] =
    "https://wallet.google.com/wallet?"
    "p=passes&utm_source=chrome&utm_medium=settings&utm_campaign=loyalty";

// LINT.IfChange
const char kVirtualCardEnrollmentSupportUrl[] =
    "https://support.google.com/googlepay/answer/11234179";
// LINT.ThenChange(//chrome/android/java/src/org/chromium/chrome/browser/ChromeStringConstants.java)

// BNPL provider terms support URLs.
// TODO(crbug.com/397446359): Change URL once terms redirect support pages are
// finalized.
constexpr char kBnplAffirmTermsUrl[] =
    "https://support.google.com/googlepay?p=bnpl_autofill_chrome";
constexpr char kBnplZipTermsUrl[] =
    "https://support.google.com/googlepay?p=bnpl_autofill_chrome";
}  // namespace

namespace payments {

using IssuerId = autofill::BnplIssuer::IssuerId;

bool IsPaymentsProductionEnabled() {
  // If the command line flag exists, it takes precedence.
  const base::CommandLine* command_line =
      base::CommandLine::ForCurrentProcess();
  std::string sandbox_enabled(
      command_line->GetSwitchValueASCII(switches::kWalletServiceUseSandbox));
  return sandbox_enabled.empty() || sandbox_enabled != "1";
}

GURL GetBaseSecureUrl() {
  return GURL(IsPaymentsProductionEnabled() ? kProdPaymentsServiceUrl
                                            : kSandboxPaymentsSecureServiceUrl);
}

url::Origin GetGooglePayScriptOrigin() {
  return url::Origin::Create(GURL(IsPaymentsProductionEnabled()
                                      ? kProdGooglePayScriptOrigin
                                      : kSandboxGooglePayScriptOrigin));
}

GURL GetManageInstrumentsUrl() {
  return GURL(IsPaymentsProductionEnabled() ? kProdPaymentsManageCardsUrl
                                            : kSandboxPaymentsManageCardsUrl);
}

GURL GetManageInstrumentUrl(int64_t instrument_id) {
  GURL url = GetManageInstrumentsUrl();
  std::string new_query =
      base::StrCat({url.query(), "&id=", base::NumberToString(instrument_id)});
  GURL::Replacements replacements;
  replacements.SetQueryStr(new_query);
  return url.ReplaceComponents(replacements);
}

GURL GetManageLoyaltyCardsUrl() {
  return GURL(kManageLoyaltyCardsUrl);
}

GURL GetManageAddressesUrl() {
  // Billing addresses are now managed as a part of the payment instrument.
  return GetManageInstrumentsUrl();
}

GURL GetVirtualCardEnrollmentSupportUrl() {
  return GURL(kVirtualCardEnrollmentSupportUrl);
}

GURL GetBnplTermsUrl(IssuerId issuer_id) {
  switch (issuer_id) {
    case IssuerId::kBnplAffirm:
      return GURL(kBnplAffirmTermsUrl);
    case IssuerId::kBnplZip:
      return GURL(kBnplZipTermsUrl);
    // TODO(crbug.com/408268581): Handle Afterpay issuer enum value when adding
    // Afterpay to the BNPL flow.
    case IssuerId::kBnplAfterpay:
      NOTREACHED();
  }
  NOTREACHED();
}

}  // namespace payments
}  // namespace autofill