@orchesty/connector-paypal 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.
Files changed (55) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/LICENSE +190 -0
  3. package/coverage/clover.xml +119 -0
  4. package/coverage/coverage-final.json +6 -0
  5. package/coverage/lcov-report/base.css +224 -0
  6. package/coverage/lcov-report/block-navigation.js +87 -0
  7. package/coverage/lcov-report/favicon.png +0 -0
  8. package/coverage/lcov-report/index.html +146 -0
  9. package/coverage/lcov-report/prettify.css +1 -0
  10. package/coverage/lcov-report/prettify.js +2 -0
  11. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  12. package/coverage/lcov-report/sorter.js +210 -0
  13. package/coverage/lcov-report/src/Connector/PaypalCreateOrderConnector.ts.html +229 -0
  14. package/coverage/lcov-report/src/Connector/PaypalCreatePayoutConnector.ts.html +253 -0
  15. package/coverage/lcov-report/src/Connector/PaypalCreateProductConnector.ts.html +247 -0
  16. package/coverage/lcov-report/src/Connector/index.html +146 -0
  17. package/coverage/lcov-report/src/PaypalApplication.ts.html +397 -0
  18. package/coverage/lcov-report/src/index.html +116 -0
  19. package/coverage/lcov-report/test/dataProvider.ts.html +205 -0
  20. package/coverage/lcov-report/test/index.html +116 -0
  21. package/coverage/lcov.info +170 -0
  22. package/dist/Connector/PaypalCreateOrderConnector.d.ts +25 -0
  23. package/dist/Connector/PaypalCreateOrderConnector.js +23 -0
  24. package/dist/Connector/PaypalCreatePayoutConnector.d.ts +33 -0
  25. package/dist/Connector/PaypalCreatePayoutConnector.js +23 -0
  26. package/dist/Connector/PaypalCreateProductConnector.d.ts +31 -0
  27. package/dist/Connector/PaypalCreateProductConnector.js +23 -0
  28. package/dist/PaypalApplication.d.ts +21 -0
  29. package/dist/PaypalApplication.js +105 -0
  30. package/dist/package.json +22 -0
  31. package/jest.config.js +13 -0
  32. package/package.json +22 -0
  33. package/src/Connector/PaypalCreateOrderConnector.ts +48 -0
  34. package/src/Connector/PaypalCreatePayoutConnector.ts +56 -0
  35. package/src/Connector/PaypalCreateProductConnector.ts +54 -0
  36. package/src/Connector/__tests__/Data/PaypalCreateOrderConnector/input.json +16 -0
  37. package/src/Connector/__tests__/Data/PaypalCreateOrderConnector/mock.json +12 -0
  38. package/src/Connector/__tests__/Data/PaypalCreateOrderConnector/mock1.json +30 -0
  39. package/src/Connector/__tests__/Data/PaypalCreateOrderConnector/output.json +31 -0
  40. package/src/Connector/__tests__/Data/PaypalCreatePayoutConnector/input.json +43 -0
  41. package/src/Connector/__tests__/Data/PaypalCreatePayoutConnector/mock.json +12 -0
  42. package/src/Connector/__tests__/Data/PaypalCreatePayoutConnector/mock1.json +14 -0
  43. package/src/Connector/__tests__/Data/PaypalCreatePayoutConnector/output.json +15 -0
  44. package/src/Connector/__tests__/Data/PaypalCreateProductConnector/input.json +13 -0
  45. package/src/Connector/__tests__/Data/PaypalCreateProductConnector/mock.json +12 -0
  46. package/src/Connector/__tests__/Data/PaypalCreateProductConnector/mock1.json +27 -0
  47. package/src/Connector/__tests__/Data/PaypalCreateProductConnector/output.json +28 -0
  48. package/src/Connector/__tests__/PaypalCreateOrderConnector.ts +17 -0
  49. package/src/Connector/__tests__/PaypalCreatePayoutConnector.ts +17 -0
  50. package/src/Connector/__tests__/PaypalCreateProductConnector.ts +17 -0
  51. package/src/PaypalApplication.ts +104 -0
  52. package/test/dataProvider.ts +40 -0
  53. package/tsconfig.json +8 -0
  54. package/tsconfig.prod.json +13 -0
  55. package/tsconfig.prod.tsbuildinfo +1 -0
