@paykit-sdk/paypal 1.0.6 → 1.0.7
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 +31 -8
- package/dist/controllers/subscription.d.mts +1 -1
- package/dist/controllers/subscription.d.ts +1 -1
- package/dist/controllers/subscription.js +50 -13
- package/dist/controllers/subscription.mjs +50 -13
- package/dist/controllers/webhook.js +11 -3
- package/dist/controllers/webhook.mjs +11 -3
- package/dist/index.d.mts +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +397 -4321
- package/dist/index.mjs +398 -4322
- package/dist/paypal-provider.d.mts +9 -14
- package/dist/paypal-provider.d.ts +9 -14
- package/dist/paypal-provider.js +394 -4319
- package/dist/paypal-provider.mjs +395 -4320
- package/dist/schema.js +7 -2
- package/dist/schema.mjs +7 -2
- package/dist/types.d.mts +77 -1
- package/dist/types.d.ts +77 -1
- package/dist/utils/mapper.d.mts +33 -15
- package/dist/utils/mapper.d.ts +33 -15
- package/dist/utils/mapper.js +63 -46
- package/dist/utils/mapper.mjs +54 -37
- package/package.json +8 -9
package/README.md
CHANGED
|
@@ -35,11 +35,15 @@ export async function POST(
|
|
|
35
35
|
) {
|
|
36
36
|
try {
|
|
37
37
|
// Construct the endpoint path with full type safety
|
|
38
|
-
const endpoint = ('/' +
|
|
38
|
+
const endpoint = ('/' +
|
|
39
|
+
params.endpoint.join('/')) as EndpointPath;
|
|
39
40
|
const handler = endpoints[endpoint];
|
|
40
41
|
|
|
41
42
|
if (!handler) {
|
|
42
|
-
return NextResponse.json(
|
|
43
|
+
return NextResponse.json(
|
|
44
|
+
{ message: 'Endpoint not found' },
|
|
45
|
+
{ status: 404 },
|
|
46
|
+
);
|
|
43
47
|
}
|
|
44
48
|
|
|
45
49
|
// Parse request body
|
|
@@ -52,7 +56,12 @@ export async function POST(
|
|
|
52
56
|
} catch (error) {
|
|
53
57
|
console.error('PayKit API Error:', error);
|
|
54
58
|
return NextResponse.json(
|
|
55
|
-
{
|
|
59
|
+
{
|
|
60
|
+
message:
|
|
61
|
+
error instanceof Error
|
|
62
|
+
? error.message
|
|
63
|
+
: 'Internal server error',
|
|
64
|
+
},
|
|
56
65
|
{ status: 500 },
|
|
57
66
|
);
|
|
58
67
|
}
|
|
@@ -69,7 +78,10 @@ export async function POST(request: NextRequest) {
|
|
|
69
78
|
const webhookSecret = process.env.PAYPAL_WEBHOOK_ID;
|
|
70
79
|
|
|
71
80
|
if (!webhookSecret) {
|
|
72
|
-
return NextResponse.json(
|
|
81
|
+
return NextResponse.json(
|
|
82
|
+
{ error: 'Webhook secret not configured' },
|
|
83
|
+
{ status: 500 },
|
|
84
|
+
);
|
|
73
85
|
}
|
|
74
86
|
|
|
75
87
|
const webhook = paykit.webhooks
|
|
@@ -121,7 +133,9 @@ app.post(
|
|
|
121
133
|
const webhookSecret = process.env.PAYPAL_WEBHOOK_ID;
|
|
122
134
|
|
|
123
135
|
if (!webhookSecret) {
|
|
124
|
-
return res
|
|
136
|
+
return res
|
|
137
|
+
.status(500)
|
|
138
|
+
.json({ error: 'Webhook secret not configured' });
|
|
125
139
|
}
|
|
126
140
|
|
|
127
141
|
const webhook = paykit.webhooks
|
|
@@ -149,7 +163,10 @@ app.post(
|
|
|
149
163
|
} catch (error) {
|
|
150
164
|
console.error('Webhook error:', error);
|
|
151
165
|
res.status(500).json({
|
|
152
|
-
message:
|
|
166
|
+
message:
|
|
167
|
+
error instanceof Error
|
|
168
|
+
? error.message
|
|
169
|
+
: 'Webhook processing failed',
|
|
153
170
|
});
|
|
154
171
|
}
|
|
155
172
|
},
|
|
@@ -160,7 +177,10 @@ app.use(express.json());
|
|
|
160
177
|
|
|
161
178
|
app.post('/api/paykit/*', async (req, res) => {
|
|
162
179
|
try {
|
|
163
|
-
const endpoint = req.path.replace(
|
|
180
|
+
const endpoint = req.path.replace(
|
|
181
|
+
'/api/paykit',
|
|
182
|
+
'',
|
|
183
|
+
) as EndpointPath;
|
|
164
184
|
const handler = endpoints[endpoint];
|
|
165
185
|
|
|
166
186
|
if (!handler) {
|
|
@@ -173,7 +193,10 @@ app.post('/api/paykit/*', async (req, res) => {
|
|
|
173
193
|
res.json({ result });
|
|
174
194
|
} catch (error) {
|
|
175
195
|
res.status(500).json({
|
|
176
|
-
message:
|
|
196
|
+
message:
|
|
197
|
+
error instanceof Error
|
|
198
|
+
? error.message
|
|
199
|
+
: 'Internal server error',
|
|
177
200
|
});
|
|
178
201
|
}
|
|
179
202
|
});
|
|
@@ -21,7 +21,7 @@ declare class SubscriptionsController extends BaseController {
|
|
|
21
21
|
};
|
|
22
22
|
subscriptionId: string;
|
|
23
23
|
}): Promise<void>;
|
|
24
|
-
retrieveSubscription({ subscriptionId }: {
|
|
24
|
+
retrieveSubscription({ subscriptionId, }: {
|
|
25
25
|
subscriptionId: string;
|
|
26
26
|
}): Promise<ApiResponse<Subscription>>;
|
|
27
27
|
cancelSubscription({ subscriptionId, reason, }: {
|
|
@@ -21,7 +21,7 @@ declare class SubscriptionsController extends BaseController {
|
|
|
21
21
|
};
|
|
22
22
|
subscriptionId: string;
|
|
23
23
|
}): Promise<void>;
|
|
24
|
-
retrieveSubscription({ subscriptionId }: {
|
|
24
|
+
retrieveSubscription({ subscriptionId, }: {
|
|
25
25
|
subscriptionId: string;
|
|
26
26
|
}): Promise<ApiResponse<Subscription>>;
|
|
27
27
|
cancelSubscription({ subscriptionId, reason, }: {
|
|
@@ -30,7 +30,9 @@ var createSubscriptionApticSchema = schema.object({
|
|
|
30
30
|
],
|
|
31
31
|
phone: [
|
|
32
32
|
"phone",
|
|
33
|
-
schema.lazy(
|
|
33
|
+
schema.lazy(
|
|
34
|
+
() => schema.object({ phone_number: ["phone_number", schema.string()] })
|
|
35
|
+
)
|
|
34
36
|
]
|
|
35
37
|
})
|
|
36
38
|
)
|
|
@@ -83,7 +85,10 @@ var VerifyWebhookStatus = /* @__PURE__ */ ((VerifyWebhookStatus2) => {
|
|
|
83
85
|
return VerifyWebhookStatus2;
|
|
84
86
|
})(VerifyWebhookStatus || {});
|
|
85
87
|
schema.object({
|
|
86
|
-
verification_status: [
|
|
88
|
+
verification_status: [
|
|
89
|
+
"verification_status",
|
|
90
|
+
schema.stringEnum(VerifyWebhookStatus)
|
|
91
|
+
]
|
|
87
92
|
});
|
|
88
93
|
|
|
89
94
|
// src/controllers/subscription.ts
|
|
@@ -111,10 +116,18 @@ var SubscriptionsController = class extends baseController.BaseController {
|
|
|
111
116
|
async createSubscription({
|
|
112
117
|
body
|
|
113
118
|
}) {
|
|
114
|
-
const req = this.createRequest(
|
|
115
|
-
|
|
119
|
+
const req = this.createRequest(
|
|
120
|
+
"POST",
|
|
121
|
+
"/v1/billing/subscriptions"
|
|
122
|
+
);
|
|
123
|
+
const mapped = req.prepareArgs({
|
|
124
|
+
body: [body, createSubscriptionApticSchema]
|
|
125
|
+
});
|
|
116
126
|
req.header("Content-Type", "application/json");
|
|
117
|
-
req.header(
|
|
127
|
+
req.header(
|
|
128
|
+
"PayPal-Request-Id",
|
|
129
|
+
Math.random().toString(36).substring(2, 15)
|
|
130
|
+
);
|
|
118
131
|
req.json(mapped.body);
|
|
119
132
|
this.catchAllErrors(req);
|
|
120
133
|
req.authenticate([{ oauth2: true }]);
|
|
@@ -135,14 +148,25 @@ var SubscriptionsController = class extends baseController.BaseController {
|
|
|
135
148
|
body: [body, resumeSubscriptionApticSchemaRequest]
|
|
136
149
|
});
|
|
137
150
|
req.header("Content-Type", "application/json");
|
|
138
|
-
req.header(
|
|
151
|
+
req.header(
|
|
152
|
+
"PayPal-Request-Id",
|
|
153
|
+
Math.random().toString(36).substring(2, 15)
|
|
154
|
+
);
|
|
139
155
|
req.json(mapped.body);
|
|
140
156
|
this.catchAllErrors(req);
|
|
141
157
|
req.authenticate([{ oauth2: true }]);
|
|
142
158
|
}
|
|
143
|
-
async retrieveSubscription({
|
|
144
|
-
|
|
145
|
-
|
|
159
|
+
async retrieveSubscription({
|
|
160
|
+
subscriptionId
|
|
161
|
+
}) {
|
|
162
|
+
const req = this.createRequest(
|
|
163
|
+
"GET",
|
|
164
|
+
`v1/billing/subscriptions/${subscriptionId}`
|
|
165
|
+
);
|
|
166
|
+
req.header(
|
|
167
|
+
"PayPal-Request-Id",
|
|
168
|
+
Math.random().toString(36).substring(2, 15)
|
|
169
|
+
);
|
|
146
170
|
this.catchAllErrors(req);
|
|
147
171
|
req.authenticate([{ oauth2: true }]);
|
|
148
172
|
return req.callAsJson(subscriptionApticSchema);
|
|
@@ -158,7 +182,10 @@ var SubscriptionsController = class extends baseController.BaseController {
|
|
|
158
182
|
const mapped = req.prepareArgs({
|
|
159
183
|
body: [reason, resumeSubscriptionApticSchemaRequest]
|
|
160
184
|
});
|
|
161
|
-
req.header(
|
|
185
|
+
req.header(
|
|
186
|
+
"PayPal-Request-Id",
|
|
187
|
+
Math.random().toString(36).substring(2, 15)
|
|
188
|
+
);
|
|
162
189
|
req.json(mapped.body);
|
|
163
190
|
this.catchAllErrors(req);
|
|
164
191
|
req.authenticate([{ oauth2: true }]);
|
|
@@ -168,9 +195,19 @@ var SubscriptionsController = class extends baseController.BaseController {
|
|
|
168
195
|
subscriptionId,
|
|
169
196
|
metadata
|
|
170
197
|
}) {
|
|
171
|
-
const req = this.createRequest(
|
|
172
|
-
|
|
173
|
-
|
|
198
|
+
const req = this.createRequest(
|
|
199
|
+
"PATCH",
|
|
200
|
+
`v1/billing/subscriptions/${subscriptionId}`
|
|
201
|
+
);
|
|
202
|
+
req.header(
|
|
203
|
+
"PayPal-Request-Id",
|
|
204
|
+
Math.random().toString(36).substring(2, 15)
|
|
205
|
+
);
|
|
206
|
+
req.json({
|
|
207
|
+
op: "replace",
|
|
208
|
+
path: "/custom_id",
|
|
209
|
+
value: JSON.stringify(metadata)
|
|
210
|
+
});
|
|
174
211
|
this.catchAllErrors(req);
|
|
175
212
|
req.authenticate([{ oauth2: true }]);
|
|
176
213
|
}
|
|
@@ -28,7 +28,9 @@ var createSubscriptionApticSchema = object({
|
|
|
28
28
|
],
|
|
29
29
|
phone: [
|
|
30
30
|
"phone",
|
|
31
|
-
lazy(
|
|
31
|
+
lazy(
|
|
32
|
+
() => object({ phone_number: ["phone_number", string()] })
|
|
33
|
+
)
|
|
32
34
|
]
|
|
33
35
|
})
|
|
34
36
|
)
|
|
@@ -81,7 +83,10 @@ var VerifyWebhookStatus = /* @__PURE__ */ ((VerifyWebhookStatus2) => {
|
|
|
81
83
|
return VerifyWebhookStatus2;
|
|
82
84
|
})(VerifyWebhookStatus || {});
|
|
83
85
|
object({
|
|
84
|
-
verification_status: [
|
|
86
|
+
verification_status: [
|
|
87
|
+
"verification_status",
|
|
88
|
+
stringEnum(VerifyWebhookStatus)
|
|
89
|
+
]
|
|
85
90
|
});
|
|
86
91
|
|
|
87
92
|
// src/controllers/subscription.ts
|
|
@@ -109,10 +114,18 @@ var SubscriptionsController = class extends BaseController {
|
|
|
109
114
|
async createSubscription({
|
|
110
115
|
body
|
|
111
116
|
}) {
|
|
112
|
-
const req = this.createRequest(
|
|
113
|
-
|
|
117
|
+
const req = this.createRequest(
|
|
118
|
+
"POST",
|
|
119
|
+
"/v1/billing/subscriptions"
|
|
120
|
+
);
|
|
121
|
+
const mapped = req.prepareArgs({
|
|
122
|
+
body: [body, createSubscriptionApticSchema]
|
|
123
|
+
});
|
|
114
124
|
req.header("Content-Type", "application/json");
|
|
115
|
-
req.header(
|
|
125
|
+
req.header(
|
|
126
|
+
"PayPal-Request-Id",
|
|
127
|
+
Math.random().toString(36).substring(2, 15)
|
|
128
|
+
);
|
|
116
129
|
req.json(mapped.body);
|
|
117
130
|
this.catchAllErrors(req);
|
|
118
131
|
req.authenticate([{ oauth2: true }]);
|
|
@@ -133,14 +146,25 @@ var SubscriptionsController = class extends BaseController {
|
|
|
133
146
|
body: [body, resumeSubscriptionApticSchemaRequest]
|
|
134
147
|
});
|
|
135
148
|
req.header("Content-Type", "application/json");
|
|
136
|
-
req.header(
|
|
149
|
+
req.header(
|
|
150
|
+
"PayPal-Request-Id",
|
|
151
|
+
Math.random().toString(36).substring(2, 15)
|
|
152
|
+
);
|
|
137
153
|
req.json(mapped.body);
|
|
138
154
|
this.catchAllErrors(req);
|
|
139
155
|
req.authenticate([{ oauth2: true }]);
|
|
140
156
|
}
|
|
141
|
-
async retrieveSubscription({
|
|
142
|
-
|
|
143
|
-
|
|
157
|
+
async retrieveSubscription({
|
|
158
|
+
subscriptionId
|
|
159
|
+
}) {
|
|
160
|
+
const req = this.createRequest(
|
|
161
|
+
"GET",
|
|
162
|
+
`v1/billing/subscriptions/${subscriptionId}`
|
|
163
|
+
);
|
|
164
|
+
req.header(
|
|
165
|
+
"PayPal-Request-Id",
|
|
166
|
+
Math.random().toString(36).substring(2, 15)
|
|
167
|
+
);
|
|
144
168
|
this.catchAllErrors(req);
|
|
145
169
|
req.authenticate([{ oauth2: true }]);
|
|
146
170
|
return req.callAsJson(subscriptionApticSchema);
|
|
@@ -156,7 +180,10 @@ var SubscriptionsController = class extends BaseController {
|
|
|
156
180
|
const mapped = req.prepareArgs({
|
|
157
181
|
body: [reason, resumeSubscriptionApticSchemaRequest]
|
|
158
182
|
});
|
|
159
|
-
req.header(
|
|
183
|
+
req.header(
|
|
184
|
+
"PayPal-Request-Id",
|
|
185
|
+
Math.random().toString(36).substring(2, 15)
|
|
186
|
+
);
|
|
160
187
|
req.json(mapped.body);
|
|
161
188
|
this.catchAllErrors(req);
|
|
162
189
|
req.authenticate([{ oauth2: true }]);
|
|
@@ -166,9 +193,19 @@ var SubscriptionsController = class extends BaseController {
|
|
|
166
193
|
subscriptionId,
|
|
167
194
|
metadata
|
|
168
195
|
}) {
|
|
169
|
-
const req = this.createRequest(
|
|
170
|
-
|
|
171
|
-
|
|
196
|
+
const req = this.createRequest(
|
|
197
|
+
"PATCH",
|
|
198
|
+
`v1/billing/subscriptions/${subscriptionId}`
|
|
199
|
+
);
|
|
200
|
+
req.header(
|
|
201
|
+
"PayPal-Request-Id",
|
|
202
|
+
Math.random().toString(36).substring(2, 15)
|
|
203
|
+
);
|
|
204
|
+
req.json({
|
|
205
|
+
op: "replace",
|
|
206
|
+
path: "/custom_id",
|
|
207
|
+
value: JSON.stringify(metadata)
|
|
208
|
+
});
|
|
172
209
|
this.catchAllErrors(req);
|
|
173
210
|
req.authenticate([{ oauth2: true }]);
|
|
174
211
|
}
|
|
@@ -30,7 +30,9 @@ schema.object({
|
|
|
30
30
|
],
|
|
31
31
|
phone: [
|
|
32
32
|
"phone",
|
|
33
|
-
schema.lazy(
|
|
33
|
+
schema.lazy(
|
|
34
|
+
() => schema.object({ phone_number: ["phone_number", schema.string()] })
|
|
35
|
+
)
|
|
34
36
|
]
|
|
35
37
|
})
|
|
36
38
|
)
|
|
@@ -83,13 +85,19 @@ var VerifyWebhookStatus = /* @__PURE__ */ ((VerifyWebhookStatus2) => {
|
|
|
83
85
|
return VerifyWebhookStatus2;
|
|
84
86
|
})(VerifyWebhookStatus || {});
|
|
85
87
|
var verifyWebhookSchema = schema.object({
|
|
86
|
-
verification_status: [
|
|
88
|
+
verification_status: [
|
|
89
|
+
"verification_status",
|
|
90
|
+
schema.stringEnum(VerifyWebhookStatus)
|
|
91
|
+
]
|
|
87
92
|
});
|
|
88
93
|
|
|
89
94
|
// src/controllers/webhook.ts
|
|
90
95
|
var WebhookController = class extends baseController.BaseController {
|
|
91
96
|
async verifyWebhook(body) {
|
|
92
|
-
const req = this.createRequest(
|
|
97
|
+
const req = this.createRequest(
|
|
98
|
+
"POST",
|
|
99
|
+
"/v1/notifications/verify-webhook-signature"
|
|
100
|
+
);
|
|
93
101
|
req.header("Content-Type", "application/json");
|
|
94
102
|
req.throwOn(
|
|
95
103
|
400,
|
|
@@ -28,7 +28,9 @@ object({
|
|
|
28
28
|
],
|
|
29
29
|
phone: [
|
|
30
30
|
"phone",
|
|
31
|
-
lazy(
|
|
31
|
+
lazy(
|
|
32
|
+
() => object({ phone_number: ["phone_number", string()] })
|
|
33
|
+
)
|
|
32
34
|
]
|
|
33
35
|
})
|
|
34
36
|
)
|
|
@@ -81,13 +83,19 @@ var VerifyWebhookStatus = /* @__PURE__ */ ((VerifyWebhookStatus2) => {
|
|
|
81
83
|
return VerifyWebhookStatus2;
|
|
82
84
|
})(VerifyWebhookStatus || {});
|
|
83
85
|
var verifyWebhookSchema = object({
|
|
84
|
-
verification_status: [
|
|
86
|
+
verification_status: [
|
|
87
|
+
"verification_status",
|
|
88
|
+
stringEnum(VerifyWebhookStatus)
|
|
89
|
+
]
|
|
85
90
|
});
|
|
86
91
|
|
|
87
92
|
// src/controllers/webhook.ts
|
|
88
93
|
var WebhookController = class extends BaseController {
|
|
89
94
|
async verifyWebhook(body) {
|
|
90
|
-
const req = this.createRequest(
|
|
95
|
+
const req = this.createRequest(
|
|
96
|
+
"POST",
|
|
97
|
+
"/v1/notifications/verify-webhook-signature"
|
|
98
|
+
);
|
|
91
99
|
req.header("Content-Type", "application/json");
|
|
92
100
|
req.throwOn(
|
|
93
101
|
400,
|
package/dist/index.d.mts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { PayPalProvider, PayPalOptions } from './paypal-provider.mjs';
|
|
2
2
|
import '@paykit-sdk/core';
|
|
3
|
+
import '@paypal/paypal-server-sdk';
|
|
4
|
+
import './types.mjs';
|
|
3
5
|
|
|
4
6
|
declare const paypal: () => PayPalProvider;
|
|
5
7
|
declare const createPayPal: (config: PayPalOptions) => PayPalProvider;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { PayPalProvider, PayPalOptions } from './paypal-provider.js';
|
|
2
2
|
import '@paykit-sdk/core';
|
|
3
|
+
import '@paypal/paypal-server-sdk';
|
|
4
|
+
import './types.js';
|
|
3
5
|
|
|
4
6
|
declare const paypal: () => PayPalProvider;
|
|
5
7
|
declare const createPayPal: (config: PayPalOptions) => PayPalProvider;
|