Skip to content

Commit

Permalink
Merge pull request #169 from swellstores/feature/stripe-co-badged-cards
Browse files Browse the repository at this point in the history
fix: zip_check after creating stripe payment method
  • Loading branch information
awwit committed Apr 15, 2024
2 parents f06e942 + fbe8fc9 commit 7b4eba3
Show file tree
Hide file tree
Showing 16 changed files with 187 additions and 51 deletions.
2 changes: 1 addition & 1 deletion .prettierrc
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"bracketSpacing": true,
"bracketSameLine": true,
"bracketSameLine": false,
"trailingComma": "all",
"arrowParens": "always",
"printWidth": 80,
Expand Down
16 changes: 16 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@
"@rollup/plugin-json": "6.1.0",
"@rollup/plugin-node-resolve": "15.2.3",
"@rollup/plugin-replace": "5.0.5",
"@stripe/stripe-js": "^3.1.0",
"@types/jest": "^29.5.11",
"babel-jest": "^29.5.0",
"babel-loader": "^9.1.3",
Expand Down
11 changes: 11 additions & 0 deletions src/payment/apple/stripe.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@ import {
LibraryNotLoadedError,
} from '../../utils/errors';

/** @typedef {import('@stripe/stripe-js').Stripe} Stripe */
/** @typedef {import('@stripe/stripe-js').PaymentRequestPaymentMethodEvent} PaymentRequestPaymentMethodEvent */