@@ -0,0 +1,105 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.NAME = exports.BASE_URL = void 0;
40
+ const CoreFormsEnum_1 = __importStar(require("@orchesty/nodejs-sdk/dist/lib/Application/Base/CoreFormsEnum"));
41
+ const Field_1 = __importDefault(require("@orchesty/nodejs-sdk/dist/lib/Application/Model/Form/Field"));
42
+ const FieldType_1 = __importDefault(require("@orchesty/nodejs-sdk/dist/lib/Application/Model/Form/FieldType"));
43
+ const Form_1 = __importDefault(require("@orchesty/nodejs-sdk/dist/lib/Application/Model/Form/Form"));
44
+ const FormStack_1 = __importDefault(require("@orchesty/nodejs-sdk/dist/lib/Application/Model/Form/FormStack"));
45
+ const ABasicApplication_1 = require("@orchesty/nodejs-sdk/dist/lib/Authorization/Type/Basic/ABasicApplication");
46
+ const IOAuth2Application_1 = require("@orchesty/nodejs-sdk/dist/lib/Authorization/Type/OAuth2/IOAuth2Application");
47
+ const RequestDto_1 = __importDefault(require("@orchesty/nodejs-sdk/dist/lib/Transport/Curl/RequestDto"));
48
+ const HttpMethods_1 = require("@orchesty/nodejs-sdk/dist/lib/Transport/HttpMethods");
49
+ const Base64_1 = require("@orchesty/nodejs-sdk/dist/lib/Utils/Base64");
50
+ const Headers_1 = require("@orchesty/nodejs-sdk/dist/lib/Utils/Headers");
51
+ exports.BASE_URL = 'https://api-m.paypal.com';
52
+ exports.NAME = 'paypal';
53
+ class PaypalApplication extends ABasicApplication_1.ABasicApplication {
54
+ sender;
55
+ constructor(sender) {
56
+ super();
57
+ this.sender = sender;
58
+ }
59
+ getName() {
60
+ return exports.NAME;
61
+ }
62
+ getPublicName() {
63
+ return 'Paypal';
64
+ }
65
+ getDescription() {
66
+ return 'One of the most used payment methods for secure online payments and also a wallet';
67
+ }
68
+ getLogo() {
69
+ return 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI1LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IlZyc3R2YV8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIKCSB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMTAwIDEwMDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsOiMwMDJDOEE7fQoJLnN0MXtmaWxsOiMwMDlCRTE7fQoJLnN0MntmaWxsOiMwMDFGNkI7fQo8L3N0eWxlPgo8Zz4KCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik04MywzMC43TDI5LjQsODkuMkg5LjhjLTEuNCwwLTIuNS0xLjQtMi4yLTIuN2wxMy4xLTgzYzAuMy0xLjksMS45LTMuMywzLjgtMy4zaDMzLjMKCQlDODAuOCwxLDg3LjEsMTIuNyw4MywzMC43TDgzLDMwLjd6Ii8+Cgk8cGF0aCBjbGFzcz0ic3QxIiBkPSJNODMuOSwyNS4zYzguMiw0LjQsMTAuMSwxMi42LDcuNCwyMy41Qzg3LjcsNjQuOSw3Ny4xLDcxLjcsNjEuNSw3MmwtNC40LDAuM2MtMS42LDAtMi43LDEuMS0zLDIuN2wtMy42LDIxLjYKCQljLTAuMywxLjktMS45LDMuMy0zLjgsMy4zSDMwLjRjLTEuNCwwLTIuNS0xLjQtMi4yLTIuN2w2LTM5LjFDMzQuNSw1Ni43LDgzLjksMjUuMyw4My45LDI1LjN6Ii8+Cgk8cGF0aCBjbGFzcz0ic3QyIiBkPSJNMzMuOSw2MGw1LjUtMzQuN2MwLjQtMS43LDEuOC0yLjksMy42LTNoMjYuMmM2LjMsMCwxMC45LDEuMSwxNC43LDNjLTEuNCwxMi03LjEsMzEuNC0zNSwzMmgtMTIKCQlDMzUuNSw1Ny4yLDM0LjIsNTguMywzMy45LDYweiIvPgo8L2c+Cjwvc3ZnPgo=';
70
+ }
71
+ getFormStack() {
72
+ const form = new Form_1.default(CoreFormsEnum_1.default.AUTHORIZATION_FORM, (0, CoreFormsEnum_1.getFormName)(CoreFormsEnum_1.default.AUTHORIZATION_FORM))
73
+ .addField(new Field_1.default(FieldType_1.default.TEXT, IOAuth2Application_1.CLIENT_ID, 'Client Id', null, true))
74
+ .addField(new Field_1.default(FieldType_1.default.TEXT, IOAuth2Application_1.CLIENT_SECRET, 'Client Secret', null, true));
75
+ return new FormStack_1.default().addForm(form);
76
+ }
77
+ isAuthorized(applicationInstall) {
78
+ const authorizationForm = applicationInstall.getSettings()[CoreFormsEnum_1.default.AUTHORIZATION_FORM];
79
+ return authorizationForm?.[IOAuth2Application_1.CLIENT_ID] && authorizationForm?.[IOAuth2Application_1.CLIENT_SECRET];
80
+ }
81
+ async getRequestDto(dto, applicationInstall, method, _url, data) {
82
+ const url = `${exports.BASE_URL}/${_url}`;
83
+ const request = new RequestDto_1.default(url, method, dto);
84
+ request.setHeaders({
85
+ [Headers_1.CommonHeaders.CONTENT_TYPE]: Headers_1.JSON_TYPE,
86
+ [Headers_1.CommonHeaders.ACCEPT]: Headers_1.JSON_TYPE,
87
+ [Headers_1.CommonHeaders.AUTHORIZATION]: `Bearer ${await this.getAuthorizationCode(applicationInstall, dto)}`,
88
+ });
89
+ if (data) {
90
+ request.setJsonBody(data);
91
+ }
92
+ return request;
93
+ }
94
+ async getAuthorizationCode(appInstall, dto) {
95
+ const clientId = appInstall.getSettings()[CoreFormsEnum_1.default.AUTHORIZATION_FORM][IOAuth2Application_1.CLIENT_ID];
96
+ const clientSecret = appInstall.getSettings()[CoreFormsEnum_1.default.AUTHORIZATION_FORM][IOAuth2Application_1.CLIENT_SECRET];
97
+ const req = new RequestDto_1.default(`${exports.BASE_URL}/v1/oauth2/token`, HttpMethods_1.HttpMethods.POST, dto, 'grant_type=client_credentials', {
98
+ [Headers_1.CommonHeaders.AUTHORIZATION]: (0, Base64_1.encode)(`${clientId}:${clientSecret}`),
99
+ [Headers_1.CommonHeaders.CONTENT_TYPE]: 'application/x-www-form-urlencoded',
100
+ });
101
+ const resp = await this.sender.send(req);
102
+ return resp.getJsonBody().access_token;
103
+ }
104
+ }
105
+ exports.default = PaypalApplication;
@@ -0,0 +1,22 @@
1
+ {
2
+ "name": "@orchesty/connector-paypal",
3
+ "description": "",
4
+ "version": "0.0.0",
5
+ "license": "Apache-2.0",
6
+ "url": "https://github.com/Orchesty/orchesty-nodejs-connectors",
7
+ "repository": "https://github.com/Orchesty/orchesty-nodejs-connectors",
8
+ "scripts": {
9
+ "build": "rm -rf dist && rm -rf tsconfig.prod.tsbuildinfo && tsc -d -p tsconfig.prod.json && cp package.json ./dist/package.json",
10
+ "test": "jest --coverage --forceExit --passWithNoTests",
11
+ "lint": "eslint src test --fix",
12
+ "lint-ci": "eslint src test"
13
+ },
14
+ "keywords": [],
15
+ "author": "info@hanaboso.com",
16
+ "dependencies": {
17
+ "@orchesty/nodejs-sdk": "^4.3.6"
18
+ },
19
+ "engines": {
20
+ "node": ">=24"
21
+ }
22
+ }
package/jest.config.js ADDED
@@ -0,0 +1,13 @@
1
+ const baseConfig = require('../../jest.config.js');
2
+
3
+ module.exports = {
4
+ ...baseConfig,
5
+ roots: ["<rootDir>/src"],
6
+ setupFiles: ["<rootDir>/../../.jest/testEnvs.ts"],
7
+ setupFilesAfterEnv: ["<rootDir>/../../.jest/testLifecycle.ts"],
8
+ globalSetup: "<rootDir>/../../.jest/globalSetup.ts",
9
+ moduleNameMapper: {
10
+ "^@orchesty/nodejs-connectors/test/(.*)$": "<rootDir>/../../test/$1",
11
+ "^@orchesty/nodejs-connectors/lib/(.*)$": "<rootDir>/../../lib/$1",
12
+ },
13
+ }
package/package.json ADDED
@@ -0,0 +1,22 @@
1
+ {
2
+ "name": "@orchesty/connector-paypal",
3
+ "description": "",
4
+ "version": "1.0.0",
5
+ "license": "Apache-2.0",
6
+ "url": "https://github.com/Orchesty/orchesty-nodejs-connectors",
7
+ "repository": "https://github.com/Orchesty/orchesty-nodejs-connectors",
8
+ "keywords": [],
9
+ "author": "info@hanaboso.com",
10
+ "dependencies": {
11
+ "@orchesty/nodejs-sdk": "^4.3.6"
12
+ },
13
+ "engines": {
14
+ "node": ">=24"
15
+ },
16
+ "scripts": {
17
+ "build": "rm -rf dist && rm -rf tsconfig.prod.tsbuildinfo && tsc -d -p tsconfig.prod.json && cp package.json ./dist/package.json",
18
+ "test": "jest --coverage --forceExit --passWithNoTests",
19
+ "lint": "eslint src test --fix",
20
+ "lint-ci": "eslint src test"
21
+ }
22
+ }
@@ -0,0 +1,48 @@
1
+ import AConnector from '@orchesty/nodejs-sdk/dist/lib/Connector/AConnector';
2
+ import { HttpMethods } from '@orchesty/nodejs-sdk/dist/lib/Transport/HttpMethods';
3
+ import ProcessDto from '@orchesty/nodejs-sdk/dist/lib/Utils/ProcessDto';
4
+
5
+ export const NAME = 'paypal-create-order-connector';
6
+
7
+ export default class PaypalCreateOrderConnector extends AConnector {
8
+
9
+ public getName(): string {
10
+ return NAME;
11
+ }
12
+
13
+ public async processAction(dto: ProcessDto<IInput>): Promise<ProcessDto<IOutput>> {
14
+ const body = dto.getJsonData();
15
+
16
+ const appInstall = await this.getApplicationInstallFromProcess(dto);
17
+ const url = 'v2/checkout/orders';
18
+ const req = await this.getApplication().getRequestDto(dto, appInstall, HttpMethods.POST, url, body);
19
+ const resp = await this.getSender().send<IOutput>(req, [201]);
20
+
21
+ return dto.setNewJsonData(resp.getJsonBody());
22
+ }
23
+
24
+ }
25
+
26
+ /* eslint-disable @typescript-eslint/naming-convention */
27
+
28
+ export interface IInput {
29
+ intent: string;
30
+ purchase_units: {
31
+ amount: {
32
+ currency_code: string;
33
+ value: string;
34
+ };
35
+ }[];
36
+ }
37
+
38
+ export interface IOutput {
39
+ id: string;
40
+ status: string;
41
+ links: {
42
+ href: string;
43
+ rel: string;
44
+ method: string;
45
+ }[];
46
+ }
47
+
48
+ /* eslint-enable @typescript-eslint/naming-convention */
@@ -0,0 +1,56 @@
1
+ import AConnector from '@orchesty/nodejs-sdk/dist/lib/Connector/AConnector';
2
+ import { HttpMethods } from '@orchesty/nodejs-sdk/dist/lib/Transport/HttpMethods';
3
+ import ProcessDto from '@orchesty/nodejs-sdk/dist/lib/Utils/ProcessDto';
4
+
5
+ export const NAME = 'paypal-create-payout-connector';
6
+
7
+ export default class PaypalCreatePayoutConnector extends AConnector {
8
+
9
+ public getName(): string {
10
+ return NAME;
11
+ }
12
+
13
+ public async processAction(dto: ProcessDto<IInput>): Promise<ProcessDto<IOutput>> {
14
+ const body = dto.getJsonData();
15
+
16
+ const appInstall = await this.getApplicationInstallFromProcess(dto);
17
+ const url = 'v1/payments/payouts';
18
+ const req = await this.getApplication().getRequestDto(dto, appInstall, HttpMethods.POST, url, body);
19
+ const resp = await this.getSender().send<IOutput>(req, [201]);
20
+
21
+ return dto.setNewJsonData(resp.getJsonBody());
22
+ }
23
+
24
+ }
25
+
26
+ /* eslint-disable @typescript-eslint/naming-convention */
27
+
28
+ export interface IInput {
29
+ sender_batch_header: {
30
+ email_subject: string;
31
+ email_message: string;
32
+ };
33
+ items: {
34
+ recipient_type: string;
35
+ amount: {
36
+ value: string;
37
+ currency: string;
38
+ };
39
+ note: string;
40
+ sender_item_id: string;
41
+ receiver: string;
42
+ }[];
43
+ }
44
+
45
+ export interface IOutput {
46
+ batch_header: {
47
+ sender_batch_header: {
48
+ email_subject: string;
49
+ email_message: string;
50
+ };
51
+ payout_batch_id: string;
52
+ batch_status: string;
53
+ };
54
+ }
55
+
56
+ /* eslint-enable @typescript-eslint/naming-convention */
@@ -0,0 +1,54 @@
1
+ import AConnector from '@orchesty/nodejs-sdk/dist/lib/Connector/AConnector';
2
+ import { HttpMethods } from '@orchesty/nodejs-sdk/dist/lib/Transport/HttpMethods';
3
+ import ProcessDto from '@orchesty/nodejs-sdk/dist/lib/Utils/ProcessDto';
4
+
5
+ export const NAME = 'paypal-create-product-connector';
6
+
7
+ export default class PaypalCreateProductConnector extends AConnector {
8
+
9
+ public getName(): string {
10
+ return NAME;
11
+ }
12
+
13
+ public async processAction(dto: ProcessDto<IInput>): Promise<ProcessDto<IOutput>> {
14
+ const body = dto.getJsonData();
15
+
16
+ const appInstall = await this.getApplicationInstallFromProcess(dto);
17
+ const url = 'v1/catalogs/products';
18
+ const req = await this.getApplication().getRequestDto(dto, appInstall, HttpMethods.POST, url, body);
19
+ const resp = await this.getSender().send<IOutput>(req, [201]);
20
+
21
+ return dto.setNewJsonData(resp.getJsonBody());
22
+ }
23
+
24
+ }
25
+
26
+ /* eslint-disable @typescript-eslint/naming-convention */
27
+
28
+ export interface IInput {
29
+ name: string;
30
+ description: string;
31
+ type: string;
32
+ category: string;
33
+ image_url: string;
34
+ home_url: string;
35
+ }
36
+
37
+ export interface IOutput {
38
+ id: string;
39
+ name: string;
40
+ description: string;
41
+ type: string;
42
+ category: string;
43
+ image_url: string;
44
+ home_url: string;
45
+ create_time: Date;
46
+ update_time: Date;
47
+ links: {
48
+ href: string;
49
+ rel: string;
50
+ method: string;
51
+ }[];
52
+ }
53
+
54
+ /* eslint-enable @typescript-eslint/naming-convention */
@@ -0,0 +1,16 @@
1
+ {
2
+ "headers": {
3
+ "user": "TestUser"
4
+ },
5
+ "data": {
6
+ "intent": "CAPTURE",
7
+ "purchase_units": [
8
+ {
9
+ "amount": {
10
+ "currency_code": "USD",
11
+ "value": "100.00"
12
+ }
13
+ }
14
+ ]
15
+ }
16
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "http": "POST https://api-m.paypal.com/v1/oauth2/token",
3
+ "code": 200,
4
+ "body": {
5
+ "scope": "https://uri.paypal.com/services/invoicing https://uri.paypal.com/services/disputes/read-buyer https://uri.paypal.com/services/payments/realtimepayment https://uri.paypal.com/services/disputes/update-seller https://uri.paypal.com/services/payments/payment/authcapture openid https://uri.paypal.com/services/disputes/read-seller https://uri.paypal.com/services/payments/refund https://api-m.paypal.com/v1/vault/credit-card https://api-m.paypal.com/v1/payments/.* https://uri.paypal.com/payments/payouts https://api-m.paypal.com/v1/vault/credit-card/.* https://uri.paypal.com/services/subscriptions https://uri.paypal.com/services/applications/webhooks",
6
+ "access_token": "A21AAFEpH4PsADK7qSS7pSRsgzfENtu-Q1ysgEDVDESseMHBYXVJYE8ovjj68elIDy8nF26AwPhfXTIeWAZHSLIsQkSYz9ifg",
7
+ "token_type": "Bearer",
8
+ "app_id": "APP-80W284485P519543T",
9
+ "expires_in": 31668,
10
+ "nonce": "2020-04-03T15:35:36ZaYZlGvEkV4yVSz8g6bAKFoGSEzuy3CQcz3ljhibkOHg"
11
+ }
12
+ }
@@ -0,0 +1,30 @@
1
+ {
2
+ "http": "POST https://api-m.paypal.com/v2/checkout/orders",
3
+ "code": 201,
4
+ "body": {
5
+ "id": "5O190127TN364715T",
6
+ "status": "CREATED",
7
+ "links": [
8
+ {
9
+ "href": "https://api-m.paypal.com/v2/checkout/orders/5O190127TN364715T",
10
+ "rel": "self",
11
+ "method": "GET"
12
+ },
13
+ {
14
+ "href": "https://www.paypal.com/checkoutnow?token=5O190127TN364715T",
15
+ "rel": "approve",
16
+ "method": "GET"
17
+ },
18
+ {
19
+ "href": "https://api-m.paypal.com/v2/checkout/orders/5O190127TN364715T",
20
+ "rel": "update",
21
+ "method": "PATCH"
22
+ },
23
+ {
24
+ "href": "https://api-m.paypal.com/v2/checkout/orders/5O190127TN364715T/capture",
25
+ "rel": "capture",
26
+ "method": "POST"
27
+ }
28
+ ]
29
+ }
30
+ }
@@ -0,0 +1,31 @@
1
+ {
2
+ "headers": {
3
+ "user": "TestUser"
4
+ },
5
+ "data": {
6
+ "id": "5O190127TN364715T",
7
+ "status": "CREATED",
8
+ "links": [
9
+ {
10
+ "href": "https://api-m.paypal.com/v2/checkout/orders/5O190127TN364715T",
11
+ "rel": "self",
12
+ "method": "GET"
13
+ },
14
+ {
15
+ "href": "https://www.paypal.com/checkoutnow?token=5O190127TN364715T",
16
+ "rel": "approve",
17
+ "method": "GET"
18
+ },
19
+ {
20
+ "href": "https://api-m.paypal.com/v2/checkout/orders/5O190127TN364715T",
21
+ "rel": "update",
22
+ "method": "PATCH"
23
+ },
24
+ {
25
+ "href": "https://api-m.paypal.com/v2/checkout/orders/5O190127TN364715T/capture",
26
+ "rel": "capture",
27
+ "method": "POST"
28
+ }
29
+ ]
30
+ }
31
+ }
@@ -0,0 +1,43 @@
1
+ {
2
+ "headers": {
3
+ "user": "TestUser"
4
+ },
5
+ "data": {
6
+ "sender_batch_header": {
7
+ "email_subject": "You have a payout!",
8
+ "email_message": "You have received a payout! Thanks for using our service!"
9
+ },
10
+ "items": [
11
+ {
12
+ "recipient_type": "EMAIL",
13
+ "amount": {
14
+ "value": "9.87",
15
+ "currency": "USD"
16
+ },
17
+ "note": "Thanks for your patronage!",
18
+ "sender_item_id": "201403140001",
19
+ "receiver": "receiver@example.com"
20
+ },
21
+ {
22
+ "recipient_type": "PHONE",
23
+ "amount": {
24
+ "value": "112.34",
25
+ "currency": "USD"
26
+ },
27
+ "note": "Thanks for your support!",
28
+ "sender_item_id": "201403140002",
29
+ "receiver": "91-734-234-1234"
30
+ },
31
+ {
32
+ "recipient_type": "PAYPAL_ID",
33
+ "amount": {
34
+ "value": "5.32",
35
+ "currency": "USD"
36
+ },
37
+ "note": "Thanks for your patronage!",
38
+ "sender_item_id": "201403140003",
39
+ "receiver": "G83JXTJ5EHCQ2"
40
+ }
41
+ ]
42
+ }
43
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "http": "POST https://api-m.paypal.com/v1/oauth2/token",
3
+ "code": 200,
4
+ "body": {
5
+ "scope": "https://uri.paypal.com/services/invoicing https://uri.paypal.com/services/disputes/read-buyer https://uri.paypal.com/services/payments/realtimepayment https://uri.paypal.com/services/disputes/update-seller https://uri.paypal.com/services/payments/payment/authcapture openid https://uri.paypal.com/services/disputes/read-seller https://uri.paypal.com/services/payments/refund https://api-m.paypal.com/v1/vault/credit-card https://api-m.paypal.com/v1/payments/.* https://uri.paypal.com/payments/payouts https://api-m.paypal.com/v1/vault/credit-card/.* https://uri.paypal.com/services/subscriptions https://uri.paypal.com/services/applications/webhooks",
6
+ "access_token": "A21AAFEpH4PsADK7qSS7pSRsgzfENtu-Q1ysgEDVDESseMHBYXVJYE8ovjj68elIDy8nF26AwPhfXTIeWAZHSLIsQkSYz9ifg",
7
+ "token_type": "Bearer",
8
+ "app_id": "APP-80W284485P519543T",
9
+ "expires_in": 31668,
10
+ "nonce": "2020-04-03T15:35:36ZaYZlGvEkV4yVSz8g6bAKFoGSEzuy3CQcz3ljhibkOHg"
11
+ }
12
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "http": "POST https://api-m.paypal.com/v1/payments/payouts",
3
+ "code": 201,
4
+ "body": {
5
+ "batch_header": {
6
+ "sender_batch_header": {
7
+ "email_subject": "You have a payout!",
8
+ "email_message": "You have received a payout! Thanks for using our service!"
9
+ },
10
+ "payout_batch_id": "5UXD2E8A7EBQJ",
11
+ "batch_status": "PENDING"
12
+ }
13
+ }
14
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "headers": {
3
+ "user": "TestUser"
4
+ },
5
+ "data": {
6
+ "batch_header": {
7
+ "sender_batch_header": {
8
+ "email_subject": "You have a payout!",
9
+ "email_message": "You have received a payout! Thanks for using our service!"
10
+ },
11
+ "payout_batch_id": "5UXD2E8A7EBQJ",
12
+ "batch_status": "PENDING"
13
+ }
14
+ }
15
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "headers": {
3
+ "user": "TestUser"
4
+ },
5
+ "data": {
6
+ "name": "Video Streaming Service",
7
+ "description": "Video streaming service",
8
+ "type": "SERVICE",
9
+ "category": "SOFTWARE",
10
+ "image_url": "https://example.com/streaming.jpg",
11
+ "home_url": "https://example.com/home"
12
+ }
13
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "http": "POST https://api-m.paypal.com/v1/oauth2/token",
3
+ "code": 200,
4
+ "body": {
5
+ "scope": "https://uri.paypal.com/services/invoicing https://uri.paypal.com/services/disputes/read-buyer https://uri.paypal.com/services/payments/realtimepayment https://uri.paypal.com/services/disputes/update-seller https://uri.paypal.com/services/payments/payment/authcapture openid https://uri.paypal.com/services/disputes/read-seller https://uri.paypal.com/services/payments/refund https://api-m.paypal.com/v1/vault/credit-card https://api-m.paypal.com/v1/payments/.* https://uri.paypal.com/payments/payouts https://api-m.paypal.com/v1/vault/credit-card/.* https://uri.paypal.com/services/subscriptions https://uri.paypal.com/services/applications/webhooks",
6
+ "access_token": "A21AAFEpH4PsADK7qSS7pSRsgzfENtu-Q1ysgEDVDESseMHBYXVJYE8ovjj68elIDy8nF26AwPhfXTIeWAZHSLIsQkSYz9ifg",
7
+ "token_type": "Bearer",
8
+ "app_id": "APP-80W284485P519543T",
9
+ "expires_in": 31668,
10
+ "nonce": "2020-04-03T15:35:36ZaYZlGvEkV4yVSz8g6bAKFoGSEzuy3CQcz3ljhibkOHg"
11
+ }
12
+ }
@@ -0,0 +1,27 @@
1
+ {
2
+ "http": "POST https://api-m.paypal.com/v1/catalogs/products",
3
+ "code": 201,
4
+ "body": {
5
+ "id": "PROD-XYAB12ABSB7868434",
6
+ "name": "Video Streaming Service",
7
+ "description": "Video streaming service",
8
+ "type": "SERVICE",
9
+ "category": "SOFTWARE",
10
+ "image_url": "https://example.com/streaming.jpg",
11
+ "home_url": "https://example.com/home",
12
+ "create_time": "2020-01-10T21:20:49Z",
13
+ "update_time": "2020-01-10T21:20:49Z",
14
+ "links": [
15
+ {
16
+ "href": "https://api-m.paypal.com/v1/catalogs/products/72255d4849af8ed6e0df1173",
17
+ "rel": "self",
18
+ "method": "GET"
19
+ },
20
+ {
21
+ "href": "https://api-m.paypal.com/v1/catalogs/products/72255d4849af8ed6e0df1173",
22
+ "rel": "edit",
23
+ "method": "PATCH"
24
+ }
25
+ ]
26
+ }
27
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "headers": {
3
+ "user": "TestUser"
4
+ },
5
+ "data": {
6
+ "id": "PROD-XYAB12ABSB7868434",
7
+ "name": "Video Streaming Service",
8
+ "description": "Video streaming service",
9
+ "type": "SERVICE",
10
+ "category": "SOFTWARE",
11
+ "image_url": "https://example.com/streaming.jpg",
12
+ "home_url": "https://example.com/home",
13
+ "create_time": "2020-01-10T21:20:49Z",
14
+ "update_time": "2020-01-10T21:20:49Z",
15
+ "links": [
16
+ {
17
+ "href": "https://api-m.paypal.com/v1/catalogs/products/72255d4849af8ed6e0df1173",
18
+ "rel": "self",
19
+ "method": "GET"
20
+ },
21
+ {
22
+ "href": "https://api-m.paypal.com/v1/catalogs/products/72255d4849af8ed6e0df1173",
23
+ "rel": "edit",
24
+ "method": "PATCH"
25
+ }
26
+ ]
27
+ }
28
+ }
@@ -0,0 +1,17 @@
1
+ import { container } from '@orchesty/nodejs-connectors/test/TestAbstract';
2
+ import NodeTester from '@orchesty/nodejs-sdk/dist/test/Testers/NodeTester';
3
+ import init from '../../../test/dataProvider';
4
+ import { NAME as PAYPAL_CREATE_ORDER_CONNECTOR } from '../PaypalCreateOrderConnector';
5
+
6
+ let tester: NodeTester;
7
+
8
+ describe('Tests for PaypalCreateOrderConnector', () => {
9
+ beforeEach(() => {
10
+ tester = new NodeTester(container, __filename, true);
11
+ init();
12
+ });
13
+
14
+ it('process - ok', async () => {
15
+ await tester.testConnector(PAYPAL_CREATE_ORDER_CONNECTOR);
16
+ });
17
+ });
@@ -0,0 +1,17 @@
1
+ import { container } from '@orchesty/nodejs-connectors/test/TestAbstract';
2
+ import NodeTester from '@orchesty/nodejs-sdk/dist/test/Testers/NodeTester';
3
+ import init from '../../../test/dataProvider';
4
+ import { NAME as PAYPAL_CREATE_PAYOUT_CONNECTOR } from '../PaypalCreatePayoutConnector';
5
+
6
+ let tester: NodeTester;
7
+
8
+ describe('Tests for PaypalCreatePayoutConnector', () => {
9
+ beforeEach(() => {
10
+ tester = new NodeTester(container, __filename, true);
11
+ init();
12
+ });
13
+
14
+ it('process - ok', async () => {
15
+ await tester.testConnector(PAYPAL_CREATE_PAYOUT_CONNECTOR);
16
+ });
17
+ });
@@ -0,0 +1,17 @@
1
+ import { container } from '@orchesty/nodejs-connectors/test/TestAbstract';
2
+ import NodeTester from '@orchesty/nodejs-sdk/dist/test/Testers/NodeTester';
3
+ import init from '../../../test/dataProvider';
4
+ import { NAME as PAYPAL_CREATE_PRODUCT_CONNECTOR } from '../PaypalCreateProductConnector';
5
+
6
+ let tester: NodeTester;
7
+
8
+ describe('Tests for PaypalCreateProductConnector', () => {
9
+ beforeEach(() => {
10
+ tester = new NodeTester(container, __filename, true);
11
+ init();
12
+ });
13
+
14
+ it('process - ok', async () => {
15
+ await tester.testConnector(PAYPAL_CREATE_PRODUCT_CONNECTOR);
16
+ });
17
+ });