
* Add types for payment webhooks * Add transaction webhooks * Update responses for transactions * Create .changeset/gold-buses-warn.md * Simplify returned values for some webhooks * Update changesets --------- Co-authored-by: Lukasz Ostrowski <lukasz@monolog.tech>
100 lines
2.6 KiB
TypeScript
100 lines
2.6 KiB
TypeScript
import { SyncWebhookEventType } from "../../../types";
|
|
|
|
export type SyncWebhookResponsesMap = {
|
|
CHECKOUT_CALCULATE_TAXES: {
|
|
shipping_price_gross_amount: number;
|
|
shipping_price_net_amount: number;
|
|
shipping_tax_rate: number;
|
|
lines: Array<{
|
|
total_gross_amount: number;
|
|
total_net_amount: number;
|
|
tax_rate: number;
|
|
}>;
|
|
};
|
|
CHECKOUT_FILTER_SHIPPING_METHODS: {
|
|
excluded_methods: Array<{
|
|
id: string;
|
|
reason?: string;
|
|
}>;
|
|
};
|
|
ORDER_CALCULATE_TAXES: SyncWebhookResponsesMap["CHECKOUT_CALCULATE_TAXES"];
|
|
ORDER_FILTER_SHIPPING_METHODS: SyncWebhookResponsesMap["CHECKOUT_FILTER_SHIPPING_METHODS"];
|
|
SHIPPING_LIST_METHODS_FOR_CHECKOUT: Array<{
|
|
id: string;
|
|
name?: string;
|
|
amount: number;
|
|
currency: string; // or enum?
|
|
/**
|
|
* Integer
|
|
*/
|
|
maximum_delivery_days?: number;
|
|
}>;
|
|
TRANSACTION_CHARGE_REQUESTED: {
|
|
pspReference: string;
|
|
result?: "CHARGE_SUCCESS" | "CHARGE_FAILURE";
|
|
amount?: number;
|
|
time?: string;
|
|
externalUrl?: string;
|
|
message?: string;
|
|
};
|
|
TRANSACTION_REFUND_REQUESTED: {
|
|
pspReference: string;
|
|
result?: "REFUND_SUCCESS" | "REFUND_FAILURE";
|
|
amount?: number;
|
|
time?: string;
|
|
externalUrl?: string;
|
|
message?: string;
|
|
};
|
|
TRANSACTION_CANCELATION_REQUESTED: {
|
|
pspReference: string;
|
|
result?: "CANCEL_SUCCESS" | "CANCEL_FAILURE";
|
|
amount?: number;
|
|
time?: string;
|
|
externalUrl?: string;
|
|
message?: string;
|
|
};
|
|
PAYMENT_GATEWAY_INITIALIZE_SESSION: {
|
|
data: unknown;
|
|
};
|
|
TRANSACTION_INITIALIZE_SESSION: {
|
|
pspReference?: string;
|
|
data?: unknown;
|
|
result:
|
|
| "CHARGE_SUCCESS"
|
|
| "CHARGE_FAILURE"
|
|
| "CHARGE_REQUESTED"
|
|
| "CHARGE_ACTION_REQUIRED"
|
|
| "AUTHORIZATION_SUCCESS"
|
|
| "AUTHORIZATION_FAILURE"
|
|
| "AUTHORIZATION_REQUESTED"
|
|
| "AUTHORIZATION_ACTION_REQUIRED";
|
|
amount: number;
|
|
time?: string;
|
|
externalUrl?: string;
|
|
message?: string;
|
|
};
|
|
TRANSACTION_PROCESS_SESSION: {
|
|
pspReference?: string;
|
|
data?: unknown;
|
|
result:
|
|
| "CHARGE_SUCCESS"
|
|
| "CHARGE_FAILURE"
|
|
| "CHARGE_REQUESTED"
|
|
| "CHARGE_ACTION_REQUIRED"
|
|
| "AUTHORIZATION_SUCCESS"
|
|
| "AUTHORIZATION_FAILURE"
|
|
| "AUTHORIZATION_REQUESTED"
|
|
| "AUTHORIZATION_ACTION_REQUIRED";
|
|
amount: number;
|
|
time?: string;
|
|
externalUrl?: string;
|
|
message?: string;
|
|
};
|
|
};
|
|
|
|
/**
|
|
* Identity function, but it works on Typescript level to pick right payload based on first param
|
|
*/
|
|
export const buildSyncWebhookResponsePayload = <E extends SyncWebhookEventType>(
|
|
payload: SyncWebhookResponsesMap[E]
|
|
): SyncWebhookResponsesMap[E] => payload;
|