summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/jetpack/modules/simple-payments/paypal-express-checkout.js')
-rw-r--r--plugins/jetpack/modules/simple-payments/paypal-express-checkout.js212
1 files changed, 0 insertions, 212 deletions
diff --git a/plugins/jetpack/modules/simple-payments/paypal-express-checkout.js b/plugins/jetpack/modules/simple-payments/paypal-express-checkout.js
deleted file mode 100644
index c166931a..00000000
--- a/plugins/jetpack/modules/simple-payments/paypal-express-checkout.js
+++ /dev/null
@@ -1,212 +0,0 @@
-/**
- * This PaypalExpressCheckout global is included by wp_enqueue_script( 'paypal-express-checkout' );
- * It handles communication with Paypal Express checkout and public-api.wordpress.com for the purposes
- * of simple-payments module.
- */
-
-/* global paypal */
-/* global jQuery */
-/* exported PaypalExpressCheckout */
-/* jshint unused:false, es3:false, esversion:5 */
-var PaypalExpressCheckout = {
- primaryCssClassName: 'jetpack-simple-payments',
- messageCssClassName: 'jetpack-simple-payments-purchase-message',
-
- wpRestAPIHost: 'https://public-api.wordpress.com',
- wpRestAPIVersion: '/wpcom/v2',
-
- getEnvironment: function() {
- if ( localStorage && localStorage.getItem && localStorage.getItem( 'simple-payments-env' ) === 'sandbox' ) {
- return 'sandbox';
- }
- return 'production';
- },
-
- getCreatePaymentEndpoint: function( blogId ) {
- return PaypalExpressCheckout.wpRestAPIHost + PaypalExpressCheckout.wpRestAPIVersion + '/sites/' + blogId + '/simple-payments/paypal/payment';
- },
-
- getExecutePaymentEndpoint: function( blogId, paymentId ) {
- return PaypalExpressCheckout.wpRestAPIHost + PaypalExpressCheckout.wpRestAPIVersion + '/sites/' + blogId + '/simple-payments/paypal/' + paymentId + '/execute';
- },
-
- getNumberOfItems: function( field, enableMultiple ) {
- if ( enableMultiple !== '1' ) {
- return 1;
- }
-
- var numberField = document.getElementById( field );
-
- if ( ! numberField ) {
- return 1;
- }
-
- var number = Number( numberField.value );
-
- if ( isNaN( number ) ) {
- return 1;
- }
- return number;
- },
-
- /**
- * Get the DOM element-placeholder used to show message
- * about the transaction. If it doesn't exist then the function will create a new one.
- *
- * @param string domId id of the payment button placeholder
- * @return Element the dom element to print the message
- */
- getMessageContainer: function( domId ) {
- return document.getElementById( domId + '-message-container' );
- },
-
- /**
- * Show a messange close to the Paypal button.
- * Use this function to give feedback to the user according
- * to the transaction result.
- *
- * @param {String} message message to show
- * @param {String} domId paypal-button element dom identifier
- * @param {Boolean} [error] defines if it's a message error. Not TRUE as default.
- */
- showMessage: function( message, domId, isError ) {
- var domEl = PaypalExpressCheckout.getMessageContainer( domId );
-
- // set css classes
- var cssClasses = PaypalExpressCheckout.messageCssClassName + ' show ';
- cssClasses += isError ? 'error' : 'success';
-
- // show message 1s after PayPal popup is closed
- setTimeout( function() {
- domEl.innerHTML = message;
- domEl.setAttribute( 'class', cssClasses );
- }, 1000 );
- },
-
- showError: function( message, domId ) {
- PaypalExpressCheckout.showMessage( message, domId, true );
- },
-
- processErrorMessage: function( errorResponse ) {
- var error = errorResponse ? errorResponse.responseJSON : null;
- var defaultMessage = 'There was an issue processing your payment.';
-
- if ( ! error ) {
- return '<p>' + defaultMessage + '</p>';
- }
-
- if ( error.additional_errors ) {
- var messages = [];
- error.additional_errors.forEach( function( additionalError ) {
- if ( additionalError.message ) {
- messages.push( '<p>' + additionalError.message.toString() + '</p>' );
- }
- } );
- return messages.join('');
- }
-
- return '<p>' + ( error.message || defaultMessage ) + '</p>';
- },
-
- processSuccessMessage: function( successResponse ) {
- var message = successResponse.message;
- var defaultMessage = 'Thank you. Your purchase was successful!';
-
- if ( ! message ) {
- return '<p>' + defaultMessage + '</p>';
- }
-
- return '<p>' + message + '</p>';
- },
-
- cleanAndHideMessage: function( domId ) {
- var domEl = PaypalExpressCheckout.getMessageContainer( domId );
- domEl.setAttribute( 'class', PaypalExpressCheckout.messageCssClassName );
- domEl.innerHTML = '';
- },
-
- renderButton: function( blogId, buttonId, domId, enableMultiple ) {
- var env = PaypalExpressCheckout.getEnvironment();
-
- if ( ! paypal ) {
- throw new Error( 'PayPal module is required by PaypalExpressCheckout' );
- }
-
- var buttonDomId = domId + '_button';
-
- paypal.Button.render( {
- env: env,
- commit: true,
-
- style: {
- label: 'pay',
- shape: 'rect',
- color: 'silver',
- fundingicons: true,
- },
-
- payment: function() {
- PaypalExpressCheckout.cleanAndHideMessage( domId );
-
- var payload = {
- number: PaypalExpressCheckout.getNumberOfItems( domId + '_number', enableMultiple ),
- buttonId: buttonId,
- env: env
- };
-
- return new paypal.Promise( function( resolve, reject ) {
- jQuery.post( PaypalExpressCheckout.getCreatePaymentEndpoint( blogId ), payload )
- .done( function( paymentResponse ) {
- if ( ! paymentResponse ) {
- PaypalExpressCheckout.showError( PaypalExpressCheckout.processErrorMessage(), domId );
- return reject( new Error( 'server_error' ) );
- }
-
- resolve( paymentResponse.id );
- } )
- .fail( function( paymentError ) {
- var paymentErrorMessage = PaypalExpressCheckout.processErrorMessage( paymentError );
- PaypalExpressCheckout.showError( paymentErrorMessage, domId );
-
- var code = paymentError.responseJSON && paymentError.responseJSON.code ?
- paymentError.responseJSON.code : 'server_error';
-
- reject( new Error( code ) );
- } );
- } );
- },
-
- onAuthorize: function( onAuthData ) {
- var payload = {
- buttonId: buttonId,
- payerId: onAuthData.payerID,
- env: env
- };
- return new paypal.Promise( function( resolve, reject ) {
- jQuery.post( PaypalExpressCheckout.getExecutePaymentEndpoint( blogId, onAuthData.paymentID ), payload )
- .done( function( authResponse ) {
- if ( ! authResponse ) {
- PaypalExpressCheckout.showError( PaypalExpressCheckout.processErrorMessage(), domId );
- return reject( new Error( 'server_error' ) );
- }
-
- PaypalExpressCheckout.showMessage(
- PaypalExpressCheckout.processSuccessMessage( authResponse ),
- domId
- );
- resolve();
- } )
- .fail( function( authError ) {
- var authErrorMessage = PaypalExpressCheckout.processErrorMessage( authError );
- PaypalExpressCheckout.showError( authErrorMessage, domId );
-
- var code = authError.responseJSON && authError.responseJSON.code ?
- authError.responseJSON.code : 'server_error';
-
- reject( new Error( code ) );
- } );
- } );
- }
- }, buttonDomId );
- }
-};