Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(123)

Unified Diff: components/autofill/core/browser/wallet/real_pan_wallet_client.cc

Issue 875183003: Minor changes to RealPanClient to get a bit farther (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « components/autofill/core/browser/autofill_manager.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/autofill/core/browser/wallet/real_pan_wallet_client.cc
diff --git a/components/autofill/core/browser/wallet/real_pan_wallet_client.cc b/components/autofill/core/browser/wallet/real_pan_wallet_client.cc
index 35c6cbd78cfe04a5813bedaad5358012b28266f8..41ce19a27eba2cb19fa1a4445c1ff4c8f566aea2 100644
--- a/components/autofill/core/browser/wallet/real_pan_wallet_client.cc
+++ b/components/autofill/core/browser/wallet/real_pan_wallet_client.cc
@@ -4,6 +4,7 @@
#include "components/autofill/core/browser/wallet/real_pan_wallet_client.h"
+#include "base/base64.h"
#include "base/bind.h"
#include "base/json/json_reader.h"
#include "base/json/json_writer.h"
@@ -23,12 +24,11 @@ namespace wallet {
namespace {
const char kUnmaskCardRequestFormat[] =
- "request_content_type=application/json&request=%s&cvc=%s";
+ "requestContentType=application/json; charset=utf-8&request=%s&cvc=%s";
-// TODO(estade): use a sandbox server on dev builds?
const char kUnmaskCardRequestUrl[] =
- "https://wallet.google.com/payments/apis-secure/creditcardservice"
- "/GetRealPan?s7e=cvc";
+ "https://sandbox.google.com/payments/apis-secure/creditcardservice"
+ "/getrealpan?s7e=cvc";
const char kTokenServiceConsumerId[] = "real_pan_wallet_client";
const char kWalletOAuth2Scope[] =
@@ -64,8 +64,13 @@ void RealPanWalletClient::UnmaskCard(const CreditCard& card,
base::DictionaryValue request_dict;
request_dict.SetString("encrypted_cvc", "__param:cvc");
- // TODO(estade): is this the correct "token"?
request_dict.SetString("credit_card_token", card.server_id());
+
+ // TODO(estade): add real risk data.
+ std::string base64_risk;
+ base::Base64Encode("{}", &base64_risk);
+ request_dict.SetString("risk_data_base64", base64_risk);
+
std::string json_request;
base::JSONWriter::Write(&request_dict, &json_request);
std::string post_body = base::StringPrintf(kUnmaskCardRequestFormat,
@@ -91,6 +96,8 @@ void RealPanWalletClient::OnURLFetchComplete(const net::URLFetcher* source) {
scoped_ptr<net::URLFetcher> scoped_request(request_.Pass());
scoped_ptr<base::DictionaryValue> response_dict;
int response_code = source->GetResponseCode();
+ std::string data;
+ source->GetResponseAsString(&data);
// TODO(estade): OAuth2 may fail due to an expired access token, in which case
// we should invalidate the token and try again. How is that failure reported?
@@ -98,41 +105,40 @@ void RealPanWalletClient::OnURLFetchComplete(const net::URLFetcher* source) {
switch (response_code) {
// Valid response.
case net::HTTP_OK: {
- std::string data;
- source->GetResponseAsString(&data);
scoped_ptr<base::Value> message_value(base::JSONReader::Read(data));
if (message_value.get() &&
message_value->IsType(base::Value::TYPE_DICTIONARY)) {
response_dict.reset(
static_cast<base::DictionaryValue*>(message_value.release()));
- } else {
- NOTIMPLEMENTED();
}
break;
}
// HTTP_BAD_REQUEST means the arguments are invalid. No point retrying.
case net::HTTP_BAD_REQUEST: {
- NOTIMPLEMENTED();
break;
}
// Response contains an error to show the user.
case net::HTTP_FORBIDDEN:
case net::HTTP_INTERNAL_SERVER_ERROR: {
- NOTIMPLEMENTED();
break;
}
// Handle anything else as a generic error.
default:
- NOTIMPLEMENTED();
break;
}
std::string real_pan;
if (response_dict)
response_dict->GetString("pan", &real_pan);
+
+ if (real_pan.empty()) {
+ NOTIMPLEMENTED() << "Unhandled error: " << response_code <<
+ " with data: " << data;
+ }
+
delegate_->OnDidGetRealPan(real_pan);
}
@@ -157,7 +163,7 @@ void RealPanWalletClient::OnGetTokenFailure(
delegate_->OnDidGetRealPan(std::string());
}
// TODO(estade): what do we do in the failure case?
- NOTIMPLEMENTED();
+ NOTIMPLEMENTED() << "Unhandled OAuth2 error: " << error.ToString();
access_token_request_.reset();
}
@@ -178,7 +184,7 @@ void RealPanWalletClient::StartTokenFetch() {
}
void RealPanWalletClient::SetOAuth2TokenAndStartRequest() {
- request_->AddExtraRequestHeader("Authorization: " + access_token_);
+ request_->AddExtraRequestHeader("Authorization: Bearer " + access_token_);
request_->Start();
}
« no previous file with comments | « components/autofill/core/browser/autofill_manager.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698