• Resolved petschko

    (@petschko)


    Moin,

    wir wollten den Paypal-Express Button nutzen, dieser funktioniert ziemlich super, bis auf eine Kleinigkeit.

    Wir haben 2 Angaben in den meisten Variablen Produkten (Farbe & Geschlecht), diese sind beide erforderlich um das Produkt zu kaufen. In manchen Produkten haben wir eine Vorauswahl einzelner Angaben, wenn ein Feld nicht ausgew?hlt ist, ist der normale “In den Warenkorb”-Button deaktiviert, was richtig ist, allerdings kann ich mit fehlenden Angaben via Paypal-Express bestellen.

    Ich kann mir hier selbst mit einen kleinen Script helfen, welches den Button deaktiviert. Allerdings denke ich man sollte dieses Verhalten unbedingt fixen, da sonst Bestellungen mit fehlenden Angaben durchgehen =)

Viewing 7 replies - 1 through 7 (of 7 total)
  • Plugin Support Andreas W.

    (@aweissinpsyde)

    Hallo @petschko

    entschuldige die versp?tete Antwort. Wir selbst k?nnen hier leider keine Ver?nderungen vornehmen, da der Button und dessen Funktionen genau den Vorgaben von PayPal entsprechen muss und leider ist die von dir gewünschte Funktion nicht vorgesehen.

    Ich glaube auch das PayPal dies so nicht zulassen würde. Du müsstest leider hier auf dein eigenes Skript zugreifen.

    Mit besten Grüssen
    Andreas

    Thread Starter petschko

    (@petschko)

    Vielen dank für die Antwort^^

    Leider ergibt sich mir hier der Sinn nicht, weswegen man zb nen T-Shirt ohne Angabe zb der Farbe/Gr??e kaufen kann? Also mit dem Script kann ich dies selbst verhindern, leider verstehe ich nicht weswegen man Produkte mit fehlenden Angaben zum kauf freigibt. Dies scheint nicht ganz durchdacht seitens PP. Am ende muss der Shopbetreiber hinterher telefonieren

    Siehe auch: https://www.ads-software.com/support/topic/bugexpress-checkout-button-on-single-product-allows-purchase-of-parent-products/
    Gleiches Problem.

    Andere Express-Checkout-L?sungen schalten den Button in dieser Situation nicht frei.

    Edit: Wir sind übrigens drauf gekommen, weil eben genau unvollst?ndige Produkte bei einem Shop auf dem Lieferschein und in den Bestellungen gelandet sind.

    Thread Starter petschko

    (@petschko)

    ?rgerlich, leider wird man hier gerne abgewimmelt mit “Paypal will das so”, sodass man sich selbst nen Hotfix-Script schreiben muss, ich kann dies gerne teilen wenn ich dazu komme

    Ansonsten erst mal überall Default-Werte einstellen (nervig aber kann auch helfen bei wenig Produkten)

    • This reply was modified 5 years, 1 month ago by petschko.
    Plugin Support Andreas W.

    (@aweissinpsyde)

    Hallo @petschko

    leider sind hier hier wirklich an PayPAl zum Code Review gebunden. Wir selbst k?nnen keine eigenst?ndigen Entwicklungen ins Plugin einbringen, da wir das Plugin im Auftrag von PayPal entwickelten.

    Gerne kannst du mir deinen Hot-Fix einmal unter [email protected] zusenden. Ich werde diesen gerne weitergeben, sodass evtl. dieser aufgenommen werden kann.

    Dieses Ticket wird aus diesen Gründen geschlossen, da wir in diesem Fall leider nicht weiterhelfen k?nnen, du aber gerne hier auch deinen Hot-Fix bereitstellen kannst. Hier findest du auch mehr Informationen bzgl. der Integrate PayPal PLUS – Germany https://developer.paypal.com/docs/paypal-plus/germany/integrate/

    Mit besten Grüssen
    Andreas

    Thread Starter petschko

    (@petschko)

    Der Hotfix ist denke ich nicht die eleganteste L?sung, sprich man kann das sicherlich anders l?sen. Ich habe einfach nur ein kleines JavaScript geschrieben, welches das PayPal-Iframe versteckt, bis alle variationen ausgew?hlt sind.

    Am liebsten würde ich den Button deaktivieren, da es aber ein IFrame ist, war es das leichteste dieses einfach zu verstecken.

    Wer Lust hat, kann sich das snippet hier einfach nehmen, die Funktion addPPPExpressValidation() muss noch nachdem sie Seite geladen hat, gecalled werden.
    Das Script sollte man ggf nur auf Produktseiten einbinden, ist aber auch dazu f?hig in eine globale JS eingebunden zu werden. Die Funktionen verhindern weiteres ausführen, wenn es sich um eine nicht Produkt-Seite bzw um eine einzel Produkt-Seite handelt.

    
    /**
     * Adds the PayPal-Express button Validation
     */
    function addPPPExpressValidation() {
    	let variationForm = document.getElementsByClassName('variations_form cart');
    
    	// Exit on any other product/page which dont have this element
    	if(! variationForm.length)
    		return;
    
    	// Make sure to get only the variation selects
    	let variationTable = document.getElementsByClassName('variations');
    
    	// Add Event-Listener to all variation selects
    	let variationSelects = variationTable[0].getElementsByTagName('select');
    	for(let i = 0; i < variationSelects.length; i++) {
    		variationSelects[i][window.addEventListener ? 'addEventListener' : 'attachEvent'](window.addEventListener ? 'change' : 'onchange', function (variations) {
    			return function (ev) {
    				disablePPPExpressButtonOnEmptyVariation(variations);
    			};
    		}(variationSelects), false);
    	}
    
    	// Also run once to ensure the pp button is vanish before (if no user interaction)
    	disablePPPExpressButtonOnEmptyVariation(variationSelects);
    }
    
    /**
     * Disables (aka hide) the PayPal-Plus-Button, when a variation is not filed out
     *
     * @param {HTMLCollection} variations - Variation-selects Element-list
     */
    function disablePPPExpressButtonOnEmptyVariation(variations) {
    	if(! variations || ! variations.length)
    		return;
    
    	// Get all variation selects and check if they are filled
    	let variationsFilled = true;
    	for(let i = 0; i < variations.length; i++) {
    		if(! variations[i].value) {
    			variationsFilled = false;
    			break;
    		}
    	}
    
    	// Get the Paypal-"Button"-Container
    	let paypalExpressContainer = document.getElementsByClassName('woo-paypalplus-checkout-button');
    
    	if(paypalExpressContainer.length) {
    		paypalExpressContainer = paypalExpressContainer[0];
    
    		// Disable/show the button
    		if(variationsFilled)
    			paypalExpressContainer.style.display = '';
    		else
    			paypalExpressContainer.style.display = 'none';
    	}
    }
    

    Sofern da irgendwo nen wurm drinnen ist einfach schreiben, ich fixe und update dann den Code hier (soweit lief aber alles 1A)

    • This reply was modified 5 years, 1 month ago by petschko.
    • This reply was modified 5 years, 1 month ago by petschko.

    @petschko Danke für den Code. Ich werde es einbauen.

    Hier mal die Rückmeldung von PayPal zu der Geschichte:

    Hallo Cedus,
    Vielen Dank, dass Sie sich mit dem technischen Support von PayPal in Verbindung gesetzt haben.
    leider kann ich zu dem Plugin selbst nicht sagen.
    PayPal führt das aus, was vom Shop kommt. Wenn also im Shop der Artikel ausgew?hlt hat, ist hier nicht Paypal involviert.
    PayPal ist erst ab dem Checkout (www.paypal.com) involviert. Denn da haben Sie ja schon die Artikelauswahl getroffen.

    Es gibt aber auch zu beachten das PayPal Plus KEINEN express shortcut butten hat.
    wenn Sie in ihrem Shop den Shortcut haben, dann ist das ein anderes Modul und hat NICHTS mit PPPLus zu tun.

    PPPlus lauft im Frame von PayPal.

    Mit freundlichen Grü?en

    Tom
    Professional Services PayPal

    Die geht zwar auch etwas am Thema vorbei, aber dann gibt’s ja wenigstens Gemeinsamkeiten. ??

Viewing 7 replies - 1 through 7 (of 7 total)
  • The topic ‘PP-Express & fehlende Angaben im Variables-Produkt’ is closed to new replies.