@capacitor-community/stripe-terminal 0.0.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/CapacitorCommunityStripeTerminal.podspec +18 -0
- package/README.md +263 -0
- package/android/build.gradle +70 -0
- package/android/src/main/AndroidManifest.xml +2 -0
- package/android/src/main/java/com/getcapacitor/community/stripe/terminal/StripeTerminal.java +227 -0
- package/android/src/main/java/com/getcapacitor/community/stripe/terminal/StripeTerminalPlugin.java +93 -0
- package/android/src/main/java/com/getcapacitor/community/stripe/terminal/TerminalEvent.kt +10 -0
- package/android/src/main/java/com/getcapacitor/community/stripe/terminal/TokenProvider.java +67 -0
- package/android/src/main/java/com/getcapacitor/community/stripe/terminal/helper/MetaData.java +28 -0
- package/android/src/main/java/com/getcapacitor/community/stripe/terminal/models/Executor.java +36 -0
- package/android/src/main/res/.gitkeep +0 -0
- package/dist/docs.json +337 -0
- package/dist/esm/definitions.d.ts +40 -0
- package/dist/esm/definitions.js +10 -0
- package/dist/esm/definitions.js.map +1 -0
- package/dist/esm/events.enum.d.ts +9 -0
- package/dist/esm/events.enum.js +10 -0
- package/dist/esm/events.enum.js.map +1 -0
- package/dist/esm/index.d.ts +4 -0
- package/dist/esm/index.js +7 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/web.d.ts +20 -0
- package/dist/esm/web.js +26 -0
- package/dist/esm/web.js.map +1 -0
- package/dist/plugin.cjs.js +60 -0
- package/dist/plugin.cjs.js.map +1 -0
- package/dist/plugin.js +63 -0
- package/dist/plugin.js.map +1 -0
- package/ios/Plugin/Info.plist +24 -0
- package/ios/Plugin/StripeTerminal.swift +155 -0
- package/ios/Plugin/StripeTerminalPlugin.h +10 -0
- package/ios/Plugin/StripeTerminalPlugin.m +11 -0
- package/ios/Plugin/StripeTerminalPlugin.swift +35 -0
- package/ios/Plugin/TerminalEvents.swift +8 -0
- package/package.json +78 -0
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var core = require('@capacitor/core');
|
|
6
|
+
|
|
7
|
+
exports.TerminalEventsEnum = void 0;
|
|
8
|
+
(function (TerminalEventsEnum) {
|
|
9
|
+
TerminalEventsEnum["Loaded"] = "terminalLoaded";
|
|
10
|
+
TerminalEventsEnum["DiscoveredReaders"] = "terminalDiscoveredReaders";
|
|
11
|
+
TerminalEventsEnum["ConnectedReader"] = "terminalConnectedReader";
|
|
12
|
+
TerminalEventsEnum["Completed"] = "terminalCompleted";
|
|
13
|
+
TerminalEventsEnum["Canceled"] = "terminalCanceled";
|
|
14
|
+
TerminalEventsEnum["Failed"] = "terminalFailed";
|
|
15
|
+
})(exports.TerminalEventsEnum || (exports.TerminalEventsEnum = {}));
|
|
16
|
+
|
|
17
|
+
exports.TerminalConnectType = void 0;
|
|
18
|
+
(function (TerminalConnectType) {
|
|
19
|
+
TerminalConnectType["Simulated"] = "simulated";
|
|
20
|
+
TerminalConnectType["Internet"] = "internet";
|
|
21
|
+
TerminalConnectType["Bluetooth"] = "bluetooth";
|
|
22
|
+
TerminalConnectType["Usb"] = "usb";
|
|
23
|
+
TerminalConnectType["TapToPay"] = "tap-to-pay";
|
|
24
|
+
})(exports.TerminalConnectType || (exports.TerminalConnectType = {}));
|
|
25
|
+
|
|
26
|
+
const StripeTerminal = core.registerPlugin('StripeTerminal', {
|
|
27
|
+
web: () => Promise.resolve().then(function () { return web; }).then(m => new m.StripeTerminalWeb()),
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
class StripeTerminalWeb extends core.WebPlugin {
|
|
31
|
+
async initialize(options) {
|
|
32
|
+
console.log('initialize', options);
|
|
33
|
+
this.notifyListeners(exports.TerminalEventsEnum.Loaded, null);
|
|
34
|
+
}
|
|
35
|
+
async discoverReaders(options) {
|
|
36
|
+
console.log('discoverReaders', options);
|
|
37
|
+
this.notifyListeners(exports.TerminalEventsEnum.DiscoveredReaders, {
|
|
38
|
+
readers: [],
|
|
39
|
+
});
|
|
40
|
+
return {
|
|
41
|
+
readers: [],
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
async connectReader(options) {
|
|
45
|
+
console.log('connectReader', options);
|
|
46
|
+
this.notifyListeners(exports.TerminalEventsEnum.ConnectedReader, null);
|
|
47
|
+
}
|
|
48
|
+
async collect(options) {
|
|
49
|
+
console.log('collect', options);
|
|
50
|
+
this.notifyListeners(exports.TerminalEventsEnum.Completed, null);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
var web = /*#__PURE__*/Object.freeze({
|
|
55
|
+
__proto__: null,
|
|
56
|
+
StripeTerminalWeb: StripeTerminalWeb
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
exports.StripeTerminal = StripeTerminal;
|
|
60
|
+
//# sourceMappingURL=plugin.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.cjs.js","sources":["esm/events.enum.js","esm/definitions.js","esm/index.js","esm/web.js"],"sourcesContent":["export var TerminalEventsEnum;\n(function (TerminalEventsEnum) {\n TerminalEventsEnum[\"Loaded\"] = \"terminalLoaded\";\n TerminalEventsEnum[\"DiscoveredReaders\"] = \"terminalDiscoveredReaders\";\n TerminalEventsEnum[\"ConnectedReader\"] = \"terminalConnectedReader\";\n TerminalEventsEnum[\"Completed\"] = \"terminalCompleted\";\n TerminalEventsEnum[\"Canceled\"] = \"terminalCanceled\";\n TerminalEventsEnum[\"Failed\"] = \"terminalFailed\";\n})(TerminalEventsEnum || (TerminalEventsEnum = {}));\n//# sourceMappingURL=events.enum.js.map","export var TerminalConnectType;\n(function (TerminalConnectType) {\n TerminalConnectType[\"Simulated\"] = \"simulated\";\n TerminalConnectType[\"Internet\"] = \"internet\";\n TerminalConnectType[\"Bluetooth\"] = \"bluetooth\";\n TerminalConnectType[\"Usb\"] = \"usb\";\n TerminalConnectType[\"TapToPay\"] = \"tap-to-pay\";\n})(TerminalConnectType || (TerminalConnectType = {}));\nexport * from './events.enum';\n//# sourceMappingURL=definitions.js.map","import { registerPlugin } from '@capacitor/core';\nconst StripeTerminal = registerPlugin('StripeTerminal', {\n web: () => import('./web').then(m => new m.StripeTerminalWeb()),\n});\nexport * from './definitions';\nexport { StripeTerminal };\n//# sourceMappingURL=index.js.map","import { WebPlugin } from '@capacitor/core';\nimport { TerminalEventsEnum } from './events.enum';\nexport class StripeTerminalWeb extends WebPlugin {\n async initialize(options) {\n console.log('initialize', options);\n this.notifyListeners(TerminalEventsEnum.Loaded, null);\n }\n async discoverReaders(options) {\n console.log('discoverReaders', options);\n this.notifyListeners(TerminalEventsEnum.DiscoveredReaders, {\n readers: [],\n });\n return {\n readers: [],\n };\n }\n async connectReader(options) {\n console.log('connectReader', options);\n this.notifyListeners(TerminalEventsEnum.ConnectedReader, null);\n }\n async collect(options) {\n console.log('collect', options);\n this.notifyListeners(TerminalEventsEnum.Completed, null);\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["TerminalEventsEnum","TerminalConnectType","registerPlugin","WebPlugin"],"mappings":";;;;;;AAAWA,oCAAmB;AAC9B,CAAC,UAAU,kBAAkB,EAAE;AAC/B,IAAI,kBAAkB,CAAC,QAAQ,CAAC,GAAG,gBAAgB,CAAC;AACpD,IAAI,kBAAkB,CAAC,mBAAmB,CAAC,GAAG,2BAA2B,CAAC;AAC1E,IAAI,kBAAkB,CAAC,iBAAiB,CAAC,GAAG,yBAAyB,CAAC;AACtE,IAAI,kBAAkB,CAAC,WAAW,CAAC,GAAG,mBAAmB,CAAC;AAC1D,IAAI,kBAAkB,CAAC,UAAU,CAAC,GAAG,kBAAkB,CAAC;AACxD,IAAI,kBAAkB,CAAC,QAAQ,CAAC,GAAG,gBAAgB,CAAC;AACpD,CAAC,EAAEA,0BAAkB,KAAKA,0BAAkB,GAAG,EAAE,CAAC,CAAC;;ACRxCC,qCAAoB;AAC/B,CAAC,UAAU,mBAAmB,EAAE;AAChC,IAAI,mBAAmB,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC;AACnD,IAAI,mBAAmB,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC;AACjD,IAAI,mBAAmB,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC;AACnD,IAAI,mBAAmB,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AACvC,IAAI,mBAAmB,CAAC,UAAU,CAAC,GAAG,YAAY,CAAC;AACnD,CAAC,EAAEA,2BAAmB,KAAKA,2BAAmB,GAAG,EAAE,CAAC,CAAC;;ACNhD,MAAC,cAAc,GAAGC,mBAAc,CAAC,gBAAgB,EAAE;AACxD,IAAI,GAAG,EAAE,MAAM,mDAAe,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,iBAAiB,EAAE,CAAC;AACnE,CAAC;;ACDM,MAAM,iBAAiB,SAASC,cAAS,CAAC;AACjD,IAAI,MAAM,UAAU,CAAC,OAAO,EAAE;AAC9B,QAAQ,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;AAC3C,QAAQ,IAAI,CAAC,eAAe,CAACH,0BAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAC9D,KAAK;AACL,IAAI,MAAM,eAAe,CAAC,OAAO,EAAE;AACnC,QAAQ,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;AAChD,QAAQ,IAAI,CAAC,eAAe,CAACA,0BAAkB,CAAC,iBAAiB,EAAE;AACnE,YAAY,OAAO,EAAE,EAAE;AACvB,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO;AACf,YAAY,OAAO,EAAE,EAAE;AACvB,SAAS,CAAC;AACV,KAAK;AACL,IAAI,MAAM,aAAa,CAAC,OAAO,EAAE;AACjC,QAAQ,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;AAC9C,QAAQ,IAAI,CAAC,eAAe,CAACA,0BAAkB,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;AACvE,KAAK;AACL,IAAI,MAAM,OAAO,CAAC,OAAO,EAAE;AAC3B,QAAQ,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACxC,QAAQ,IAAI,CAAC,eAAe,CAACA,0BAAkB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AACjE,KAAK;AACL;;;;;;;;;"}
|
package/dist/plugin.js
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
var capacitorStripeTerminal = (function (exports, core) {
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
exports.TerminalEventsEnum = void 0;
|
|
5
|
+
(function (TerminalEventsEnum) {
|
|
6
|
+
TerminalEventsEnum["Loaded"] = "terminalLoaded";
|
|
7
|
+
TerminalEventsEnum["DiscoveredReaders"] = "terminalDiscoveredReaders";
|
|
8
|
+
TerminalEventsEnum["ConnectedReader"] = "terminalConnectedReader";
|
|
9
|
+
TerminalEventsEnum["Completed"] = "terminalCompleted";
|
|
10
|
+
TerminalEventsEnum["Canceled"] = "terminalCanceled";
|
|
11
|
+
TerminalEventsEnum["Failed"] = "terminalFailed";
|
|
12
|
+
})(exports.TerminalEventsEnum || (exports.TerminalEventsEnum = {}));
|
|
13
|
+
|
|
14
|
+
exports.TerminalConnectType = void 0;
|
|
15
|
+
(function (TerminalConnectType) {
|
|
16
|
+
TerminalConnectType["Simulated"] = "simulated";
|
|
17
|
+
TerminalConnectType["Internet"] = "internet";
|
|
18
|
+
TerminalConnectType["Bluetooth"] = "bluetooth";
|
|
19
|
+
TerminalConnectType["Usb"] = "usb";
|
|
20
|
+
TerminalConnectType["TapToPay"] = "tap-to-pay";
|
|
21
|
+
})(exports.TerminalConnectType || (exports.TerminalConnectType = {}));
|
|
22
|
+
|
|
23
|
+
const StripeTerminal = core.registerPlugin('StripeTerminal', {
|
|
24
|
+
web: () => Promise.resolve().then(function () { return web; }).then(m => new m.StripeTerminalWeb()),
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
class StripeTerminalWeb extends core.WebPlugin {
|
|
28
|
+
async initialize(options) {
|
|
29
|
+
console.log('initialize', options);
|
|
30
|
+
this.notifyListeners(exports.TerminalEventsEnum.Loaded, null);
|
|
31
|
+
}
|
|
32
|
+
async discoverReaders(options) {
|
|
33
|
+
console.log('discoverReaders', options);
|
|
34
|
+
this.notifyListeners(exports.TerminalEventsEnum.DiscoveredReaders, {
|
|
35
|
+
readers: [],
|
|
36
|
+
});
|
|
37
|
+
return {
|
|
38
|
+
readers: [],
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
async connectReader(options) {
|
|
42
|
+
console.log('connectReader', options);
|
|
43
|
+
this.notifyListeners(exports.TerminalEventsEnum.ConnectedReader, null);
|
|
44
|
+
}
|
|
45
|
+
async collect(options) {
|
|
46
|
+
console.log('collect', options);
|
|
47
|
+
this.notifyListeners(exports.TerminalEventsEnum.Completed, null);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
var web = /*#__PURE__*/Object.freeze({
|
|
52
|
+
__proto__: null,
|
|
53
|
+
StripeTerminalWeb: StripeTerminalWeb
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
exports.StripeTerminal = StripeTerminal;
|
|
57
|
+
|
|
58
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
59
|
+
|
|
60
|
+
return exports;
|
|
61
|
+
|
|
62
|
+
})({}, capacitorExports);
|
|
63
|
+
//# sourceMappingURL=plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.js","sources":["esm/events.enum.js","esm/definitions.js","esm/index.js","esm/web.js"],"sourcesContent":["export var TerminalEventsEnum;\n(function (TerminalEventsEnum) {\n TerminalEventsEnum[\"Loaded\"] = \"terminalLoaded\";\n TerminalEventsEnum[\"DiscoveredReaders\"] = \"terminalDiscoveredReaders\";\n TerminalEventsEnum[\"ConnectedReader\"] = \"terminalConnectedReader\";\n TerminalEventsEnum[\"Completed\"] = \"terminalCompleted\";\n TerminalEventsEnum[\"Canceled\"] = \"terminalCanceled\";\n TerminalEventsEnum[\"Failed\"] = \"terminalFailed\";\n})(TerminalEventsEnum || (TerminalEventsEnum = {}));\n//# sourceMappingURL=events.enum.js.map","export var TerminalConnectType;\n(function (TerminalConnectType) {\n TerminalConnectType[\"Simulated\"] = \"simulated\";\n TerminalConnectType[\"Internet\"] = \"internet\";\n TerminalConnectType[\"Bluetooth\"] = \"bluetooth\";\n TerminalConnectType[\"Usb\"] = \"usb\";\n TerminalConnectType[\"TapToPay\"] = \"tap-to-pay\";\n})(TerminalConnectType || (TerminalConnectType = {}));\nexport * from './events.enum';\n//# sourceMappingURL=definitions.js.map","import { registerPlugin } from '@capacitor/core';\nconst StripeTerminal = registerPlugin('StripeTerminal', {\n web: () => import('./web').then(m => new m.StripeTerminalWeb()),\n});\nexport * from './definitions';\nexport { StripeTerminal };\n//# sourceMappingURL=index.js.map","import { WebPlugin } from '@capacitor/core';\nimport { TerminalEventsEnum } from './events.enum';\nexport class StripeTerminalWeb extends WebPlugin {\n async initialize(options) {\n console.log('initialize', options);\n this.notifyListeners(TerminalEventsEnum.Loaded, null);\n }\n async discoverReaders(options) {\n console.log('discoverReaders', options);\n this.notifyListeners(TerminalEventsEnum.DiscoveredReaders, {\n readers: [],\n });\n return {\n readers: [],\n };\n }\n async connectReader(options) {\n console.log('connectReader', options);\n this.notifyListeners(TerminalEventsEnum.ConnectedReader, null);\n }\n async collect(options) {\n console.log('collect', options);\n this.notifyListeners(TerminalEventsEnum.Completed, null);\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["TerminalEventsEnum","TerminalConnectType","registerPlugin","WebPlugin"],"mappings":";;;AAAWA,wCAAmB;IAC9B,CAAC,UAAU,kBAAkB,EAAE;IAC/B,IAAI,kBAAkB,CAAC,QAAQ,CAAC,GAAG,gBAAgB,CAAC;IACpD,IAAI,kBAAkB,CAAC,mBAAmB,CAAC,GAAG,2BAA2B,CAAC;IAC1E,IAAI,kBAAkB,CAAC,iBAAiB,CAAC,GAAG,yBAAyB,CAAC;IACtE,IAAI,kBAAkB,CAAC,WAAW,CAAC,GAAG,mBAAmB,CAAC;IAC1D,IAAI,kBAAkB,CAAC,UAAU,CAAC,GAAG,kBAAkB,CAAC;IACxD,IAAI,kBAAkB,CAAC,QAAQ,CAAC,GAAG,gBAAgB,CAAC;IACpD,CAAC,EAAEA,0BAAkB,KAAKA,0BAAkB,GAAG,EAAE,CAAC,CAAC;;ACRxCC,yCAAoB;IAC/B,CAAC,UAAU,mBAAmB,EAAE;IAChC,IAAI,mBAAmB,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC;IACnD,IAAI,mBAAmB,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC;IACjD,IAAI,mBAAmB,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC;IACnD,IAAI,mBAAmB,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;IACvC,IAAI,mBAAmB,CAAC,UAAU,CAAC,GAAG,YAAY,CAAC;IACnD,CAAC,EAAEA,2BAAmB,KAAKA,2BAAmB,GAAG,EAAE,CAAC,CAAC;;ACNhD,UAAC,cAAc,GAAGC,mBAAc,CAAC,gBAAgB,EAAE;IACxD,IAAI,GAAG,EAAE,MAAM,mDAAe,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,iBAAiB,EAAE,CAAC;IACnE,CAAC;;ICDM,MAAM,iBAAiB,SAASC,cAAS,CAAC;IACjD,IAAI,MAAM,UAAU,CAAC,OAAO,EAAE;IAC9B,QAAQ,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAC3C,QAAQ,IAAI,CAAC,eAAe,CAACH,0BAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC9D,KAAK;IACL,IAAI,MAAM,eAAe,CAAC,OAAO,EAAE;IACnC,QAAQ,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;IAChD,QAAQ,IAAI,CAAC,eAAe,CAACA,0BAAkB,CAAC,iBAAiB,EAAE;IACnE,YAAY,OAAO,EAAE,EAAE;IACvB,SAAS,CAAC,CAAC;IACX,QAAQ,OAAO;IACf,YAAY,OAAO,EAAE,EAAE;IACvB,SAAS,CAAC;IACV,KAAK;IACL,IAAI,MAAM,aAAa,CAAC,OAAO,EAAE;IACjC,QAAQ,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IAC9C,QAAQ,IAAI,CAAC,eAAe,CAACA,0BAAkB,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;IACvE,KAAK;IACL,IAAI,MAAM,OAAO,CAAC,OAAO,EAAE;IAC3B,QAAQ,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACxC,QAAQ,IAAI,CAAC,eAAe,CAACA,0BAAkB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACjE,KAAK;IACL;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
3
|
+
<plist version="1.0">
|
|
4
|
+
<dict>
|
|
5
|
+
<key>CFBundleDevelopmentRegion</key>
|
|
6
|
+
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
|
7
|
+
<key>CFBundleExecutable</key>
|
|
8
|
+
<string>$(EXECUTABLE_NAME)</string>
|
|
9
|
+
<key>CFBundleIdentifier</key>
|
|
10
|
+
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
|
11
|
+
<key>CFBundleInfoDictionaryVersion</key>
|
|
12
|
+
<string>6.0</string>
|
|
13
|
+
<key>CFBundleName</key>
|
|
14
|
+
<string>$(PRODUCT_NAME)</string>
|
|
15
|
+
<key>CFBundlePackageType</key>
|
|
16
|
+
<string>FMWK</string>
|
|
17
|
+
<key>CFBundleShortVersionString</key>
|
|
18
|
+
<string>1.0</string>
|
|
19
|
+
<key>CFBundleVersion</key>
|
|
20
|
+
<string>$(CURRENT_PROJECT_VERSION)</string>
|
|
21
|
+
<key>NSPrincipalClass</key>
|
|
22
|
+
<string></string>
|
|
23
|
+
</dict>
|
|
24
|
+
</plist>
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import Foundation
|
|
2
|
+
import Capacitor
|
|
3
|
+
import StripeTerminal
|
|
4
|
+
|
|
5
|
+
public class StripeTerminal: NSObject, DiscoveryDelegate, LocalMobileReaderDelegate {
|
|
6
|
+
|
|
7
|
+
weak var plugin: StripeTerminalPlugin?
|
|
8
|
+
var discoverCancelable: Cancelable?
|
|
9
|
+
var discoverCall: CAPPluginCall?
|
|
10
|
+
var locationId: String?
|
|
11
|
+
var isTest: Bool?
|
|
12
|
+
var collectCancelable: Cancelable?
|
|
13
|
+
|
|
14
|
+
var readers: [Reader]?
|
|
15
|
+
|
|
16
|
+
@objc public func initialize(_ call: CAPPluginCall) {
|
|
17
|
+
self.isTest = call.getBool("isTest", true)
|
|
18
|
+
Terminal.setTokenProvider(APIClient(tokenProviderEndpoint: call.getString("tokenProviderEndpoint", "")))
|
|
19
|
+
self.plugin?.notifyListeners(TerminalEvents.Loaded.rawValue, data: [:])
|
|
20
|
+
call.resolve()
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
func discoverReaders(_ call: CAPPluginCall) {
|
|
24
|
+
let config = DiscoveryConfiguration(
|
|
25
|
+
discoveryMethod: .localMobile,
|
|
26
|
+
simulated: self.isTest
|
|
27
|
+
)
|
|
28
|
+
self.discoverCall = call
|
|
29
|
+
self.locationId = call.getString("locationId")
|
|
30
|
+
|
|
31
|
+
self.discoverCancelable = Terminal.shared.discoverReaders(config, delegate: self) { error in
|
|
32
|
+
if let error = error {
|
|
33
|
+
print("discoverReaders failed: \(error)")
|
|
34
|
+
call.reject(error.localizedDescription)
|
|
35
|
+
self.discoverCall = nil
|
|
36
|
+
} else {
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
public func terminal(_ terminal: Terminal, didUpdateDiscoveredReaders readers: [Reader]) {
|
|
42
|
+
var readersJSObject: JSArray = []
|
|
43
|
+
var i = 0
|
|
44
|
+
for reader in readers {
|
|
45
|
+
readersJSObject.append([
|
|
46
|
+
"index": i,
|
|
47
|
+
"serialNumber": reader.serialNumber
|
|
48
|
+
])
|
|
49
|
+
i += 1
|
|
50
|
+
}
|
|
51
|
+
self.readers = readers
|
|
52
|
+
|
|
53
|
+
self.plugin?.notifyListeners(TerminalEvents.DiscoveredReaders.rawValue, data: ["readers": readersJSObject])
|
|
54
|
+
self.discoverCall?.resolve([
|
|
55
|
+
"readers": readersJSObject
|
|
56
|
+
])
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
public func connectReader(_ call: CAPPluginCall) {
|
|
60
|
+
let connectionConfig = LocalMobileConnectionConfiguration(locationId: self.locationId!)
|
|
61
|
+
let reader: JSObject = call.getObject("reader")!
|
|
62
|
+
let index: Int = reader["index"] as! Int
|
|
63
|
+
|
|
64
|
+
Terminal.shared.connectLocalMobileReader(self.readers![index], delegate: self, connectionConfig: connectionConfig) { reader, error in
|
|
65
|
+
if let reader = reader {
|
|
66
|
+
self.plugin?.notifyListeners(TerminalEvents.ConnectedReader.rawValue, data: [:])
|
|
67
|
+
call.resolve()
|
|
68
|
+
} else if let error = error {
|
|
69
|
+
call.reject(error.localizedDescription)
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
public func collect(_ call: CAPPluginCall) {
|
|
75
|
+
Terminal.shared.retrievePaymentIntent(clientSecret: call.getString("paymentIntent")!) { retrieveResult, retrieveError in
|
|
76
|
+
if let error = retrieveError {
|
|
77
|
+
print("retrievePaymentIntent failed: \(error)")
|
|
78
|
+
} else if let paymentIntent = retrieveResult {
|
|
79
|
+
self.collectCancelable = Terminal.shared.collectPaymentMethod(paymentIntent) { collectResult, collectError in
|
|
80
|
+
if let error = collectError {
|
|
81
|
+
self.plugin?.notifyListeners(TerminalEvents.Failed.rawValue, data: [:])
|
|
82
|
+
call.reject(error.localizedDescription)
|
|
83
|
+
} else if let paymentIntent = collectResult {
|
|
84
|
+
self.plugin?.notifyListeners(TerminalEvents.Completed.rawValue, data: [:])
|
|
85
|
+
call.resolve()
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
public func localMobileReader(_ reader: Reader, didStartInstallingUpdate update: ReaderSoftwareUpdate, cancelable: Cancelable?) {
|
|
94
|
+
// TODO
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
public func localMobileReader(_ reader: Reader, didReportReaderSoftwareUpdateProgress progress: Float) {
|
|
98
|
+
// TODO
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
public func localMobileReader(_ reader: Reader, didFinishInstallingUpdate update: ReaderSoftwareUpdate?, error: Error?) {
|
|
102
|
+
// TODO
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
public func localMobileReader(_ reader: Reader, didRequestReaderInput inputOptions: ReaderInputOptions = []) {
|
|
106
|
+
// TODO
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
public func localMobileReader(_ reader: Reader, didRequestReaderDisplayMessage displayMessage: ReaderDisplayMessage) {
|
|
110
|
+
// TODO
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
class APIClient: ConnectionTokenProvider {
|
|
115
|
+
var tokenProviderEndpoint: String = ""
|
|
116
|
+
|
|
117
|
+
init(tokenProviderEndpoint: String) {
|
|
118
|
+
self.tokenProviderEndpoint = tokenProviderEndpoint
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// Fetches a ConnectionToken from your backend
|
|
122
|
+
func fetchConnectionToken(_ completion: @escaping ConnectionTokenCompletionBlock) {
|
|
123
|
+
let config = URLSessionConfiguration.default
|
|
124
|
+
let session = URLSession(configuration: config)
|
|
125
|
+
guard let url = URL(string: tokenProviderEndpoint) else {
|
|
126
|
+
fatalError("Invalid backend URL")
|
|
127
|
+
}
|
|
128
|
+
var request = URLRequest(url: url)
|
|
129
|
+
request.httpMethod = "POST"
|
|
130
|
+
let task = session.dataTask(with: request) { (data, _, error) in
|
|
131
|
+
if let data = data {
|
|
132
|
+
do {
|
|
133
|
+
// Warning: casting using `as? [String: String]` looks simpler, but isn't safe:
|
|
134
|
+
let json = try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any]
|
|
135
|
+
if let secret = json?["secret"] as? String {
|
|
136
|
+
completion(secret, nil)
|
|
137
|
+
} else {
|
|
138
|
+
let error = NSError(domain: "com.getcapacitor.community.stripe.terminal",
|
|
139
|
+
code: 2000,
|
|
140
|
+
userInfo: [NSLocalizedDescriptionKey: "Missing `secret` in ConnectionToken JSON response"])
|
|
141
|
+
completion(nil, error)
|
|
142
|
+
}
|
|
143
|
+
} catch {
|
|
144
|
+
completion(nil, error)
|
|
145
|
+
}
|
|
146
|
+
} else {
|
|
147
|
+
let error = NSError(domain: "com.getcapacitor.community.stripe.terminal",
|
|
148
|
+
code: 1000,
|
|
149
|
+
userInfo: [NSLocalizedDescriptionKey: "No data in response from ConnectionToken endpoint"])
|
|
150
|
+
completion(nil, error)
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
task.resume()
|
|
154
|
+
}
|
|
155
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
#import <UIKit/UIKit.h>
|
|
2
|
+
|
|
3
|
+
//! Project version number for Plugin.
|
|
4
|
+
FOUNDATION_EXPORT double PluginVersionNumber;
|
|
5
|
+
|
|
6
|
+
//! Project version string for Plugin.
|
|
7
|
+
FOUNDATION_EXPORT const unsigned char PluginVersionString[];
|
|
8
|
+
|
|
9
|
+
// In this header, you should import all the public headers of your framework using statements like #import <Plugin/PublicHeader.h>
|
|
10
|
+
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
#import <Foundation/Foundation.h>
|
|
2
|
+
#import <Capacitor/Capacitor.h>
|
|
3
|
+
|
|
4
|
+
// Define the plugin using the CAP_PLUGIN Macro, and
|
|
5
|
+
// each method the plugin supports using the CAP_PLUGIN_METHOD macro.
|
|
6
|
+
CAP_PLUGIN(StripeTerminalPlugin, "StripeTerminal",
|
|
7
|
+
CAP_PLUGIN_METHOD(initialize, CAPPluginReturnPromise);
|
|
8
|
+
CAP_PLUGIN_METHOD(discoverReaders, CAPPluginReturnPromise);
|
|
9
|
+
CAP_PLUGIN_METHOD(connectReader, CAPPluginReturnPromise);
|
|
10
|
+
CAP_PLUGIN_METHOD(collect, CAPPluginReturnPromise);
|
|
11
|
+
)
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import Foundation
|
|
2
|
+
import StripeTerminal
|
|
3
|
+
import Capacitor
|
|
4
|
+
import PassKit
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Please read the Capacitor iOS Plugin Development Guide
|
|
8
|
+
* here: https://capacitorjs.com/docs/plugins/ios
|
|
9
|
+
*/
|
|
10
|
+
@objc(StripeTerminalPlugin)
|
|
11
|
+
public class StripeTerminalPlugin: CAPPlugin {
|
|
12
|
+
private let implementation = StripeTerminal()
|
|
13
|
+
|
|
14
|
+
override public func load() {
|
|
15
|
+
super.load()
|
|
16
|
+
self.implementation.plugin = self
|
|
17
|
+
// TODO: add STPAPIClient.shared.appInfo
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
@objc func initialize(_ call: CAPPluginCall) {
|
|
21
|
+
self.implementation.initialize(call)
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
@objc func discoverReaders(_ call: CAPPluginCall) {
|
|
25
|
+
self.implementation.discoverReaders(call)
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
@objc func connectReader(_ call: CAPPluginCall) {
|
|
29
|
+
self.implementation.connectReader(call)
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
@objc func collect(_ call: CAPPluginCall) {
|
|
33
|
+
self.implementation.collect(call)
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
public enum TerminalEvents: String {
|
|
2
|
+
case Loaded = "terminalLoaded"
|
|
3
|
+
case DiscoveredReaders = "terminalDiscoveredReaders"
|
|
4
|
+
case ConnectedReader = "terminalConnectedReader"
|
|
5
|
+
case Completed = "terminalCompleted"
|
|
6
|
+
case Canceled = "terminalCanceled"
|
|
7
|
+
case Failed = "terminalFailed"
|
|
8
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@capacitor-community/stripe-terminal",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "Stripe SDK bindings for Capacitor Applications",
|
|
5
|
+
"main": "dist/plugin.cjs.js",
|
|
6
|
+
"module": "dist/esm/index.js",
|
|
7
|
+
"types": "dist/esm/index.d.ts",
|
|
8
|
+
"unpkg": "dist/plugin.js",
|
|
9
|
+
"files": [
|
|
10
|
+
"android/src/main/",
|
|
11
|
+
"android/build.gradle",
|
|
12
|
+
"dist/",
|
|
13
|
+
"ios/Plugin/",
|
|
14
|
+
"CapacitorCommunityStripeTerminal.podspec"
|
|
15
|
+
],
|
|
16
|
+
"author": "Masahiko Sakakibara",
|
|
17
|
+
"license": "MIT",
|
|
18
|
+
"repository": {
|
|
19
|
+
"type": "git",
|
|
20
|
+
"url": "git+https://github.com/capacitor-community/stripe.git"
|
|
21
|
+
},
|
|
22
|
+
"bugs": {
|
|
23
|
+
"url": "https://github.com/capacitor-community/stripe/issues"
|
|
24
|
+
},
|
|
25
|
+
"keywords": [
|
|
26
|
+
"capacitor",
|
|
27
|
+
"plugin",
|
|
28
|
+
"native"
|
|
29
|
+
],
|
|
30
|
+
"scripts": {
|
|
31
|
+
"verify": "npm run verify:ios && npm run verify:android && npm run verify:web",
|
|
32
|
+
"verify:ios": "cd ios && pod install && xcodebuild -workspace Plugin.xcworkspace -scheme Plugin -destination generic/platform=iOS && cd ..",
|
|
33
|
+
"verify:android": "cd android && ./gradlew clean build test && cd ..",
|
|
34
|
+
"verify:web": "npm run build",
|
|
35
|
+
"lint": "npm run eslint && npm run prettier -- --check && npm run swiftlint -- lint",
|
|
36
|
+
"fmt": "npm run eslint -- --fix && npm run prettier -- --write && npm run swiftlint -- --fix --format",
|
|
37
|
+
"eslint": "eslint . --ext ts",
|
|
38
|
+
"prettier": "prettier \"**/*.{css,html,ts,js,java}\"",
|
|
39
|
+
"swiftlint": "node-swiftlint",
|
|
40
|
+
"docgen": "docgen --api StripeTerminalPlugin --output-readme README.md --output-json dist/docs.json",
|
|
41
|
+
"build": "npm run clean && npm run docgen && tsc && rollup -c rollup.config.js",
|
|
42
|
+
"clean": "rimraf ./dist",
|
|
43
|
+
"watch": "tsc --watch",
|
|
44
|
+
"prepublishOnly": "npm run build"
|
|
45
|
+
},
|
|
46
|
+
"devDependencies": {
|
|
47
|
+
"@capacitor/android": "^5.0.0",
|
|
48
|
+
"@capacitor/core": "^5.0.0",
|
|
49
|
+
"@capacitor/docgen": "^0.0.18",
|
|
50
|
+
"@capacitor/ios": "^5.0.0",
|
|
51
|
+
"@ionic/eslint-config": "^0.3.0",
|
|
52
|
+
"@ionic/prettier-config": "^1.0.1",
|
|
53
|
+
"@ionic/swiftlint-config": "^1.1.2",
|
|
54
|
+
"eslint": "^7.11.0",
|
|
55
|
+
"prettier": "~2.3.0",
|
|
56
|
+
"prettier-plugin-java": "~1.0.2",
|
|
57
|
+
"rimraf": "^3.0.2",
|
|
58
|
+
"rollup": "^2.32.0",
|
|
59
|
+
"swiftlint": "^1.0.1",
|
|
60
|
+
"typescript": "~4.1.5"
|
|
61
|
+
},
|
|
62
|
+
"peerDependencies": {
|
|
63
|
+
"@capacitor/core": "^5.0.0"
|
|
64
|
+
},
|
|
65
|
+
"prettier": "@ionic/prettier-config",
|
|
66
|
+
"swiftlint": "@ionic/swiftlint-config",
|
|
67
|
+
"eslintConfig": {
|
|
68
|
+
"extends": "@ionic/eslint-config/recommended"
|
|
69
|
+
},
|
|
70
|
+
"capacitor": {
|
|
71
|
+
"ios": {
|
|
72
|
+
"src": "ios"
|
|
73
|
+
},
|
|
74
|
+
"android": {
|
|
75
|
+
"src": "android"
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|