/*
* Copyright 2016 The Chromium Authors
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
const basicCardMethod = {
supportedMethods: 'basic-card',
};
const basicMastercardVisaMethod = {
supportedMethods: 'basic-card',
data: {
supportedNetworks: ['mastercard', 'visa'],
},
};
const basicVisaMethod = {
supportedMethods: 'basic-card',
data: {
supportedNetworks: ['visa'],
},
};
const basicMastercardMethod = {
supportedMethods: 'basic-card',
data: {
supportedNetworks: ['mastercard'],
},
};
const alicePayMethod = {
supportedMethods: 'https://alicepay.test/webpay',
};
const bobPayMethod = {
supportedMethods: 'https://bobpay.test/webpay',
};
const defaultDetails = {
total: {
label: 'Total',
amount: {
currency: 'USD',
value: '5.00',
},
},
};
/**
* Runs |testFunction| and prints any result or error.
*
* @param {function} testFunction A function with no argument and returns a
* Promise.
*/
function run(testFunction) {
try {
testFunction().then(print).catch(print);
} catch (error) {
print(error);
}
}
/**
* Calls PaymentRequest.canMakePayment() and prints out the result.
* @param {sequence<PaymentMethodData>} methodData The supported methods.
* @private
*/
function checkCanMakePayment(methodData) {
run(() => {
const request = new PaymentRequest(methodData, defaultDetails);
return request.canMakePayment();
});
}
/**
* Calls PaymentRequest.hasEnrolledInstrument() and prints out the result.
* @param {sequence<PaymentMethodData>} methodData The supported methods.
*/
function checkHasEnrolledInstrument(methodData) {
run(() => {
const request = new PaymentRequest(methodData, defaultDetails);
return request.hasEnrolledInstrument();
});
}
/**
* Calls PaymentRequest.show() and prints out the result.
* @param {sequence<PaymentMethodData>} methodData The supported methods.
* @private
*/
function buyHelper(methodData) {
try {
new PaymentRequest(methodData, defaultDetails)
.show()
.then(function(response) {
response.complete('success')
.then(function() {
print(JSON.stringify(response, undefined, 2));
})
.catch(function(error) {
print(error);
});
})
.catch(function(error) {
print(error);
});
} catch (error) {
print(error);
}
}
/**
* Merchant requests payment via either "mastercard" or "basic-card" with "visa"
* as the supported network.
*/
function buy() {
buyHelper([basicMastercardVisaMethod]);
}