@vendure/core
Version:
A modern, headless ecommerce framework
61 lines (60 loc) • 2.57 kB
TypeScript
import { ConfigArg } from '@vendure/common/lib/generated-types';
import { RequestContext } from '../../api/common/request-context';
import { ConfigArgs, ConfigArgValues, ConfigurableOperationDef, ConfigurableOperationDefOptions } from '../../common/configurable-operation';
import { Order, PaymentMethod } from '../../entity';
/**
* @description
* Configuration passed into the constructor of a {@link PaymentMethodEligibilityChecker} to
* configure its behavior.
*
* @docsCategory payment
* @docsPage PaymentMethodEligibilityChecker
*/
export interface PaymentMethodEligibilityCheckerConfig<T extends ConfigArgs> extends ConfigurableOperationDefOptions<T> {
check: CheckPaymentMethodEligibilityCheckerFn<T>;
}
/**
* @description
* The PaymentMethodEligibilityChecker class is used to check whether an order qualifies for a
* given {@link PaymentMethod}.
*
* @example
* ```ts
* const ccPaymentEligibilityChecker = new PaymentMethodEligibilityChecker({
* code: 'order-total-payment-eligibility-checker',
* description: [{ languageCode: LanguageCode.en, value: 'Checks that the order total is above some minimum value' }],
* args: {
* orderMinimum: { type: 'int', ui: { component: 'currency-form-input' } },
* },
* check: (ctx, order, args) => {
* return order.totalWithTax >= args.orderMinimum;
* },
* });
* ```
*
* @docsCategory payment
* @docsPage PaymentMethodEligibilityChecker
* @docsWeight 0
*/
export declare class PaymentMethodEligibilityChecker<T extends ConfigArgs = ConfigArgs> extends ConfigurableOperationDef<T> {
private readonly checkFn;
constructor(config: PaymentMethodEligibilityCheckerConfig<T>);
/**
* @description
* Check the given Order to determine whether it is eligible.
*
* @internal
*/
check(ctx: RequestContext, order: Order, args: ConfigArg[], method: PaymentMethod): Promise<boolean | string>;
}
/**
* @description
* A function which implements logic to determine whether a given {@link Order} is eligible for
* a particular payment method. If the function resolves to `false` or a string, the check is
* considered to have failed. A string result can be used to provide information about the
* reason for ineligibility, if desired.
*
* @docsCategory payment
* @docsPage PaymentMethodEligibilityChecker
*/
export type CheckPaymentMethodEligibilityCheckerFn<T extends ConfigArgs> = (ctx: RequestContext, order: Order, args: ConfigArgValues<T>, method: PaymentMethod) => boolean | string | Promise<boolean | string>;