javascript - framework - html to ios app
Problema de integraciĆ³n de Paypal en titanio (1)
Tengo que implementar Paypal en mi aplicación. Aquí he agregado algunos productos en el carrito. Si hago clic en el carro, tengo que pagar el monto usando Paypal.
Al hacer clic en el botón de Paypal, aparece el siguiente error:
Las cantidades especificadas para el precio del artículo, los impuestos y el envío no suman la cantidad 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: ''[email protected]'',
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();
Por favor, revisa el código y dame una idea para resolver el problema anterior.
EDITAR:
Aquí estoy enfrentando 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 impreso los elementos de factura en la consola, y estoy obteniendo los datos como arriba.
Así que he dado como:
invoiceItems:invoiceitems,
Me gusta obtener la emisión (los importes especificados para el precio del artículo, los impuestos y el envío no suman 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}]
está funcionando perfectamente.
No funciona dinámicamente cuando se le asigna el valor. ¿Puedes verificar el código y ayudar?
EDITAR:
Si he intentado ejecutar este código en un dispositivo Android, al hacer clic en el botón de PayPal, no pasa nada. Por qué el formulario de inicio de sesión no está abierto en el dispositivo Android.
¿Por qué estás escapando de las citas en este código?
[{"name":"Bajaj 200 mm Ultima PT01 Personal Fan","totalPrice":2997,"itemPrice":999,"itemCount":3}
Esto no es JSON válido (o Javascript para el caso). ¿Esto es 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 echado un vistazo más de cerca a tu muestra de código. ¿Puedes confirmar de dónde totatamount
? A medida que la muestra del código permanece, no estará undefined
, lo que sería coherente con el mensaje de error que ha descrito. ¿Puedes confirmar que es definitivamente el valor correcto INMEDIATAMENTE antes de enviar estos datos?
La especificación ti.paypal tiene un bonito ejemplo de código en el archivo README , que proporciona un buen ejemplo de cómo configurar createPaypalButton
. Yo recomendaría mirar esto si aún no lo has hecho.
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!''
}
});