export default class StripeApplePayment extends Payment {
constructor(request, options, params, methods) {
if (!methods.card) {
Expand All @@ -23,6 +26,7 @@ export default class StripeApplePayment extends Payment {
return ['stripe-js'];
}

/** @returns {Stripe} */
get stripe() {
if (!StripeApplePayment.stripe) {
if (window.Stripe) {
Expand All @@ -37,6 +41,7 @@ export default class StripeApplePayment extends Payment {
return StripeApplePayment.stripe;
}

/** @param {Stripe} stripe */
set stripe(stripe) {
StripeApplePayment.stripe = stripe;
}
Expand Down Expand Up @@ -117,6 +122,7 @@ export default class StripeApplePayment extends Payment {
return paymentRequest;
}

/** @param {import('@stripe/stripe-js').PaymentRequestShippingAddressEvent} event */
async _onShippingAddressChange(event) {
const { shippingAddress, updateWith } = event;
const shipping = this._mapShippingAddress(shippingAddress);
Expand All @@ -135,6 +141,7 @@ export default class StripeApplePayment extends Payment {
}
}

/** @param {import('@stripe/stripe-js').PaymentRequestShippingOptionEvent} event */
async _onShippingOptionChange(event) {
const { shippingOption, updateWith } = event;
const cart = await this.updateCart({
Expand All @@ -151,6 +158,7 @@ export default class StripeApplePayment extends Payment {
}
}

/** @param {PaymentRequestPaymentMethodEvent} event */
async _onPaymentMethod(event) {
const {
payerEmail,
Expand Down Expand Up @@ -178,6 +186,7 @@ export default class StripeApplePayment extends Payment {
gateway: 'stripe',
token: paymentMethod,
brand: card.brand,
display_brand: card.display_brand,
exp_month: card.exp_month,
exp_year: card.exp_year,
last4: card.last4,
Expand All @@ -193,6 +202,7 @@ export default class StripeApplePayment extends Payment {
this.onSuccess();
}

/** @param {import('@stripe/stripe-js').PaymentRequestShippingAddress} [address] */
_mapShippingAddress(address = {}) {
return {
name: address.recipient,
Expand All @@ -206,6 +216,7 @@ export default class StripeApplePayment extends Payment {
};
}

/** @param {PaymentRequestPaymentMethodEvent['paymentMethod']['billing_details']} [address] */
_mapBillingAddress(address = {}) {
return {
name: address.name,
Expand Down
4 changes: 4 additions & 0 deletions src/payment/bancontact/stripe.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ import {
LibraryNotLoadedError,
} from '../../utils/errors';

/** @typedef {import('@stripe/stripe-js').Stripe} Stripe */

export default class StripeBancontactPayment extends Payment {
constructor(request, options, params, methods) {
if (!methods.card) {
Expand All @@ -23,6 +25,7 @@ export default class StripeBancontactPayment extends Payment {
return ['stripe-js'];
}

/** @returns {Stripe} */
get stripe() {
if (!StripeBancontactPayment.stripe) {
if (window.Stripe) {
Expand All @@ -37,6 +40,7 @@ export default class StripeBancontactPayment extends Payment {
return StripeBancontactPayment.stripe;
}

/** @param {Stripe} stripe */
set stripe(stripe) {
StripeBancontactPayment.stripe = stripe;
}
Expand Down
8 changes: 8 additions & 0 deletions src/payment/card/stripe.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ import {
} from '../../utils/stripe';
import { LibraryNotLoadedError } from '../../utils/errors';

/** @typedef {import('@stripe/stripe-js').Stripe} Stripe */
/** @typedef {import('@stripe/stripe-js').StripeCardElement} StripeCardElement */
/** @typedef {import('@stripe/stripe-js').StripeCardNumberElement} StripeCardNumberElement */

export default class StripeCardPayment extends Payment {
constructor(request, options, params, methods) {
super(request, options, params, methods.card);
Expand All @@ -16,6 +20,7 @@ export default class StripeCardPayment extends Payment {
return ['stripe-js'];
}

/** @returns {Stripe} */
get stripe() {
if (!StripeCardPayment.stripe) {
if (window.Stripe) {
Expand All @@ -30,14 +35,17 @@ export default class StripeCardPayment extends Payment {
return StripeCardPayment.stripe;
}

/** @param {Stripe} stripe */
set stripe(stripe) {
StripeCardPayment.stripe = stripe;
}

/** @returns {StripeCardElement | StripeCardNumberElement} */
get stripeElement() {
return StripeCardPayment.stripeElement;
}

/** @param {StripeCardElement | StripeCardNumberElement} stripeElement */
set stripeElement(stripeElement) {
StripeCardPayment.stripeElement = stripeElement;
}
Expand Down
18 changes: 16 additions & 2 deletions src/payment/google/stripe.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@ import {
PaymentMethodDisabledError,
} from '../../utils/errors';

/** @typedef {import('@stripe/stripe-js').Stripe} Stripe */
/** @typedef {import('@stripe/stripe-js').PaymentRequestPaymentMethodEvent} PaymentRequestPaymentMethodEvent */

export default class StripeGooglePayment extends Payment {
constructor(request, options, params, methods) {
if (!methods.card) {
Expand All @@ -23,6 +26,7 @@ export default class StripeGooglePayment extends Payment {
return ['stripe-js'];
}

/** @returns {Stripe} */
get stripe() {
if (!StripeGooglePayment.stripe) {
if (window.Stripe) {
Expand All @@ -37,6 +41,7 @@ export default class StripeGooglePayment extends Payment {
return StripeGooglePayment.stripe;
}

/** @param {Stripe} stripe */
set stripe(stripe) {
StripeGooglePayment.stripe = stripe;
}
Expand Down Expand Up @@ -94,6 +99,7 @@ export default class StripeGooglePayment extends Payment {
return paymentRequest;
}

/** @param {import('@stripe/stripe-js').PaymentRequestShippingAddressEvent} event */
async _onShippingAddressChange(event) {
const { shippingAddress, updateWith } = event;
const shipping = this._mapShippingAddress(shippingAddress);
Expand All @@ -112,6 +118,7 @@ export default class StripeGooglePayment extends Payment {
}
}

/** @param {import('@stripe/stripe-js').PaymentRequestShippingOptionEvent} event */
async _onShippingOptionChange(event) {
const { shippingOption, updateWith } = event;
const cart = await this.updateCart({
Expand All @@ -128,6 +135,7 @@ export default class StripeGooglePayment extends Payment {
}
}

/** @param {PaymentRequestPaymentMethodEvent} event */
async _onPaymentMethod(event) {
const {
payerEmail,
Expand Down Expand Up @@ -155,6 +163,7 @@ export default class StripeGooglePayment extends Payment {
gateway: 'stripe',
token: paymentMethod,
brand: card.brand,
display_brand: card.display_brand,
exp_month: card.exp_month,
exp_year: card.exp_year,
last4: card.last4,
Expand All @@ -170,8 +179,11 @@ export default class StripeGooglePayment extends Payment {
this.onSuccess();
}

// Provides backward compatibility with Google Pay button options
// https://developers.google.com/pay/api/web/reference/request-objects#ButtonOptions
/**
* Provides backward compatibility with Google Pay button options
*
* @see {@link https://developers.google.com/pay/api/web/reference/request-objects#ButtonOptions}
*/
_getButtonStyles() {
let { style: { color = 'dark', type = 'default', height = '45px' } = {} } =
this.params;
Expand Down Expand Up @@ -201,6 +213,7 @@ export default class StripeGooglePayment extends Payment {
};
}

/** @param {import('@stripe/stripe-js').PaymentRequestShippingAddress} [address] */
_mapShippingAddress(address = {}) {
return {
name: address.recipient,
Expand All @@ -214,6 +227,7 @@ export default class StripeGooglePayment extends Payment {
};
}

/** @param {PaymentRequestPaymentMethodEvent['paymentMethod']['billing_details']} [address] */
_mapBillingAddress(address = {}) {
return {
name: address.name,
Expand Down
11 changes: 11 additions & 0 deletions src/payment/ideal/stripe.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@ import {
LibraryNotLoadedError,
} from '../../utils/errors';

/** @typedef {import('@stripe/stripe-js').Stripe} Stripe */
/** @typedef {import('@stripe/stripe-js').StripeIdealBankElement} StripeIdealBankElement */

export default class StripeIDealPayment extends Payment {
constructor(request, options, params, methods) {
if (!methods.card) {
Expand All @@ -27,6 +30,7 @@ export default class StripeIDealPayment extends Payment {
return ['stripe-js'];
}

/** @returns {Stripe} */
get stripe() {
if (!StripeIDealPayment.stripe) {
if (window.Stripe) {
Expand All @@ -41,14 +45,17 @@ export default class StripeIDealPayment extends Payment {
return StripeIDealPayment.stripe;
}

/** @param {Stripe} stripe */
set stripe(stripe) {
StripeIDealPayment.stripe = stripe;
}

/** @returns {StripeIdealBankElement} */
get stripeElement() {
return StripeIDealPayment.stripeElement;
}

/** @param {StripeIdealBankElement} stripeElement */
set stripeElement(stripeElement) {
StripeIDealPayment.stripeElement = stripeElement;
}
Expand Down Expand Up @@ -81,6 +88,10 @@ export default class StripeIDealPayment extends Payment {
await this.stripe.handleCardAction(intent.client_secret);
}

/**
* @param {object} cart
* @param {import('@stripe/stripe-js').PaymentMethod} paymentMethod
*/
async _createIntent(cart, paymentMethod) {
const { currency, capture_total } = cart;
const stripeCurrency = (currency || 'EUR').toLowerCase();
Expand Down
4 changes: 4 additions & 0 deletions src/payment/klarna/stripe.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ import {
UnableAuthenticatePaymentMethodError,
} from '../../utils/errors';

/** @typedef {import('@stripe/stripe-js').Stripe} Stripe */

export default class StripeKlarnaPayment extends Payment {
constructor(request, options, params, methods) {
if (!methods.card) {
Expand All @@ -27,6 +29,7 @@ export default class StripeKlarnaPayment extends Payment {
return ['stripe-js'];
}

/** @returns {Stripe} */
get stripe() {
if (!StripeKlarnaPayment.stripe) {
if (window.Stripe) {
Expand All @@ -41,6 +44,7 @@ export default class StripeKlarnaPayment extends Payment {
return StripeKlarnaPayment.stripe;
}

/** @param {Stripe} stripe */
set stripe(stripe) {
StripeKlarnaPayment.stripe = stripe;
}
Expand Down
Loading

0 comments on commit 7b4eba3

Please sign in to comment.