Problema de integración de Paypal en titanio

Tengo que implementar Paypal en mi aplicación. Aquí he añadido algunos productos en el carro. Si hago clic en el carro, tengo que pagar la cantidad usando Paypal.

Al hacer clic en el botón de Paypal, estoy recibiendo el siguiente error:

Las cantidades especificadas para el precio del artículo, el impuesto y el envío no suman el monto total.

¿Por qué estoy recibiendo este error?

Estoy usando el siguiente código:

$.paypalWindow.addEventListener('open', function(){ var Paypal = require('ti.paypal'); var u = Ti.Android != undefined ? 'dp' : 0; var status = Ti.UI.createLabel({ top: 20 + u, height: 50 + u, color: '#333', text: 'Loading, please wait...' }); $.paypalWindow.add(status); var price = totalamount; var invoiceitemslist = JSON.stringify(data); var button; function addButtonToWindow() { if (button) { $.paypalWindow.remove(button); button = null; } button = Paypal.createPaypalButton({ width: 194 + u, height: 37 + u, buttonStyle: Paypal.BUTTON_194x37, top: 20 + u, language: 'en_US', appID: 'APP-80W284485P519543T', paypalEnvironment: Paypal.PAYPAL_ENV_SANDBOX, feePaidByReceiver: false, enableShipping: false, payment: { paymentType: Paypal.PAYMENT_TYPE_BUSINESS, subtotal: price, tax: 0.00, shipping: 0.00, currency: 'USD', recipient: 'thaibusiness@gmail.com', customID: 'anythingYouWant', invoiceItems: [{"name":"Bajaj 200 mm Ultima PT01 Personal Fan","totalPrice":2997,"itemPrice":999,"itemCount":3}, ], ipnUrl: 'http://www.appcelerator.com/', merchantName: 'EYMOBINS Insurance', memo: 'For the insurance with EYMOBINS!' } }); button.addEventListener('paymentCancelled', function (e) { alert('Payment cancelled. Please try again!'); addButtonToWindow(); }); button.addEventListener('paymentSuccess', function (e) { alert('Payment successfull. Please get your Policy No.!'+" "+e.transactionID); $.paypalWindow.remove(button); //addButtonToWindow(); }); button.addEventListener('paymentError', function (e) { alert('Payment Error. Please try again!'); addButtonToWindow(); }); button.addEventListener('buttonDisplayed', function () { $.paypalWindow.remove(status); //alert('Please pay '+Ti.App.totalcost+'$ with Paypal!') }); button.addEventListener('buttonError', function () { }); $.paypalWindow.add(button); } addButtonToWindow(); }); $.paypalWindow.open(); 

Compruebe el código y déme una idea para resolver el problema anterior.

EDITAR:

Aquí estoy frente a un problema:

 [{"name":"Bajaj 200 mm Ultima PT01 Personal Fan","totalPrice":999,"itemPrice":999,"itemCount":1},{"name":"Average2Excellent CBSE KG EVS MATHS ENG Educational CD ROMS","totalPrice":547,"itemPrice":547,"itemCount":1}] 

Aquí el totalamount es 1546. Aquí he imprimido los invoiceitems en la consola, y estoy consiguiendo los datos como arriba.

Así que he dado como:

 invoiceItems:invoiceitems, 

Al igual que los medios de obtener el problema (las cantidades especificadas para el precio del artículo, impuestos y envío no se suman a la cantidad total).

Lo mismo que he escrito el código como:

 invoiceItems:[{"name":"Bajaj 200 mm Ultima PT01 Personal Fan","totalPrice":999,"itemPrice":999,"itemCount":1},{"name":"Average2Excellent CBSE KG EVS MATHS ENG Educational CD ROMS","totalPrice":547,"itemPrice":547,"itemCount":1}] 

Funciona perfectamente.

No está funcionando dinámicamente cuando se asigna el valor. ¿Puedes consultar el código y ayudar?

EDITAR:

Si he intentado funcionar este código en el dispositivo androide, como estoy chascando el botón de PayPal nada happends. Por qué el formulario de inicio de sesión no está abierto en el dispositivo Android.

¿Por qué escapa a las citas de este código?

 [{"name":"Bajaj 200 mm Ultima PT01 Personal Fan","totalPrice":2997,"itemPrice":999,"itemCount":3} 

Esto no es válido JSON (o Javascript para el caso). ¿Es esto requerido por Paypal? Creo que debería verse así:

 [{"name":"Bajaj 200 mm Ultima PT01 Personal Fan","totalPrice":2997,"itemPrice":999,"itemCount":3} 

Editar:

He tenido una mirada más cercana a su muestra de código. ¿Puede confirmar de dónde proviene la cantidad total? A medida que se muestre el ejemplo de código, será undefined , lo que sería coherente con el mensaje de error que ha descrito. ¿Puede confirmar que es definitivamente el valor correcto INMEDIATAMENTE antes de enviar estos datos?

La especificación ti.paypal tiene una muestra de código agradable en el archivo README , que da un buen ejemplo de cómo createPaypalButton . Yo recomendaría mirar esto si no lo han hecho ya.

 button = Paypal.createPaypalButton({ // NOTE: height/width only determine the size of the view that the button is embedded in - the actual button size // is determined by the buttonStyle property! width: 194 + u, height: 37 + u, buttonStyle: Paypal.BUTTON_194x37, // The style & size of the button bottom: 50 + u, language: 'en_US', textStyle: Paypal.PAYPAL_TEXT_DONATE, // Causes the button's text to change from "Pay" to "Donate" appID: '<<<YOUR APP ID HERE>>>', // The appID issued by Paypal for your application; for testing, feel free to delete this property entirely. paypalEnvironment: Paypal.PAYPAL_ENV_SANDBOX, // Sandbox, None or Live feePaidByReceiver: false, // This will only be applied when the transaction type is Personal enableShipping: false, // Whether or not to select/send shipping information advancedPayment: { // The payment itself payments: [ { isPrimary: true, // Mark this as the primary vendor; this marks this as a chain payment. merchantName: 'Primary Vendor', paymentType: Paypal.PAYMENT_TYPE_SERVICE, // The type of payment paymentSubtype: Paypal.PAYMENT_SUBTYPE_DONATIONS, // The subtype of the payment; you must be authorized for this by Paypal! subtotal: 13, // The total cost of the order, excluding tax and shipping tax: 0, shipping: 0, recipient: '<<<YOUR RECIPIENT HERE>>>', customID: 'anythingYouWant', invoiceItems: [ { name: 'Shoes', totalPrice: 8, itemPrice: 2, itemCount: 4 }, { name: 'Hats', totalPrice: 2, itemPrice: 0.5, itemCount: 4 }, { name: 'Coats', totalPrice: 3, itemPrice: 1, itemCount: 3 } ] }, { merchantName: 'Vendor 1', paymentType: Paypal.PAYMENT_TYPE_SERVICE, // The type of payment paymentSubtype: Paypal.PAYMENT_SUBTYPE_DONATIONS, // The subtype of the payment; you must be authorized for this by Paypal! subtotal: 10, // The total cost of the order, excluding tax and shipping tax: 0, shipping: 0, recipient: '<<<YOUR RECIPIENT HERE>>>', customID: 'anythingYouWant', invoiceItems: [ { name: 'Shoes', totalPrice: 8, itemPrice: 2, itemCount: 4 }, { name: 'Hats', totalPrice: 2, itemPrice: 0.5, itemCount: 4 } ] }, { merchantName: 'Vendor 2', paymentType: Paypal.PAYMENT_TYPE_SERVICE, // The type of payment paymentSubtype: Paypal.PAYMENT_SUBTYPE_DONATIONS, // The subtype of the payment; you must be authorized for this by Paypal! subtotal: 3, // The total cost of the order, excluding tax and shipping tax: 0, shipping: 0, recipient: '<<<YOUR RECIPIENT HERE>>>', customID: 'anythingYouWant', invoiceItems: [ { name: 'Coats', totalPrice: 3, itemPrice: 1, itemCount: 3 } ] } ], ipnUrl: 'http://www.appcelerator.com/', currency: 'USD', memo: 'For the orphans and widows in the world!' } }); 
  • Desventajas de usar Appcelerator Titanium (o equivalente)?
  • Cómo seleccionar varias imágenes de la galería en titanio?
  • Desea almacenar permanentemente dos variables para una aplicación en sistemas operativos móviles
  • Terminación de proceso anormal del instalador de aplicaciones
  • Cómo utilizar getBaseContext () en la clase que no se extiende Actividad
  • Cómo eliminar tamaño de montón crecer en la aplicación de titanio en Android?
  • Appcelerator Titanium: Android SDK no se carga
  • Titanio api.info nunca muestra nada en la consola
  • ¿Cómo puedo hacer el efecto de pelado de papel en Android?
  • No se puede ejecutar mi aplicación en Android SDK con Titanium Studio 3.1.0
  • ¿Cómo implementar la aplicación Titanium en un dispositivo Android real?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.