@pickn/sdk 1.0.0

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/README.md ADDED
@@ -0,0 +1,37 @@
1
+ # @pickn/sdk
2
+
3
+ SDK officiel pour l'API Pickn - Paiements et livraisons
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @pickn/sdk
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ ```javascript
14
+ const PicknSDK = require('@pickn/sdk');
15
+
16
+ const pickn = new PicknSDK('pk_test_...');
17
+
18
+ // Créer un paiement
19
+ const payment = await pickn.payments.create({
20
+ amount: 5000, // en centimes (50.00€)
21
+ currency: 'EUR',
22
+ customer_id: 'cus_abc123',
23
+ description: 'Achat produit'
24
+ });
25
+
26
+ console.log(payment.status); // 'succeeded'
27
+ ```
28
+
29
+ ## Documentation
30
+
31
+ Consultez la documentation complète sur [pickn.fr/developers](https://pickn.fr/developers)
32
+
33
+ ## Support
34
+
35
+ - Documentation : https://pickn.fr/developers
36
+ - API Reference : https://pickn.fr/api-docs
37
+ - Support : dev@pickn.fr
@@ -0,0 +1,103 @@
1
+ export interface PicknConfig {
2
+ apiKey: string;
3
+ environment?: 'test' | 'production';
4
+ baseURL?: string;
5
+ }
6
+ export interface PaymentData {
7
+ amount: number;
8
+ currency: string;
9
+ customer_id?: string;
10
+ description?: string;
11
+ metadata?: Record<string, any>;
12
+ }
13
+ export interface DeliveryData {
14
+ order_id: string;
15
+ pickup_address: string;
16
+ delivery_address: string;
17
+ package_details: {
18
+ weight_kg: number;
19
+ size: string;
20
+ description: string;
21
+ };
22
+ recipient: {
23
+ name: string;
24
+ phone: string;
25
+ email?: string;
26
+ };
27
+ delivery_type: 'standard' | 'express';
28
+ }
29
+ declare class PicknSDK {
30
+ private client;
31
+ private apiKey;
32
+ constructor(apiKey?: string);
33
+ config({ apiKey, environment, baseURL }: PicknConfig): void;
34
+ get payments(): {
35
+ create: (data: PaymentData) => Promise<any>;
36
+ retrieve: (paymentId: string) => Promise<any>;
37
+ };
38
+ get deliveries(): {
39
+ create: (data: DeliveryData) => Promise<any>;
40
+ retrieve: (deliveryId: string) => Promise<any>;
41
+ cancel: (deliveryId: string, reason: {
42
+ reason: string;
43
+ }) => Promise<any>;
44
+ };
45
+ get refunds(): {
46
+ create: (data: {
47
+ payment_id: string;
48
+ amount: number;
49
+ reason: string;
50
+ }) => Promise<any>;
51
+ };
52
+ get webhooks(): {
53
+ verify: (body: string, signature: string, secret: string) => any;
54
+ };
55
+ get errors(): {
56
+ CardError: {
57
+ new (message: string): {
58
+ type: string;
59
+ name: string;
60
+ message: string;
61
+ stack?: string;
62
+ };
63
+ captureStackTrace(targetObject: object, constructorOpt?: Function): void;
64
+ prepareStackTrace(err: Error, stackTraces: NodeJS.CallSite[]): any;
65
+ stackTraceLimit: number;
66
+ };
67
+ InvalidRequestError: {
68
+ new (message: string): {
69
+ type: string;
70
+ name: string;
71
+ message: string;
72
+ stack?: string;
73
+ };
74
+ captureStackTrace(targetObject: object, constructorOpt?: Function): void;
75
+ prepareStackTrace(err: Error, stackTraces: NodeJS.CallSite[]): any;
76
+ stackTraceLimit: number;
77
+ };
78
+ AuthenticationError: {
79
+ new (message: string): {
80
+ type: string;
81
+ name: string;
82
+ message: string;
83
+ stack?: string;
84
+ };
85
+ captureStackTrace(targetObject: object, constructorOpt?: Function): void;
86
+ prepareStackTrace(err: Error, stackTraces: NodeJS.CallSite[]): any;
87
+ stackTraceLimit: number;
88
+ };
89
+ APIError: {
90
+ new (message: string): {
91
+ type: string;
92
+ name: string;
93
+ message: string;
94
+ stack?: string;
95
+ };
96
+ captureStackTrace(targetObject: object, constructorOpt?: Function): void;
97
+ prepareStackTrace(err: Error, stackTraces: NodeJS.CallSite[]): any;
98
+ stackTraceLimit: number;
99
+ };
100
+ };
101
+ }
102
+ export default PicknSDK;
103
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,GAAG,YAAY,CAAC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,SAAS,EAAE;QACT,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,aAAa,EAAE,UAAU,GAAG,SAAS,CAAC;CACvC;AAED,cAAM,QAAQ;IACZ,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAc;gBAEhB,MAAM,CAAC,EAAE,MAAM;IAoB3B,MAAM,CAAC,EAAE,MAAM,EAAE,WAAoB,EAAE,OAAO,EAAE,EAAE,WAAW;IAU7D,IAAI,QAAQ;uBAEa,WAAW;8BAKJ,MAAM;MAKrC;IAED,IAAI,UAAU;uBAEW,YAAY;+BAKJ,MAAM;6BAKR,MAAM,UAAU;YAAE,MAAM,EAAE,MAAM,CAAA;SAAE;MAKhE;IAED,IAAI,OAAO;uBAEc;YAAE,UAAU,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE;MAK9E;IAED,IAAI,QAAQ;uBAEO,MAAM,aAAa,MAAM,UAAU,MAAM;MAM3D;IAED,IAAI,MAAM;;0BAIiB,MAAM;;;;;;;;;;;0BAON,MAAM;;;;;;;;;;;0BAON,MAAM;;;;;;;;;;;0BAON,MAAM;;;;;;;;;;MAMhC;CACF;AAED,eAAe,QAAQ,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const axios_1 = __importDefault(require("axios"));
7
+ class PicknSDK {
8
+ constructor(apiKey) {
9
+ this.apiKey = '';
10
+ if (apiKey) {
11
+ this.apiKey = apiKey;
12
+ }
13
+ this.client = axios_1.default.create({
14
+ baseURL: 'https://api.pickn.fr/v1',
15
+ headers: {
16
+ 'Content-Type': 'application/json',
17
+ },
18
+ });
19
+ this.client.interceptors.request.use((config) => {
20
+ if (this.apiKey) {
21
+ config.headers.Authorization = `Bearer ${this.apiKey}`;
22
+ }
23
+ return config;
24
+ });
25
+ }
26
+ config({ apiKey, environment = 'test', baseURL }) {
27
+ this.apiKey = apiKey;
28
+ if (baseURL) {
29
+ this.client.defaults.baseURL = baseURL;
30
+ }
31
+ else if (environment === 'test') {
32
+ this.client.defaults.baseURL = 'https://api-test.pickn.fr/v1';
33
+ }
34
+ }
35
+ get payments() {
36
+ return {
37
+ create: async (data) => {
38
+ const response = await this.client.post('/payments', data);
39
+ return response.data;
40
+ },
41
+ retrieve: async (paymentId) => {
42
+ const response = await this.client.get(`/payments/${paymentId}`);
43
+ return response.data;
44
+ },
45
+ };
46
+ }
47
+ get deliveries() {
48
+ return {
49
+ create: async (data) => {
50
+ const response = await this.client.post('/deliveries', data);
51
+ return response.data;
52
+ },
53
+ retrieve: async (deliveryId) => {
54
+ const response = await this.client.get(`/deliveries/${deliveryId}`);
55
+ return response.data;
56
+ },
57
+ cancel: async (deliveryId, reason) => {
58
+ const response = await this.client.post(`/deliveries/${deliveryId}/cancel`, reason);
59
+ return response.data;
60
+ },
61
+ };
62
+ }
63
+ get refunds() {
64
+ return {
65
+ create: async (data) => {
66
+ const response = await this.client.post('/refunds', data);
67
+ return response.data;
68
+ },
69
+ };
70
+ }
71
+ get webhooks() {
72
+ return {
73
+ verify: (body, signature, secret) => {
74
+ // Implémentation de la vérification de signature
75
+ // Pour l'instant, retourne les données parsées
76
+ return JSON.parse(body);
77
+ },
78
+ };
79
+ }
80
+ get errors() {
81
+ return {
82
+ CardError: class extends Error {
83
+ constructor(message) {
84
+ super(message);
85
+ this.type = 'card_error';
86
+ this.name = 'CardError';
87
+ }
88
+ },
89
+ InvalidRequestError: class extends Error {
90
+ constructor(message) {
91
+ super(message);
92
+ this.type = 'invalid_request_error';
93
+ this.name = 'InvalidRequestError';
94
+ }
95
+ },
96
+ AuthenticationError: class extends Error {
97
+ constructor(message) {
98
+ super(message);
99
+ this.type = 'authentication_error';
100
+ this.name = 'AuthenticationError';
101
+ }
102
+ },
103
+ APIError: class extends Error {
104
+ constructor(message) {
105
+ super(message);
106
+ this.type = 'api_error';
107
+ this.name = 'APIError';
108
+ }
109
+ },
110
+ };
111
+ }
112
+ }
113
+ exports.default = PicknSDK;
114
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "@pickn/sdk",
3
+ "version": "1.0.0",
4
+ "description": "SDK officiel pour l'API Pickn - Paiements et livraisons",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "scripts": {
8
+ "build": "tsc",
9
+ "test": "jest",
10
+ "prepublishOnly": "npm run build",
11
+ "publish:npm": "npm publish --access public"
12
+ },
13
+ "keywords": [
14
+ "pickn",
15
+ "payment",
16
+ "delivery",
17
+ "api",
18
+ "sdk",
19
+ "picknpay"
20
+ ],
21
+ "author": "Pickn Technologies <dev@pickn.fr>",
22
+ "license": "MIT",
23
+ "repository": {
24
+ "type": "git",
25
+ "url": "https://github.com/pickn/sdk"
26
+ },
27
+ "bugs": {
28
+ "url": "https://github.com/pickn/sdk/issues"
29
+ },
30
+ "homepage": "https://pickn.fr/developers",
31
+ "engines": {
32
+ "node": ">=14.0.0"
33
+ },
34
+ "files": [
35
+ "dist/**/*",
36
+ "README.md",
37
+ "LICENSE"
38
+ ],
39
+ "dependencies": {
40
+ "axios": "^1.6.0"
41
+ },
42
+ "devDependencies": {
43
+ "@types/node": "^20.0.0",
44
+ "jest": "^29.0.0",
45
+ "typescript": "^5.0.0"
46
+ }
47
+ }