Avec le Paiement en une étape pour la Journée internationale des femmes plugin, il existe une méthode gratuite pour les paiements en une seule étape.
Cependant, il y a toujours un problème lorsque vous souhaitez sélectionner un mode de paiement, car il ne rafraîchit pas le résumé des avis. Cette fonctionnalité est essentielle pour les modes de paiement qui ajoutent des frais de service. Grâce à ce plugin, j'ai trouvé une solution de contournement du code.
Activez simplement jQuery $j et ajoutez le code suivant dans le processus de paiement (onepagecheckout.phtml) :
$j(function($) { $j('input[name*="paiement[méthode]"]').live('clic', function() { checkout.update({ 'avis': 1, //,'méthode-d-expédition': 1 'méthode-de-paiement': 1 }); setTimeout(function(){ checkout.update({ 'avis': 1 //'méthode-de-paiement': 1 }); }, 5000); }); $j('input[name*="méthode_d_expédition"]').live('clic', function() { checkout.update({ 'avis': 1 ,'méthode-de-paiement': 1 //'méthode-d'expédition': 1 }); setTimeout(function(){ checkout.update({ 'avis': 1, //'méthode-de-paiement': 1 }); }, 500); }); });
Désormais, le paiement en une étape IWD fonctionne avec les modes de paiement avec frais de service, car l'avis/résumé est actualisé.
J'ai trop de problèmes avec la JIF, alors essayez simplement Paiement en une étape.
je suis désolé mais ce n'est pas tout à fait vrai. car il y a 2 inconvénients, si la première réponse de mise à jour après 5 secondes, la mise à jour totale échouera et le deuxième téléchargement (sur la « commande de révision ») n'est pas adapté à l'UX (interface utilisateur).
pour moi la bonne solution est :
1 embellisseur le onepagecheckout.pack.js
2 après les fonctions « update » et avant les fonctions « setResponse », vous ajouterez ces fonctions après la ligne 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 votre code sera modifié dans
$j(fonction($) {
$j('input[name*="paiement[méthode]"]').live('clic', function() {
checkout.update2({
'revue': 1,
'mode de paiement': 1
});
});
$j('input[name*="méthode_d'expédition"]').live('clic', fonction() {
checkout.update({
'revue': 1
,'mode de paiement': 1
});
setTimeout(fonction(){
checkout.update({
'revue': 1,
});
}, 500);
});
});
Super, je vais tester ça bientôt, merci pour la contribution ! Il y a toujours un défaut étrange : quand le paiement échoue et qu'il revient sur le site, le panier est vide donc on ne peut pas retraiter la commande. As-tu une solution pour ça aussi ? Je vais y réfléchir bientôt aussi.
Salut,
J'ai déjà trouvé le code d'actualisation des avis dans le panier brésilien (basé sur IWD je crois). Je dois trouver un moyen pour que les paiements annulés aboutissent à des commandes annulées, au lieu de commandes en attente. Avez-vous une idée ?
Pour le panier vide, j'utilise du code de vout.nl checkout
éditez /etc/config.xml et mettez ceci après :
onepagecheckout/observer
définir un modèle de panier vide
retirer :
Panier vide
depuisdans /Model/Observer.php ajouter :
fonction publique setEmptyCartTemplate()
{
si (Mage::helper('onepagecheckout')->isOnepageCheckoutEnabled())
{
$cartHelper = Mage::helper('checkout/cart');
$layout = Mage::getSingleton('core/layout');
si (!$cartHelper->getItemsCount()){
$layout->getBlock('checkout.cart')->setTemplate('onepagecheckout/cart/noItems.phtml');
}
}
}
Consultez l'OSC néerlandais pour plus d'informations :
https://github.com/Vout/onestepchecout
J'ai résolu le problème de paiement, mais maintenant j'ai ce problème :
Je souhaite que la section des commentaires et des paiements soit actualisée lorsque je modifie le mode d'expédition. Désormais, les frais de paiement à la livraison ne disparaissent pas tant que je n'ai pas cliqué deux fois sur le même mode d'expédition. Une idée ?
Je vois maintenant le problème de codage, je vais réessayer :
dans IWD/Onepagecheckout/etc/config.xml, supprimez emptyCart de :
modèle
onepagecheckout/observer
supprimerHistoriqueCommentaire
Panier vide
et ajouter :
onepagecheckout/observer
définir un modèle de panier vide
Est-il possible de résumer tout cela en une seule explication complète ?
J'ai le même problème avec IWD one page check out et Lesti FPC ! Super booster magento mais je ne peux pas l'utiliser pour le moment car je ne peux pas recevoir de commande de cette façon. Quelqu'un a-t-il une solution à ce problème ?
Bien cordialement, Kim, Félicitations à l'auteur
Aide-moi!
j'utilise l'ancien One Page Checkout d'IWD.
J'ai quelques erreurs.
Le paiement en une page n'affiche pas les méthodes d'expédition et les méthodes de paiement, bien que je les ai configurées dans le backend d'administration.
http://www.uphinhnhanh.com/images/65044Hinh1.jpg
Lorsque j'ai rempli les informations et cliqué sur l'espace extérieur, mon site a commencé à s'actualiser et à afficher le mode d'expédition, mais n'affiche pas les modes de paiement. Jusqu'à ce que j'actualise manuellement (F5), les modes de paiement s'affichent et je peux finir par payer
http://www.uphinhnhanh.com/images/32861Hinh2.jpg
Je dois actualiser le navigateur, les méthodes de paiement affichent :
http://www.uphinhnhanh.com/images/61163hinh3.jpg
j'utilise magento 1.8
Je ne suis pas un développeur, merci de me guider plus en détail
j'ai essayé de réparer 🙁 mais je n'y arrive pas 🙁
S'il vous plaît, aidez-moi !
Mon anglais est très mauvais, j'espère que vous comprendrez et m'aiderez