medusa-plugin-braintree 0.1.1 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.medusa/server/src/providers/payment-braintree/__tests__/caching.unit.spec.d.ts +1 -0
- package/.medusa/server/src/providers/payment-braintree/__tests__/caching.unit.spec.js +114 -0
- package/.medusa/server/src/providers/payment-braintree/index.d.ts +3 -0
- package/.medusa/server/src/providers/payment-braintree/index.js +16 -1
- package/.medusa/server/src/providers/payment-braintree/provider.d.ts +55 -0
- package/.medusa/server/src/providers/payment-braintree/provider.js +2 -2
- package/.medusa/server/src/providers/payment-braintree/types.d.ts +70 -0
- package/.medusa/server/src/providers/payment-braintree/utils.d.ts +9 -0
- package/LICENSE +21 -0
- package/package.json +48 -37
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/// <reference types="jest" />
|
|
4
|
+
const provider_1 = require("../provider");
|
|
5
|
+
// ── Mocks ────────────────────────────────────────────────────────────────────
|
|
6
|
+
const mockCaching = {
|
|
7
|
+
get: jest.fn(),
|
|
8
|
+
set: jest.fn(),
|
|
9
|
+
clear: jest.fn()
|
|
10
|
+
};
|
|
11
|
+
const mockGateway = {
|
|
12
|
+
clientToken: {
|
|
13
|
+
generate: jest.fn().mockResolvedValue({ clientToken: 'generated-token-123' })
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
const mockLogger = {
|
|
17
|
+
info: jest.fn(),
|
|
18
|
+
warn: jest.fn(),
|
|
19
|
+
error: jest.fn(),
|
|
20
|
+
debug: jest.fn()
|
|
21
|
+
};
|
|
22
|
+
const defaultOptions = {
|
|
23
|
+
environment: 'sandbox',
|
|
24
|
+
merchantId: 'test-merchant',
|
|
25
|
+
publicKey: 'test-public',
|
|
26
|
+
privateKey: 'test-private',
|
|
27
|
+
webhookSecret: 'test-secret',
|
|
28
|
+
enable3DSecure: false,
|
|
29
|
+
savePaymentMethod: false,
|
|
30
|
+
autoCapture: false
|
|
31
|
+
};
|
|
32
|
+
function createProvider() {
|
|
33
|
+
const container = {
|
|
34
|
+
logger: mockLogger,
|
|
35
|
+
caching: mockCaching
|
|
36
|
+
};
|
|
37
|
+
const provider = new provider_1.BraintreeProvider(container, defaultOptions);
|
|
38
|
+
provider.gateway = mockGateway;
|
|
39
|
+
return provider;
|
|
40
|
+
}
|
|
41
|
+
// ── Tests ────────────────────────────────────────────────────────────────────
|
|
42
|
+
describe('BraintreeProvider caching', () => {
|
|
43
|
+
let provider;
|
|
44
|
+
beforeEach(() => {
|
|
45
|
+
jest.clearAllMocks();
|
|
46
|
+
provider = createProvider();
|
|
47
|
+
});
|
|
48
|
+
describe('saveClientTokenToCache', () => {
|
|
49
|
+
it('stores token as { token } object with correct key and TTL', async () => {
|
|
50
|
+
const now = Math.floor(Date.now() / 1000);
|
|
51
|
+
const expiry = now + 3600; // 1 hour from now
|
|
52
|
+
await provider.saveClientTokenToCache('tok_abc', 'cus_123', expiry);
|
|
53
|
+
expect(mockCaching.set).toHaveBeenCalledTimes(1);
|
|
54
|
+
const call = mockCaching.set.mock.calls[0][0];
|
|
55
|
+
expect(call.key).toBe('braintree:clientToken:cus_123');
|
|
56
|
+
expect(call.data).toEqual({ token: 'tok_abc' });
|
|
57
|
+
expect(call.ttl).toBeGreaterThan(0);
|
|
58
|
+
expect(call.ttl).toBeLessThanOrEqual(3600);
|
|
59
|
+
});
|
|
60
|
+
it('does not cache when TTL would be <= 0', async () => {
|
|
61
|
+
const expired = Math.floor(Date.now() / 1000) - 10;
|
|
62
|
+
await provider.saveClientTokenToCache('tok_abc', 'cus_123', expired);
|
|
63
|
+
expect(mockCaching.set).not.toHaveBeenCalled();
|
|
64
|
+
});
|
|
65
|
+
it('does not cache when clientToken is empty', async () => {
|
|
66
|
+
const expiry = Math.floor(Date.now() / 1000) + 3600;
|
|
67
|
+
await provider.saveClientTokenToCache('', 'cus_123', expiry);
|
|
68
|
+
expect(mockCaching.set).not.toHaveBeenCalled();
|
|
69
|
+
});
|
|
70
|
+
it('throws when customerId is missing', async () => {
|
|
71
|
+
const expiry = Math.floor(Date.now() / 1000) + 3600;
|
|
72
|
+
await expect(provider.saveClientTokenToCache('tok_abc', '', expiry)).rejects.toThrow('Customer ID is required');
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
describe('getClientTokenFromCache', () => {
|
|
76
|
+
it('returns the cached token string when found', async () => {
|
|
77
|
+
mockCaching.get.mockResolvedValueOnce({ token: 'cached-tok' });
|
|
78
|
+
const result = await provider.getClientTokenFromCache('cus_123');
|
|
79
|
+
expect(mockCaching.get).toHaveBeenCalledWith({ key: 'braintree:clientToken:cus_123' });
|
|
80
|
+
expect(result).toBe('cached-tok');
|
|
81
|
+
});
|
|
82
|
+
it('returns null when cache misses', async () => {
|
|
83
|
+
mockCaching.get.mockResolvedValueOnce(null);
|
|
84
|
+
const result = await provider.getClientTokenFromCache('cus_123');
|
|
85
|
+
expect(result).toBeNull();
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
describe('getValidClientToken', () => {
|
|
89
|
+
it('returns cached token without generating a new one', async () => {
|
|
90
|
+
mockCaching.get.mockResolvedValueOnce({ token: 'cached-tok' });
|
|
91
|
+
const result = await provider.getValidClientToken('cus_123', undefined);
|
|
92
|
+
expect(result).toBe('cached-tok');
|
|
93
|
+
expect(mockGateway.clientToken.generate).not.toHaveBeenCalled();
|
|
94
|
+
});
|
|
95
|
+
it('generates and caches a new token on cache miss', async () => {
|
|
96
|
+
mockCaching.get.mockResolvedValueOnce(null);
|
|
97
|
+
const result = await provider.getValidClientToken('cus_123', undefined);
|
|
98
|
+
expect(result).toBe('generated-token-123');
|
|
99
|
+
expect(mockGateway.clientToken.generate).toHaveBeenCalledTimes(1);
|
|
100
|
+
expect(mockCaching.set).toHaveBeenCalledTimes(1);
|
|
101
|
+
const setCall = mockCaching.set.mock.calls[0][0];
|
|
102
|
+
expect(setCall.key).toBe('braintree:clientToken:cus_123');
|
|
103
|
+
expect(setCall.data).toEqual({ token: 'generated-token-123' });
|
|
104
|
+
expect(setCall.ttl).toBeGreaterThan(0);
|
|
105
|
+
});
|
|
106
|
+
it('generates token without caching when no customerId', async () => {
|
|
107
|
+
const result = await provider.getValidClientToken(undefined, undefined);
|
|
108
|
+
expect(result).toBe('generated-token-123');
|
|
109
|
+
expect(mockCaching.get).not.toHaveBeenCalled();
|
|
110
|
+
expect(mockCaching.set).not.toHaveBeenCalled();
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGluZy51bml0LnNwZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvcHJvdmlkZXJzL3BheW1lbnQtYnJhaW50cmVlL19fdGVzdHNfXy9jYWNoaW5nLnVuaXQuc3BlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDhCQUE4QjtBQUM5QiwwQ0FBK0M7QUFHL0MsZ0ZBQWdGO0FBRWhGLE1BQU0sV0FBVyxHQUFHO0lBQ25CLEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFO0lBQ2QsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUU7SUFDZCxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTtDQUNoQixDQUFBO0FBRUQsTUFBTSxXQUFXLEdBQUc7SUFDbkIsV0FBVyxFQUFFO1FBQ1osUUFBUSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLFdBQVcsRUFBRSxxQkFBcUIsRUFBRSxDQUFDO0tBQzdFO0NBQ0QsQ0FBQTtBQUVELE1BQU0sVUFBVSxHQUFHO0lBQ2xCLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFO0lBQ2YsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUU7SUFDZixLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTtJQUNoQixLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTtDQUNoQixDQUFBO0FBRUQsTUFBTSxjQUFjLEdBQXFCO0lBQ3hDLFdBQVcsRUFBRSxTQUFTO0lBQ3RCLFVBQVUsRUFBRSxlQUFlO0lBQzNCLFNBQVMsRUFBRSxhQUFhO0lBQ3hCLFVBQVUsRUFBRSxjQUFjO0lBQzFCLGFBQWEsRUFBRSxhQUFhO0lBQzVCLGNBQWMsRUFBRSxLQUFLO0lBQ3JCLGlCQUFpQixFQUFFLEtBQUs7SUFDeEIsV0FBVyxFQUFFLEtBQUs7Q0FDbEIsQ0FBQTtBQUVELFNBQVMsY0FBYztJQUN0QixNQUFNLFNBQVMsR0FB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
|
|
@@ -1,8 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
2
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
17
|
const utils_1 = require("@medusajs/framework/utils");
|
|
4
18
|
const provider_1 = require("./provider");
|
|
5
19
|
exports.default = (0, utils_1.ModuleProvider)(utils_1.Modules.PAYMENT, {
|
|
6
20
|
services: [provider_1.BraintreeProvider]
|
|
7
21
|
});
|
|
8
|
-
|
|
22
|
+
__exportStar(require("./provider"), exports);
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvcHJvdmlkZXJzL3BheW1lbnQtYnJhaW50cmVlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxxREFBbUU7QUFDbkUseUNBQThDO0FBRTlDLGtCQUFlLElBQUEsc0JBQWMsRUFBQyxlQUFPLENBQUMsT0FBTyxFQUFFO0lBQzlDLFFBQVEsRUFBRSxDQUFDLDRCQUFpQixDQUFDO0NBQzdCLENBQUMsQ0FBQTtBQUVGLDZDQUEwQiJ9
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { AbstractPaymentProvider, MedusaError } from '@medusajs/framework/utils';
|
|
2
|
+
import type { AuthorizePaymentInput, AuthorizePaymentOutput, CancelPaymentInput, CancelPaymentOutput, CapturePaymentInput, CapturePaymentOutput, CreateAccountHolderInput, CreateAccountHolderOutput, DeleteAccountHolderInput, DeleteAccountHolderOutput, DeletePaymentInput, DeletePaymentOutput, GetPaymentStatusInput, GetPaymentStatusOutput, ICachingModuleService, InitiatePaymentInput, InitiatePaymentOutput, Logger, PaymentAccountHolderDTO, PaymentProviderContext, ProviderWebhookPayload, RefundPaymentInput, RefundPaymentOutput, RetrievePaymentInput, RetrievePaymentOutput, SavePaymentMethodInput, SavePaymentMethodOutput, UpdateAccountHolderInput, UpdateAccountHolderOutput, UpdatePaymentInput, UpdatePaymentOutput, WebhookActionResult } from '@medusajs/types';
|
|
3
|
+
import type { Transaction } from 'braintree';
|
|
4
|
+
import Braintree from 'braintree';
|
|
5
|
+
import type { BraintreeOptions } from './types';
|
|
6
|
+
export type BraintreeTransactionContext = PaymentProviderContext & Pick<Braintree.TransactionRequest, 'billing' | 'shipping' | 'customFields' | 'orderId' | 'lineItems' | 'shippingAmount' | 'taxAmount' | 'shippingTaxAmount' | 'discountAmount' | 'customer' | 'deviceData'>;
|
|
7
|
+
export interface BraintreePaymentSessionData {
|
|
8
|
+
client_token: string;
|
|
9
|
+
transaction: Transaction;
|
|
10
|
+
amount: number;
|
|
11
|
+
currency_code: string;
|
|
12
|
+
payment_method_nonce?: string;
|
|
13
|
+
account_holder?: PaymentAccountHolderDTO;
|
|
14
|
+
context?: BraintreeTransactionContext;
|
|
15
|
+
}
|
|
16
|
+
export interface BraintreeInitiatePaymentData {
|
|
17
|
+
payment_method_nonce?: string;
|
|
18
|
+
}
|
|
19
|
+
export declare const buildBraintreeError: (error: unknown, operation: string, logger: Logger, context?: Record<string, unknown>) => MedusaError;
|
|
20
|
+
export declare class BraintreeProvider extends AbstractPaymentProvider<BraintreeOptions> {
|
|
21
|
+
static identifier: string;
|
|
22
|
+
protected readonly options_: BraintreeOptions;
|
|
23
|
+
protected gateway: Braintree.BraintreeGateway;
|
|
24
|
+
logger: Logger;
|
|
25
|
+
caching: ICachingModuleService;
|
|
26
|
+
constructor(container: {
|
|
27
|
+
logger: Logger;
|
|
28
|
+
caching: ICachingModuleService;
|
|
29
|
+
}, options: BraintreeOptions);
|
|
30
|
+
saveClientTokenToCache(clientToken: string, customerId: string, expiresOnEpochSeconds: number): Promise<void>;
|
|
31
|
+
getClientTokenFromCache(customerId: string): Promise<string | null>;
|
|
32
|
+
getValidClientToken(medusaCustomerId: string | undefined, accountHolder: PaymentAccountHolderDTO | undefined): Promise<string | null>;
|
|
33
|
+
private parsePaymentSessionData;
|
|
34
|
+
init(): void;
|
|
35
|
+
static validateOptions(options: BraintreeOptions): void;
|
|
36
|
+
capturePayment(input: CapturePaymentInput): Promise<CapturePaymentOutput>;
|
|
37
|
+
authorizePayment(input: AuthorizePaymentInput): Promise<AuthorizePaymentOutput>;
|
|
38
|
+
cancelPayment(input: CancelPaymentInput): Promise<CancelPaymentOutput>;
|
|
39
|
+
private retrieveTransaction;
|
|
40
|
+
private mapTransactionStatusToPaymentStatus;
|
|
41
|
+
private validateInitiatePaymentData;
|
|
42
|
+
initiatePayment(input: InitiatePaymentInput): Promise<InitiatePaymentOutput>;
|
|
43
|
+
private createTransaction;
|
|
44
|
+
deletePayment(input: DeletePaymentInput): Promise<DeletePaymentOutput>;
|
|
45
|
+
getPaymentStatus(input: GetPaymentStatusInput): Promise<GetPaymentStatusOutput>;
|
|
46
|
+
savePaymentMethod(input: SavePaymentMethodInput): Promise<SavePaymentMethodOutput>;
|
|
47
|
+
refundPayment(input: RefundPaymentInput): Promise<RefundPaymentOutput>;
|
|
48
|
+
retrievePayment(input: RetrievePaymentInput): Promise<RetrievePaymentOutput>;
|
|
49
|
+
updatePayment(input: UpdatePaymentInput): Promise<UpdatePaymentOutput>;
|
|
50
|
+
createAccountHolder(input: CreateAccountHolderInput): Promise<CreateAccountHolderOutput>;
|
|
51
|
+
updateAccountHolder(input: UpdateAccountHolderInput): Promise<UpdateAccountHolderOutput>;
|
|
52
|
+
deleteAccountHolder(input: DeleteAccountHolderInput): Promise<DeleteAccountHolderOutput>;
|
|
53
|
+
getWebhookActionAndData(webhookData: ProviderWebhookPayload['payload']): Promise<WebhookActionResult>;
|
|
54
|
+
private createBraintreeCustomer;
|
|
55
|
+
}
|
|
@@ -81,7 +81,7 @@ class BraintreeProvider extends utils_1.AbstractPaymentProvider {
|
|
|
81
81
|
.object({
|
|
82
82
|
firstName: zod_1.z.string(),
|
|
83
83
|
lastName: zod_1.z.string(),
|
|
84
|
-
email: zod_1.z.
|
|
84
|
+
email: zod_1.z.email(),
|
|
85
85
|
phone: zod_1.z.string().optional()
|
|
86
86
|
})
|
|
87
87
|
.optional(),
|
|
@@ -651,4 +651,4 @@ class BraintreeProvider extends utils_1.AbstractPaymentProvider {
|
|
|
651
651
|
}
|
|
652
652
|
exports.BraintreeProvider = BraintreeProvider;
|
|
653
653
|
BraintreeProvider.identifier = 'braintree';
|
|
654
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvcHJvdmlkZXJzL3BheW1lbnQtYnJhaW50cmVlL3Byb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHFEQVNrQztBQXFDbEMsMERBQWlDO0FBQ2pDLDZCQUF1QjtBQUN2QixtQ0FBa0Q7QUFpQ2xELE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxVQUFrQixFQUFFLEVBQUUsQ0FBQyx5QkFBeUIsVUFBVSxFQUFFLENBQUE7QUFFeEYsZ0RBQWdEO0FBQ2hELE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBYyxFQUFFLFNBQWlCLEVBQVUsRUFBRTtJQUNwRSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQ2hELE1BQU0sSUFBSSxtQkFBVyxDQUNwQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFDbEMsR0FBRyxTQUFTLDZCQUE2QixDQUN6QyxDQUFBO0lBQ0YsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFBO0FBQ2IsQ0FBQyxDQUFBO0FBRUQsMkRBQTJEO0FBQ3BELE1BQU0sbUJBQW1CLEdBQUcsQ0FDbEMsS0FBYyxFQUNkLFNBQWlCLEVBQ2pCLE1BQWMsRUFDZCxPQUFpQyxFQUNuQixFQUFFO0lBQ2hCLE1BQU0sWUFBWSxHQUFHLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUUzRSx5Q0FBeUM7SUFDekMsTUFBTSxDQUFDLEtBQUssQ0FDWCxhQUFhLFNBQVMsWUFBWSxZQUFZLEVBQUUsRUFDaEQsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQzFDLENBQUE7SUFFRCxPQUFPLElBQUksbUJBQVcs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
|
|
654
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvcHJvdmlkZXJzL3BheW1lbnQtYnJhaW50cmVlL3Byb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHFEQVNrQztBQXFDbEMsMERBQWlDO0FBQ2pDLDZCQUF1QjtBQUN2QixtQ0FBa0Q7QUFpQ2xELE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxVQUFrQixFQUFFLEVBQUUsQ0FBQyx5QkFBeUIsVUFBVSxFQUFFLENBQUE7QUFFeEYsZ0RBQWdEO0FBQ2hELE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBYyxFQUFFLFNBQWlCLEVBQVUsRUFBRTtJQUNwRSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQ2hELE1BQU0sSUFBSSxtQkFBVyxDQUNwQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFDbEMsR0FBRyxTQUFTLDZCQUE2QixDQUN6QyxDQUFBO0lBQ0YsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFBO0FBQ2IsQ0FBQyxDQUFBO0FBRUQsMkRBQTJEO0FBQ3BELE1BQU0sbUJBQW1CLEdBQUcsQ0FDbEMsS0FBYyxFQUNkLFNBQWlCLEVBQ2pCLE1BQWMsRUFDZCxPQUFpQyxFQUNuQixFQUFFO0lBQ2hCLE1BQU0sWUFBWSxHQUFHLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUUzRSx5Q0FBeUM7SUFDekMsTUFBTSxDQUFDLEtBQUssQ0FDWCxhQUFhLFNBQVMsWUFBWSxZQUFZLEVBQUUsRUFDaEQsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQzFDLENBQUE7SUFFRCxPQUFPLElBQUksbUJBQVcs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
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
export interface BraintreeOptions {
|
|
2
|
+
environment: 'production' | 'sandbox' | 'development' | 'qa';
|
|
3
|
+
merchantId: string;
|
|
4
|
+
publicKey: string;
|
|
5
|
+
privateKey: string;
|
|
6
|
+
webhookSecret: string;
|
|
7
|
+
enable3DSecure: boolean;
|
|
8
|
+
savePaymentMethod: boolean;
|
|
9
|
+
autoCapture: boolean;
|
|
10
|
+
defaultCurrencyCode?: string;
|
|
11
|
+
allowRefundOnRefunded?: boolean;
|
|
12
|
+
}
|
|
13
|
+
export type CustomFields = Record<string, string>;
|
|
14
|
+
export interface DecodedClientToken {
|
|
15
|
+
version: number;
|
|
16
|
+
authorizationFingerprint: string;
|
|
17
|
+
configUrl: string;
|
|
18
|
+
graphQL: GraphQl;
|
|
19
|
+
clientApiUrl: string;
|
|
20
|
+
environment: string;
|
|
21
|
+
merchantId: string;
|
|
22
|
+
assetsUrl: string;
|
|
23
|
+
authUrl: string;
|
|
24
|
+
venmo: string;
|
|
25
|
+
challenges: string[];
|
|
26
|
+
threeDSecureEnabled: boolean;
|
|
27
|
+
analytics: Analytics;
|
|
28
|
+
paypalEnabled: boolean;
|
|
29
|
+
paypal: Paypal;
|
|
30
|
+
}
|
|
31
|
+
export interface GraphQl {
|
|
32
|
+
url: string;
|
|
33
|
+
date: string;
|
|
34
|
+
features: string[];
|
|
35
|
+
}
|
|
36
|
+
export interface Analytics {
|
|
37
|
+
url: string;
|
|
38
|
+
}
|
|
39
|
+
export interface Paypal {
|
|
40
|
+
billingAgreementsEnabled: boolean;
|
|
41
|
+
environmentNoNetwork: boolean;
|
|
42
|
+
unvettedMerchant: boolean;
|
|
43
|
+
allowHttp: boolean;
|
|
44
|
+
displayName: string;
|
|
45
|
+
clientId: string;
|
|
46
|
+
baseUrl: string;
|
|
47
|
+
assetsUrl: string;
|
|
48
|
+
directBaseUrl: string;
|
|
49
|
+
environment: string;
|
|
50
|
+
braintreeClientId: string;
|
|
51
|
+
merchantAccountId: string;
|
|
52
|
+
currencyIsoCode: string;
|
|
53
|
+
}
|
|
54
|
+
export interface DecodedClientTokenAuthorization {
|
|
55
|
+
exp: number;
|
|
56
|
+
jti: string;
|
|
57
|
+
sub: string;
|
|
58
|
+
iss: string;
|
|
59
|
+
merchant: Merchant;
|
|
60
|
+
rights: string[];
|
|
61
|
+
scope: string[];
|
|
62
|
+
options: Options;
|
|
63
|
+
}
|
|
64
|
+
export interface Merchant {
|
|
65
|
+
public_id: string;
|
|
66
|
+
verify_card_by_default: boolean;
|
|
67
|
+
verify_wallet_by_default: boolean;
|
|
68
|
+
}
|
|
69
|
+
export interface Options {
|
|
70
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Formats a number or string to a two-decimal string representation.
|
|
3
|
+
* Validates the input is parseable to a number and throws MedusaError on NaN.
|
|
4
|
+
*
|
|
5
|
+
* @param amount - The amount to format (number or string)
|
|
6
|
+
* @returns A string representation with exactly 2 decimal places
|
|
7
|
+
* @throws MedusaError if the amount is not a valid number
|
|
8
|
+
*/
|
|
9
|
+
export declare function formatToTwoDecimalString(amount: number | string): string;
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
The MIT License (MIT)
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Lacey Pevey
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "medusa-plugin-braintree",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "Braintree payment provider plugin for Medusa v2",
|
|
5
5
|
"author": "Lacey Pevey",
|
|
6
6
|
"license": "MIT",
|
|
@@ -14,11 +14,26 @@
|
|
|
14
14
|
],
|
|
15
15
|
"exports": {
|
|
16
16
|
"./package.json": "./package.json",
|
|
17
|
-
"./.medusa/server/src/modules/*":
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
"
|
|
17
|
+
"./.medusa/server/src/modules/*": {
|
|
18
|
+
"types": "./.medusa/server/src/modules/*/index.d.ts",
|
|
19
|
+
"default": "./.medusa/server/src/modules/*/index.js"
|
|
20
|
+
},
|
|
21
|
+
"./modules/*": {
|
|
22
|
+
"types": "./.medusa/server/src/modules/*/index.d.ts",
|
|
23
|
+
"default": "./.medusa/server/src/modules/*/index.js"
|
|
24
|
+
},
|
|
25
|
+
"./providers/*": {
|
|
26
|
+
"types": "./.medusa/server/src/providers/*/index.d.ts",
|
|
27
|
+
"default": "./.medusa/server/src/providers/*/index.js"
|
|
28
|
+
},
|
|
29
|
+
"./*": {
|
|
30
|
+
"types": "./.medusa/server/src/*.d.ts",
|
|
31
|
+
"default": "./.medusa/server/src/*.js"
|
|
32
|
+
},
|
|
33
|
+
".": {
|
|
34
|
+
"types": "./.medusa/server/src/providers/payment-braintree/index.d.ts",
|
|
35
|
+
"default": "./.medusa/server/src/providers/payment-braintree/index.js"
|
|
36
|
+
}
|
|
22
37
|
},
|
|
23
38
|
"keywords": [
|
|
24
39
|
"medusa-plugin-payment",
|
|
@@ -32,46 +47,42 @@
|
|
|
32
47
|
"build": "medusa plugin:build",
|
|
33
48
|
"dev": "medusa plugin:develop",
|
|
34
49
|
"prepublishOnly": "medusa plugin:build",
|
|
35
|
-
"test:unit": "TEST_TYPE=unit NODE_OPTIONS=--experimental-vm-modules jest --silent --runInBand --detectOpenHandles --forceExit"
|
|
50
|
+
"test:unit": "TEST_TYPE=unit NODE_OPTIONS=--experimental-vm-modules jest --silent --runInBand --detectOpenHandles --forceExit",
|
|
51
|
+
"test:integration:http": "TEST_TYPE=integration:http NODE_OPTIONS=--experimental-vm-modules jest --silent=false --runInBand --detectOpenHandles --forceExit"
|
|
36
52
|
},
|
|
37
53
|
"dependencies": {
|
|
38
54
|
"braintree": "3.36.0"
|
|
39
55
|
},
|
|
40
56
|
"devDependencies": {
|
|
41
|
-
"@medusajs/admin-sdk": "2.
|
|
42
|
-
"@medusajs/cli": "2.
|
|
43
|
-
"@medusajs/framework": "2.
|
|
44
|
-
"@medusajs/icons": "2.
|
|
45
|
-
"@medusajs/
|
|
46
|
-
"@
|
|
47
|
-
"@
|
|
48
|
-
"@swc/core": "^1.7.28",
|
|
49
|
-
"@swc/jest": "^0.2.39",
|
|
57
|
+
"@medusajs/admin-sdk": "2.16.0",
|
|
58
|
+
"@medusajs/cli": "2.16.0",
|
|
59
|
+
"@medusajs/framework": "2.16.0",
|
|
60
|
+
"@medusajs/icons": "2.16.0",
|
|
61
|
+
"@medusajs/ui": "4.1.16",
|
|
62
|
+
"@swc/core": "1.15.33",
|
|
63
|
+
"@swc/jest": "0.2.39",
|
|
50
64
|
"@types/braintree": "3.4.4",
|
|
51
|
-
"@types/jest": "
|
|
52
|
-
"@types/node": "
|
|
53
|
-
"@types/react": "
|
|
54
|
-
"@types/react-dom": "
|
|
55
|
-
"jest": "
|
|
56
|
-
"prop-types": "
|
|
57
|
-
"react": "
|
|
58
|
-
"react-dom": "
|
|
59
|
-
"ts-node": "
|
|
60
|
-
"typescript": "
|
|
61
|
-
"vite": "
|
|
62
|
-
"yalc": "
|
|
65
|
+
"@types/jest": "30.0.0",
|
|
66
|
+
"@types/node": "20.0.0",
|
|
67
|
+
"@types/react": "18.3.2",
|
|
68
|
+
"@types/react-dom": "18.2.25",
|
|
69
|
+
"jest": "29.7.0",
|
|
70
|
+
"prop-types": "15.8.1",
|
|
71
|
+
"react": "18.3.1",
|
|
72
|
+
"react-dom": "18.3.1",
|
|
73
|
+
"ts-node": "10.9.2",
|
|
74
|
+
"typescript": "6.0.3",
|
|
75
|
+
"vite": "8.0.8",
|
|
76
|
+
"yalc": "1.0.0-pre.53"
|
|
63
77
|
},
|
|
64
78
|
"peerDependencies": {
|
|
65
|
-
"@medusajs/
|
|
66
|
-
"@medusajs/
|
|
67
|
-
"@medusajs/
|
|
68
|
-
"@medusajs/icons": "2.13.6",
|
|
69
|
-
"@medusajs/medusa": "2.13.6",
|
|
70
|
-
"@medusajs/test-utils": "2.13.6",
|
|
71
|
-
"@medusajs/ui": "4.0.25"
|
|
79
|
+
"@medusajs/framework": "2.16.0",
|
|
80
|
+
"@medusajs/js-sdk": "2.16.0",
|
|
81
|
+
"@medusajs/medusa": "2.16.0"
|
|
72
82
|
},
|
|
73
83
|
"engines": {
|
|
74
84
|
"node": ">=20"
|
|
75
85
|
},
|
|
76
|
-
"packageManager": "yarn@4.13.0+sha512.5c20ba010c99815433e5c8453112165e673f1c7948d8d2b267f4b5e52097538658388ebc9f9580656d9b75c5cc996f990f611f99304a2197d4c56d21eea370e7"
|
|
77
|
-
|
|
86
|
+
"packageManager": "yarn@4.13.0+sha512.5c20ba010c99815433e5c8453112165e673f1c7948d8d2b267f4b5e52097538658388ebc9f9580656d9b75c5cc996f990f611f99304a2197d4c56d21eea370e7",
|
|
87
|
+
"gitHead": "e09c71de0e01897fa9441b40b67315b5a7b6d5bf"
|
|
88
|
+
}
|