I'm trying to set up Google Pay in test mode for a website (not for an Android app). My Processor is Fiserv - CardPointe which says to use CARDCONNCT as the gateway. When the Google Pay window pops up it displays this error.
Something went wrong This merchant is having trouble accepting your payment right now. Try using a different payment method. [OR_BIBED_06] OR_BIBED_06
I'm not seeing a lot about this error on Google. But I'm thinking this is a problem with Fiserv. Here is my code
<script>
function googlePayLoaded() {
googlePayClient = new google.payments.api.PaymentsClient({ environment: 'TEST' });
console.log("Google Pay Client loaded");
}
</script>
<script id="googlePay" src="https://pay.google.com/gp/p/js/pay.js" async onload="googlePayLoaded()"></script>
And the code that runs on the Donation page at start up and creates the button
const allowedPaymentMethods = ["CARD", "TOKENIZED_CARD"];
const allowedCardNetworks = ["AMEX", "DISCOVER", "INTERAC", "JCB", "MASTERCARD", "VISA"];
googlePayMerchantID = settingValue(settings, "GooglePayMerchantID");
googlePayMerchantName = settingValue(settings, "GooglePayMerchantName");
// also called IsReadyToPayRequest in the docs
googlePayConfig = {
apiVersion: 2,
apiVersionMinor: 0,
allowedPaymentMethods: allowedPaymentMethods
}
paymentDataRequest = Object.assign({}, googlePayConfig);
// currency code is ISO 4217 code
// country code is ISO 3166-1 alpha-2 code for where the transaction is processed
paymentDataRequest.transactionInfo = {
totalPriceStatus: "FINAL",
totalPrice: "0", // will change this later
currencyCode: "USD",
countryCode: "US"
}
paymentDataRequest.merchantInfo = {
merchantId: googlePayMerchantID,
merchantName: googlePayMerchantName
}
const tokenizationSpec = {
type: "PAYMENT_GATEWAY",
parameters: {
gateway: 'CARDCONNECT',
gatewayMerchantId: CardPointeMerchantID
}
}
const cardPaymentMethod = {
type: "CARD",
tokenizationSpecification: tokenizationSpec,
parameters: {
allowedCardNetworks: allowedCardNetworks,
allowedAuthMethods: ["PAN_ONLY", "CRYPTOGRAM_3DS"]
//billingAddressParamters: {
// format: "FULL",
// phoneNumberRequired: false
//}
}
}
paymentDataRequest.shippingAddressRequired = false;
paymentDataRequest.allowedPaymentMethods = [cardPaymentMethod];
googlePayClient.isReadyToPay(googlePayConfig).then(function (response) {
if (response.result) {
vm.showGooglePayOption = true;
const googlePayButton = googlePayClient.createButton({
buttonColor: "default",
buttonType: "donate",
onClick: donateWithGooglePay
//allowedPaymentMethods: [cardPaymentMethod]
});
$("#googlePayButton").html(googlePayButton);
} else {
console.log("Google Pay not ready");
}
}).catch(function (error) {
console.log(error);
});
And then when you click the button it does this
function donateWithGooglePay2() {
paymentDataRequest.transactionInfo.totalPrice = vm.data.amount.toString();
googlePayClient.loadPaymentData(paymentDataRequest).then((paymentData) => {
token = paymentData.paymentMethodData.tokenizationData.token;
if (vm.paymentProcessor === "CardPointe") {
tokenized = true;
donate2(); // this uses the token to authorize a payment
}
}).catch((error) => {
// errors will be displayed in the Google Pay window
console.log(error);
return;
});
}
Any thoughts?

There is no call to Fiserv during the Google Pay tokenization process. Use
paymentData.paymentMethodData.tokenizationData.tokenat the end of the process to send the token to your backend and finally over to Fiserv for the actual authorization.To get rid of the
OR_BIBED_06error change the following in your code:tokenizationSpecobject it should beparametersand notparamtersallowedAuthMethodsarray it should beCRYPTOGRAM_3DSand notCRYPOGRAM_3DStotalPricemust be a stringcardconnectinstead ofCARDCONNECTconst allowedPaymentMethods = ["CARD", "TOKENIZED_CARD"];can be removed. You set it correctly later in the code:paymentDataRequest.allowedPaymentMethods = [cardPaymentMethod];allowedPaymentMethods: allowedPaymentMethodsinside thegooglePayConfigobject can be removed.Working example: https://jsfiddle.net/rumwj0av/5/