Con el Pago en un solo paso para el Día Internacional de la Mujer complemento, hay un método gratuito para pagos en un solo paso.
Aunque sigue teniendo un problema cuando quieres seleccionar un método de pago, porque no actualiza el resumen de la reseña. Esta función es vital para los métodos de pago que agregan una tarifa de servicio. Gracias a este complemento, encontré un código que lo soluciona.
Simplemente habilite jQuery $j y agregue el siguiente código en el proceso de pago (onepagecheckout.phtml):
$j(function($) { $j('input[name*="método[de[pago]"]').live('click', function() { checkout.update({ 'review': 1, //,'metodo-de-envio': 1 'metodo-de-pago': 1 }); setTimeout(function(){ checkout.update({ 'review': 1 //'metodo-de-pago': 1 }); }, 5000); }); $j('input[name*="metodo_de_envio"]').live('click', function() { checkout.update({ 'review': 1 ,'metodo-de-pago': 1 //'metodo-de-envio': 1 }); setTimeout(function(){ checkout.update({ 'review': 1, //'metodo-de-pago': 1 }); }, 500); }); });
Ahora el checkout de IWD One Step funciona con métodos de pago con costos de servicio, porque la reseña/resumen se actualiza.
Si tienes demasiados problemas con el DMI, mejor inténtalo. Pago en un solo paso.
Lo siento, pero no es del todo correcto. Porque hay dos desventajas: si la primera respuesta de actualización es después de 5 segundos, la actualización fallará totalmente y la segunda carga (en el 'orden de revisión') no es correcta para la UX (interfaz de usuario).
Para mí la solución correcta es:
1 embellecedor de onepagecheckout.pack.js
2. Después de las funciones 'update' y antes de 'setResponse', agregará estas funciones después de la línea 195.
update2: function (params) {
if (this.loadWaiting != false) {
return
}
if (this.s_code == '') return this.opcdis();
var parameters = $(this.form).serialize(true);
for (var i in params) {
if (!params[i]) {
continue
}
var obj = $('checkout-' + i + '-load');
if (obj != null) {
var size = obj.getDimensions();
obj.setStyle({
'width': size.width + 'px',
'height': size.height + 'px'
}).update('').addClassName('loading');
parameters[i] = params[i]
}
}
checkout.setLoadWaiting(true);
var request = new Ajax.Request(this.updateUrl, {
method: 'post',
onSuccess: this.setResponse2.bind(this),
onFailure: this.ajaxFailure.bind(this),
parameters: parameters
})
},
setResponse2: function (response) {
response = response.responseText.evalJSON();
if (response.redirect) {
location.href = check_secure_url(response.redirect);
return true
}
checkout.setLoadWaiting(false);
if (response.order_created) {
$('onepagecheckout_orderform').action = this.successUrl;
$('opc_submit_form').click();
return true
} else if (response.error_messages) {
var msg = response.error_messages;
if (typeof (msg) == 'object') {
msg = msg.join("\n")
}
alert(msg)
}
$('review-please-wait').hide();
if (response.update_section) {
for (var i in response.update_section) {
ch_obj = $('checkout-' + i + '-load');
if (ch_obj != null) {
ch_obj.setStyle({
'width': 'auto',
'height': 'auto'
}).update(response.update_section[i]).setOpacity(1).removeClassName('loading');
if (i === 'shipping-method') {
shippingMethod.addObservers()
}
}
}
}
if (response.duplicateBillingInfo) {
shipping.syncWithBilling()
}
if (!response.reload_totals) {
checkout.update({
'review': 1
})
}
return false
},
3 tu código será modificado en
$j(función($) {
$j('input[name*="pago[metodo]"]').live('clic', function() {
pago.update2({
'revisión': 1,
'metodo de pago': 1
});
});
$j('input[name*="método_de_envío"]').live('clic', función() {
pago.actualizar({
'reseña': 1
,'metodo de pago': 1
});
setTimeout(función(){
pago.actualizar({
'revisión': 1,
});
}, 500);
});
});
Genial, lo probaré pronto, ¡gracias por el aporte! Todavía hay una falla extraña que ocurre cuando el pago falla y se vuelve al sitio, el carrito está vacío, por lo que no se puede volver a procesar el pedido. ¿Tienes una solución para eso también? Pronto lo buscaré también.
Hola,
Ya encontré el código de actualización de revisión dentro del proceso de pago de Brasil (según creo, basado en el Día Internacional de la Mujer). Necesito encontrar una manera de que los pagos cancelados resulten en pedidos cancelados, en lugar de pedidos pendientes. ¿Tienes alguna idea?
Para el carrito vacío, utilizo un código del pago de vout.nl
Edite /etc/config.xml y coloque esto después:
onepagecheckout/observador
Establecer plantilla de carrito vacío
eliminar :
Carrito vacío
deEn /Model/Observer.php agregue:
función pública setEmptyCartTemplate()
{
si (Mage::helper('onepagecheckout')->isOnepageCheckoutEnabled())
{
$cartHelper = Mage::helper('caja/carrito');
$layout = Mage::getSingleton('núcleo/diseño');
si (!$cartHelper->getItemsCount()){
$layout->getBlock('checkout.carrito')->setTemplate('onepagecheckout/carrito/noItems.phtml');
}
}
}
Para obtener más información, consulte la OSC holandesa:
https://github.com/Vout/onestepchecout
Ya he solucionado el problema del pago, pero ahora tengo este problema:
Quiero que la sección de revisión y pago se actualice cuando cambie el método de envío. Ahora, la tarifa de pago contra reembolso no desaparecerá hasta que haga clic en el mismo método de envío dos veces. ¿Alguna idea?
Ahora veo el problema de codificación, intentaré esto nuevamente:
En IWD/Onepagecheckout/etc/config.xml elimine emptyCart de:
modelo
onepagecheckout/observador
eliminarHistorialComentario
Carrito vacío
y añade:
onepagecheckout/observador
Establecer plantilla de carrito vacío
¿Es posible resumir todo en una explicación completa?
Tengo el mismo problema con el pago en una página de IWD y Lesti FPC. Es un excelente potenciador de Magento, pero no puedo usarlo por el momento porque no puedo recibir pedidos de esta manera. ¿Alguien tiene alguna solución para esto?
Un cordial saludo, Kim. Saludos cordiales al autor.
¡Ayúdame!
Estoy usando el ex One Page Checkout de IWD.
Estoy teniendo algunos errores.
One Page Checkout no muestra los métodos de envío ni de pago, aunque los he configurado en el backend de administración.
http://www.uphinhnhanh.com/images/65044Hinh1.jpg
Cuando completé la información y hice clic fuera del espacio, mi sitio comenzó a actualizarse y mostró el método de envío, pero no los métodos de pago. Hasta que actualicé manualmente (F5), se muestran los métodos de pago y puedo terminar de pagar.
http://www.uphinhnhanh.com/images/32861Hinh2.jpg
Tengo que actualizar el navegador, los métodos de pago se muestran:
http://www.uphinhnhanh.com/images/61163hinh3.jpg
Yo uso magento 1.8
No soy desarrollador, por favor guíame más de cerca
He intentado arreglarlo 🙁 pero no puedo 🙁
¡Por favor ayúdame!
Mi ingles es muy malo espero me entiendan y me ayuden