UNPKG

nativescript-payments

Version:
325 lines 14.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var failure_1 = require("./failure"); var item_1 = require("./item"); var order_1 = require("./order"); var order_common_1 = require("./order/order.common"); var payments_common_1 = require("./payments.common"); var payments_common_2 = require("./payments.common"); exports.EventContext = payments_common_2.EventContext; exports.EventResult = payments_common_2.EventResult; exports.payments$ = payments_common_2.payments$; var _productRequest; var _productRequestDelegate; var _paymentTransactionObserver; function init() { if (!_paymentTransactionObserver) { payments_common_1._payments$.next({ context: payments_common_1.EventContext.CONNECTING_STORE, result: payments_common_1.EventResult.STARTED, payload: null, }); _paymentTransactionObserver = new SKPaymentTransactionObserverImpl(); payments_common_1._payments$.next({ context: payments_common_1.EventContext.CONNECTING_STORE, result: payments_common_1.EventResult.PENDING, payload: null, }); try { SKPaymentQueue.defaultQueue().addTransactionObserver(_paymentTransactionObserver); payments_common_1._payments$.next({ context: payments_common_1.EventContext.CONNECTING_STORE, result: payments_common_1.EventResult.SUCCESS, payload: null, }); } catch (e) { var errorPayload = typeof e === 'object' ? e.message : e; console.error(new Error("Init failed: " + errorPayload)); payments_common_1._payments$.next({ context: payments_common_1.EventContext.CONNECTING_STORE, result: payments_common_1.EventResult.FAILURE, payload: null, }); } } } exports.init = init; function tearDown() { if (_paymentTransactionObserver) { SKPaymentQueue.defaultQueue().removeTransactionObserver(_paymentTransactionObserver); } _paymentTransactionObserver = null; } exports.tearDown = tearDown; function fetchItems(itemIds) { payments_common_1._payments$.next({ context: payments_common_1.EventContext.RETRIEVING_ITEMS, result: payments_common_1.EventResult.STARTED, payload: itemIds, }); var productIds = NSMutableSet.alloc().init(); itemIds.forEach(function (value) { return productIds.addObject(value); }); _productRequest = SKProductsRequest.alloc().initWithProductIdentifiers(productIds); _productRequestDelegate = new SKProductRequestDelegateImpl(); _productRequest.delegate = _productRequestDelegate; _productRequest.start(); payments_common_1._payments$.next({ context: payments_common_1.EventContext.RETRIEVING_ITEMS, result: payments_common_1.EventResult.PENDING, payload: itemIds, }); } exports.fetchItems = fetchItems; function buyItem(item, userData) { if (SKPaymentQueue.defaultQueue().transactions) { var pendingCount = SKPaymentQueue.defaultQueue().transactions.count; if (!pendingCount) { payments_common_1._payments$.next({ context: payments_common_1.EventContext.PROCESSING_ORDER, result: payments_common_1.EventResult.PENDING, payload: pendingCount + 1, }); var payment = SKMutablePayment.paymentWithProduct(item.nativeValue); if (userData) { payment.applicationUsername = userData; } try { SKPaymentQueue.defaultQueue().addPayment(payment); payments_common_1._payments$.next({ context: payments_common_1.EventContext.PROCESSING_ORDER, result: payments_common_1.EventResult.STARTED, payload: item, }); } catch (e) { var errorPayload = typeof e === 'object' ? e.message : e; console.error(new Error("Error while adding payment: " + errorPayload)); payments_common_1._payments$.next({ context: payments_common_1.EventContext.PROCESSING_ORDER, result: payments_common_1.EventResult.FAILURE, payload: null, }); } } else { payments_common_1._payments$.next({ context: payments_common_1.EventContext.PROCESSING_ORDER, result: payments_common_1.EventResult.PENDING, payload: pendingCount, }); } } else { console.error(new Error('SKPaymentQueue.defaultQueue().transactions missing.')); } } exports.buyItem = buyItem; function finalizeOrder(order) { payments_common_1._payments$.next({ context: payments_common_1.EventContext.FINALIZING_ORDER, result: payments_common_1.EventResult.STARTED, payload: order, }); if (order.state === order_common_1.OrderState.VALID && !order.restored) { try { SKPaymentQueue.defaultQueue().finishTransaction(order.nativeValue); payments_common_1._payments$.next({ context: payments_common_1.EventContext.FINALIZING_ORDER, result: payments_common_1.EventResult.PENDING, payload: order, }); } catch (e) { var errorPayload = typeof e === 'object' ? e.message : e; console.error(new Error("Error while finalizing order: " + errorPayload)); payments_common_1._payments$.next({ context: payments_common_1.EventContext.FINALIZING_ORDER, result: payments_common_1.EventResult.FAILURE, payload: null, }); } } else { payments_common_1._payments$.next({ context: payments_common_1.EventContext.FINALIZING_ORDER, result: payments_common_1.EventResult.FAILURE, payload: new failure_1.Failure(999), }); } } exports.finalizeOrder = finalizeOrder; function restoreOrders() { payments_common_1._payments$.next({ context: payments_common_1.EventContext.RESTORING_ORDERS, result: payments_common_1.EventResult.STARTED, payload: null, }); try { SKPaymentQueue.defaultQueue().restoreCompletedTransactions(); } catch (e) { var errorPayload = typeof e === 'object' ? e.message : e; console.error(new Error("Error while restoring order: " + errorPayload)); payments_common_1._payments$.next({ context: payments_common_1.EventContext.RESTORING_ORDERS, result: payments_common_1.EventResult.FAILURE, payload: null, }); } } exports.restoreOrders = restoreOrders; function canMakePayments() { return SKPaymentQueue.canMakePayments(); } exports.canMakePayments = canMakePayments; var SKProductRequestDelegateImpl = (function (_super) { __extends(SKProductRequestDelegateImpl, _super); function SKProductRequestDelegateImpl() { return _super !== null && _super.apply(this, arguments) || this; } SKProductRequestDelegateImpl.prototype.productsRequestDidReceiveResponse = function (request, response) { var products = response.products; console.log('Invalid product identifiers: ' + JSON.stringify(response.invalidProductIdentifiers.componentsJoinedByString(', '))); var result = []; for (var i = 0; i < products.count; i++) { result.push(new item_1.Item(products.objectAtIndex(i))); } payments_common_1._payments$.next({ context: payments_common_1.EventContext.RETRIEVING_ITEMS, result: payments_common_1.EventResult.SUCCESS, payload: result, }); this._cleanup(); }; SKProductRequestDelegateImpl.prototype.requestDidFailWithError = function (request, error) { payments_common_1._payments$.next({ context: payments_common_1.EventContext.RETRIEVING_ITEMS, result: payments_common_1.EventResult.FAILURE, payload: new failure_1.Failure(error.code), }); this._cleanup(); }; SKProductRequestDelegateImpl.prototype._cleanup = function () { _productRequestDelegate = null; _productRequest = null; }; SKProductRequestDelegateImpl.ObjCProtocols = [SKProductsRequestDelegate]; return SKProductRequestDelegateImpl; }(NSObject)); var SKPaymentTransactionObserverImpl = (function (_super) { __extends(SKPaymentTransactionObserverImpl, _super); function SKPaymentTransactionObserverImpl() { return _super !== null && _super.apply(this, arguments) || this; } SKPaymentTransactionObserverImpl.prototype.paymentQueueUpdatedTransactions = function (queue, transactions) { _transactionHandler(queue, transactions); }; SKPaymentTransactionObserverImpl.prototype.paymentQueueRestoreCompletedTransactionsFinished = function (queue) { payments_common_1._payments$.next({ context: payments_common_1.EventContext.RESTORING_ORDERS, result: payments_common_1.EventResult.SUCCESS, payload: null, }); }; SKPaymentTransactionObserverImpl.prototype.paymentQueueRestoreCompletedTransactionsFailedWithError = function (queue, error) { payments_common_1._payments$.next({ context: payments_common_1.EventContext.RESTORING_ORDERS, result: payments_common_1.EventResult.FAILURE, payload: new failure_1.Failure(error.code), }); }; SKPaymentTransactionObserverImpl.prototype.paymentQueueRemovedTransactions = function (queue, transactions) { if (transactions && transactions.count) { for (var i = 0; i < transactions.count; i++) { var transaction = transactions.objectAtIndex(i); if (transaction.transactionState === 1) { payments_common_1._payments$.next({ context: payments_common_1.EventContext.FINALIZING_ORDER, result: payments_common_1.EventResult.SUCCESS, payload: new order_1.Order(transaction), }); } } } payments_common_1._payments$.next({ context: payments_common_1.EventContext.PROCESSING_ORDER, result: payments_common_1.EventResult.PENDING, payload: queue.transactions ? queue.transactions.count : 0, }); }; SKPaymentTransactionObserverImpl.prototype.paymentQueueShouldAddStorePaymentForProduct = function (queue, payment, product) { return true; }; SKPaymentTransactionObserverImpl.prototype.paymentQueueUpdatedDownloads = function (queue, downloads) { console.log('paymentQueueUpdatedDownloads called. Not implemented.'); }; SKPaymentTransactionObserverImpl.ObjCProtocols = [SKPaymentTransactionObserver]; return SKPaymentTransactionObserverImpl; }(NSObject)); function _transactionHandler(queue, transactions) { payments_common_1._payments$.next({ context: payments_common_1.EventContext.PROCESSING_ORDER, result: payments_common_1.EventResult.PENDING, payload: queue.transactions ? queue.transactions.count : 0, }); if (transactions && transactions.count) { for (var i = 0; i < transactions.count; i++) { var transaction = transactions.objectAtIndex(i); switch (transaction.transactionState) { case 1: payments_common_1._payments$.next({ context: payments_common_1.EventContext.PROCESSING_ORDER, result: payments_common_1.EventResult.SUCCESS, payload: new order_1.Order(transaction), }); break; case 2: payments_common_1._payments$.next({ context: payments_common_1.EventContext.PROCESSING_ORDER, result: payments_common_1.EventResult.FAILURE, payload: new failure_1.Failure(transaction.error.code), }); try { queue.finishTransaction(transaction); } catch (e) { var errorPayload = typeof e === 'object' ? e.message : e; console.error(new Error("Error while finalizing failed order: " + errorPayload)); } break; case 3: payments_common_1._payments$.next({ context: payments_common_1.EventContext.PROCESSING_ORDER, result: payments_common_1.EventResult.SUCCESS, payload: new order_1.Order(transaction.originalTransaction, true), }); payments_common_1._payments$.next({ context: payments_common_1.EventContext.RESTORING_ORDERS, result: payments_common_1.EventResult.PENDING, payload: new order_1.Order(transaction.originalTransaction, true), }); try { queue.finishTransaction(transaction); } catch (e) { var errorPayload = typeof e === 'object' ? e.message : e; console.error(new Error("Error while finalizing restored order: " + errorPayload)); } break; case 0: case 4: break; default: console.error(new Error('Missing or unknown transaction state.')); break; } } } payments_common_1._payments$.next({ context: payments_common_1.EventContext.PROCESSING_ORDER, result: payments_common_1.EventResult.PENDING, payload: queue.transactions ? queue.transactions.count : 0, }); } //# sourceMappingURL=payments.ios.js.map