@palta-brain/web-sdk
Version:
375 lines • 20 kB
JavaScript
"use strict";
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (g && (g = 0, op[0] && (_ = 0)), _) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
Object.defineProperty(exports, "__esModule", { value: true });
var react_1 = __importStar(require("react"));
var BrainTreeCheckoutForm_1 = require("./BrainTreeClient/BrainTreeCheckoutForm");
var PrimerCheckoutForm_1 = require("./PrimerClient/PrimerCheckoutForm");
var CreatePaymentClient_1 = require("./CreatePaymentClient");
var PaymentStatuses_1 = require("./PaymentStatuses");
function uuid4() {
// @ts-ignore
return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, function (c) {
return (c ^
(crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (c / 4)))).toString(16);
});
}
var initialState = {
customerId: uuid4(),
customerIdType: 'merchant-uuid',
orderId: uuid4(),
apiEndpoint: 'https://api.payments.dev.paltabrain.com',
pricePointIdent: 'pp_euro',
apiKey: 'c5e8c9fdaa8748649837371f9547e84f',
metadata: '{ "apple": 1}',
email: 'testing@paltabrain.com',
};
function App() {
var _this = this;
var _a = (0, react_1.useState)(initialState), state = _a[0], setState = _a[1];
var _b = (0, react_1.useState)({}), stateClient = _b[0], setStateClient = _b[1];
var onError = function (error, description) {
console.error(description, error);
};
var onPaymentStatusChange = function (status, paymentMethodType) {
console.log(status, paymentMethodType);
};
var initPayment = function () { return __awaiter(_this, void 0, void 0, function () {
var apiEndpoint, apiKey, pricePointIdent, orderId, customerId, customerIdType, metadata, email, firstPaymentBtn, client, formSettings, primerOption, braintreeOption, formWrapperSelector, paymentWrapperSelector, primerCheckoutFormSelector, braintreeCheckoutFormSelector, result, error_1;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
apiEndpoint = state.apiEndpoint, apiKey = state.apiKey, pricePointIdent = state.pricePointIdent, orderId = state.orderId, customerId = state.customerId, customerIdType = state.customerIdType, metadata = state.metadata, email = state.email;
_a.label = 1;
case 1:
_a.trys.push([1, 3, , 4]);
firstPaymentBtn = document.getElementById('first-payment');
if (firstPaymentBtn) {
firstPaymentBtn.disabled = true;
firstPaymentBtn.innerText = 'Loading...';
firstPaymentBtn.style.opacity = '0.5';
firstPaymentBtn.style.cursor = 'default';
}
client = (0, CreatePaymentClient_1.createPaymentClient)({
apiEndpoint: apiEndpoint,
apiKey: apiKey,
email: email,
metadata: JSON.parse(metadata),
onError: onError,
onPaymentStatusChange: onPaymentStatusChange,
}, { value: customerId, type: customerIdType });
setStateClient(client);
formSettings = {
orderId: orderId,
ident: pricePointIdent,
customer: {
id: { value: customerId, type: customerIdType },
},
email: email,
countryCode: 'US',
};
primerOption = {};
braintreeOption = {
createOrder: function (data) { return console.log(data); },
createPayment: function (data) { return console.log(data); },
onCancel: function (data) { return console.log(data); },
threeDSecureOnLookupComplete: function (data, details) {
return console.log(data, details);
},
threeDSecureValidated: function (value) {
return console.log('threeDSecureValidated', value);
},
onBeforePaymentCreate: function (e) {
return console.log('onBeforePaymentCreate', e);
},
styles: {
input: {
'font-size': '14px',
'font-family': 'Arial, sans-serif',
},
':focus': {
color: 'black',
},
},
applePayOptions: {
merchantCapabilities: ['supports3DS'],
supportedNetworks: ['visa', 'masterCard', 'amex', 'discover'],
total: {
label: 'Demo (Card is not charged)',
},
},
};
formWrapperSelector = 'preparation-form';
paymentWrapperSelector = 'payment-container';
primerCheckoutFormSelector = 'primer-checkout-form';
braintreeCheckoutFormSelector = 'braintree-checkout-container';
return [4 /*yield*/, client.showPaymentForm({
settings: formSettings,
primerOption: primerOption,
braintreeOption: braintreeOption,
formWrapperSelector: formWrapperSelector,
paymentWrapperSelector: paymentWrapperSelector,
primerCheckoutFormSelector: primerCheckoutFormSelector,
braintreeCheckoutFormSelector: braintreeCheckoutFormSelector,
})];
case 2:
result = _a.sent();
return [3 /*break*/, 4];
case 3:
error_1 = _a.sent();
console.error('Error during initialization:', error_1);
onError(error_1, 'Error during initialization');
return [3 /*break*/, 4];
case 4: return [2 /*return*/];
}
});
}); };
var refreshOnClick = function () { return __awaiter(_this, void 0, void 0, function () {
var pricePointIdent, customerId, customerIdType, email, orderId, formSettings;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
pricePointIdent = state.pricePointIdent, customerId = state.customerId, customerIdType = state.customerIdType, email = state.email;
orderId = uuid4();
formSettings = {
orderId: orderId,
ident: 'test234',
customer: {
id: { value: customerId, type: customerIdType },
emailAddress: email,
},
email: email,
};
return [4 /*yield*/, stateClient.updatePaymentForm(formSettings)];
case 1:
_a.sent();
return [2 /*return*/];
}
});
}); };
var onChangeValue = function (key, value) {
setState(function (state) {
var _a;
return (__assign(__assign({}, state), (_a = {}, _a[key] = value, _a)));
});
};
return (react_1.default.createElement("div", { style: {
display: 'flex',
justifyContent: 'center',
alignItems: 'center',
height: '100vh',
backgroundColor: '#f8f9fa',
fontFamily: 'serif',
padding: '80px',
} },
react_1.default.createElement("div", { id: "preparation-form", style: {
width: '500px',
border: '1px solid #ced4da',
borderRadius: '10px',
padding: '20px',
backgroundColor: '#ffffff',
} },
react_1.default.createElement("h2", { style: { color: '#343a40', fontWeight: 'bold', marginBottom: '20px' } }, "Preparation"),
react_1.default.createElement("div", { style: {
display: 'flex',
justifyContent: 'space-between',
marginBottom: '15px',
} },
react_1.default.createElement("label", { style: { color: '#495057', fontWeight: 'bold' } }, "Domain"),
react_1.default.createElement("input", { id: "apiEndpoint", className: "form-control", type: "text", value: state.apiEndpoint, style: {
width: '60%',
border: '1px solid #ced4da',
padding: '5px',
borderRadius: '5px',
}, onChange: function (event) {
return onChangeValue('apiEndpoint', event.target.value);
} })),
react_1.default.createElement("div", { style: {
display: 'flex',
justifyContent: 'space-between',
marginBottom: '15px',
} },
react_1.default.createElement("label", null, "Email"),
react_1.default.createElement("input", { id: "email", className: "form-control", type: "text", value: state.email, style: {
width: '60%',
border: '1px solid #ced4da',
padding: '5px',
borderRadius: '5px',
}, onChange: function (event) { return onChangeValue('email', event.target.value); } })),
react_1.default.createElement("div", { style: {
display: 'flex',
justifyContent: 'space-between',
marginBottom: '15px',
} },
react_1.default.createElement("label", null, "Api key"),
react_1.default.createElement("input", { id: "api_key", className: "form-control", type: "text", value: state.apiKey, style: {
width: '60%',
border: '1px solid #ced4da',
padding: '5px',
borderRadius: '5px',
}, onChange: function (event) { return onChangeValue('apiKey', event.target.value); } })),
react_1.default.createElement("div", { style: {
display: 'flex',
justifyContent: 'space-between',
marginBottom: '15px',
} },
react_1.default.createElement("label", null, "Customer ID"),
react_1.default.createElement("input", { id: "customer_id", className: "form-control", type: "text", value: state.customerId, style: {
width: '60%',
border: '1px solid #ced4da',
padding: '5px',
borderRadius: '5px',
}, onChange: function (event) {
return onChangeValue('customerId', event.target.value);
} })),
react_1.default.createElement("div", { style: {
display: 'flex',
justifyContent: 'space-between',
marginBottom: '15px',
} },
react_1.default.createElement("label", null, "Customer ID Type"),
react_1.default.createElement("select", { id: "customer_id_type", className: "form-control", value: state.customerIdType, style: {
width: '62%',
border: '1px solid #ced4da',
padding: '5px',
borderRadius: '5px',
}, onChange: function (event) {
return onChangeValue('customerIdType', event.target.value);
} },
react_1.default.createElement("option", { value: "merchant-uuid" }, "merchant-uuid"),
react_1.default.createElement("option", { value: "merchant-str" }, "merchant-str"))),
react_1.default.createElement("div", { style: {
display: 'flex',
justifyContent: 'space-between',
marginBottom: '15px',
} },
react_1.default.createElement("label", null, "Order ID"),
react_1.default.createElement("input", { id: "order_id", className: "form-control", type: "text", value: state.orderId, style: {
width: '60%',
border: '1px solid #ced4da',
padding: '5px',
borderRadius: '5px',
}, onChange: function (event) { return onChangeValue('orderId', event.target.value); } })),
react_1.default.createElement("div", { style: {
display: 'flex',
justifyContent: 'space-between',
marginBottom: '15px',
} },
react_1.default.createElement("label", null, "Price Point Ident"),
react_1.default.createElement("input", { id: "price_point_ident", className: "form-control", type: "text", value: state.pricePointIdent, style: {
width: '60%',
border: '1px solid #ced4da',
padding: '5px',
borderRadius: '5px',
}, onChange: function (event) {
return onChangeValue('pricePointIdent', event.target.value);
} })),
react_1.default.createElement("div", { style: {
display: 'flex',
justifyContent: 'space-between',
marginBottom: '15px',
} },
react_1.default.createElement("label", null, "Metadata"),
react_1.default.createElement("input", { id: "metadata", className: "form-control", type: "text", value: state.metadata, style: {
width: '60%',
border: '1px solid #ced4da',
padding: '5px',
borderRadius: '5px',
}, onChange: function (event) { return onChangeValue('metadata', event.target.value); } })),
react_1.default.createElement("button", { id: "first-payment", style: {
backgroundColor: '#007bff',
color: 'white',
padding: '10px 20px',
marginTop: '10px',
border: 'none',
borderRadius: '5px',
cursor: 'pointer',
}, onClick: initPayment }, "First payment"),
react_1.default.createElement("button", { id: "one-click-button", style: {
backgroundColor: '#6c757d',
color: 'white',
padding: '10px 20px',
marginTop: '10px',
border: 'none',
borderRadius: '5px',
cursor: 'default',
marginLeft: '10px',
} }, "One click")),
react_1.default.createElement("div", { id: "payment-container", style: {
display: 'none',
width: '700px',
} },
react_1.default.createElement(PrimerCheckoutForm_1.PrimerCheckoutForm, { refreshOnClick: refreshOnClick }),
react_1.default.createElement(BrainTreeCheckoutForm_1.BrainTreeCheckoutForm, { refreshOnClick: refreshOnClick }),
react_1.default.createElement(PaymentStatuses_1.PaymentStatuses, null))));
}
exports.default = App;
//# sourceMappingURL=App.js.map