# Zahlungsarten im Plugin inaktiv setzen / set payment mean to inactive in plugin

**URL:** <https://forum.shopware.com/t/zahlungsarten-im-plugin-inaktiv-setzen-set-payment-mean-to-inactive-in-plugin/37076>\
**Category:** Programmierung\
**Created:** [30. Mai 2016 um 15:11 UTC](https://forum.shopware.com/t/zahlungsarten-im-plugin-inaktiv-setzen-set-payment-mean-to-inactive-in-plugin/37076 "2016-05-30T15:11:24Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Daniel\_Bottner](https://avatars.discourse-cdn.com/v4/letter/d/a5b964/32.png) [@Daniel\_Bottner](https://forum.shopware.com/u/Daniel_Bottner)\
**Post date:** [30. Mai 2016 um 15:11 UTC](https://forum.shopware.com/t/zahlungsarten-im-plugin-inaktiv-setzen-set-payment-mean-to-inactive-in-plugin/37076/1 "2016-05-30T15:11:24Z")

</div>

Hallo,

in einem unserer Plugins benötige ich die Möglichkeit abhängig von bestimmten Vorgängen Zahlungsarten auf&nbsp;inaktiv zu setzen.

Das ganze ist im Frontend und der Hook ist z.B. am ‘Enlight\_Controller\_Action\_Frontend\_Checkout\_shippingPayment’ Event.

Dort würd ich gern dynamisch den Wert für $\_SESSION[‘sPayments’][1][‘active’] auf 0 setzen.  
Ziel ist es dem Kunden nur noch verfügbare Zahlungsmethoden anzuzeigen.

Ist das programatisch möglich oder muss ich den Umweg über eigene Session variablen und Filter in template blocks gehen?

---

<div class="post-metadata">

**Author:** ![MatthiasH](https://avatars.discourse-cdn.com/v4/letter/m/47e85d/32.png) [@MatthiasH](https://forum.shopware.com/u/MatthiasH)\
**Post date:** [30. Mai 2016 um 16:55 UTC](https://forum.shopware.com/t/zahlungsarten-im-plugin-inaktiv-setzen-set-payment-mean-to-inactive-in-plugin/37076/2 "2016-05-30T16:55:49Z")

</div>

Wenn du eine aktuelle Shopware Version einsetzt solltest du dich auch Plugintechnisch an das Riskmanagement andocken können, das filtert dir dann die unerwünschten Zahlungsweisen von Haus aus raus.

&nbsp;

Grüße Matthias

---

<div class="post-metadata">

**Author:** ![Daniel\_Bottner](https://avatars.discourse-cdn.com/v4/letter/d/a5b964/32.png) [@Daniel\_Bottner](https://forum.shopware.com/u/Daniel_Bottner)\
**Post date:** [31. Mai 2016 um 07:21 UTC](https://forum.shopware.com/t/zahlungsarten-im-plugin-inaktiv-setzen-set-payment-mean-to-inactive-in-plugin/37076/3 "2016-05-31T07:21:29Z")

</div>

Hallo Matthias,

danke das du dir die zeit für eine Antwort genommen hast.&nbsp;Ich hätte dazu zwei Fragen.

1. Ab welcher Version ist dies dabei? Das plugin was ich erweitere war bislang auch für SW4 lauffähig, ich nehme an das wird dann nicht mehr möglich sein.
2. Gibt es dazu irgendwo eine Doku wie man sich da ‘ran hängt’? Sehr gern auch in Englisch.

Soweit schonmal danke für den Hinweis.

---

<div class="post-metadata">

**Author:** ![Heiner\_Lohaus](https://avatars.discourse-cdn.com/v4/letter/h/b5a626/32.png) [@Heiner\_Lohaus](https://forum.shopware.com/u/Heiner_Lohaus)\
**Post date:** [8. Juli 2016 um 08:59 UTC](https://forum.shopware.com/t/zahlungsarten-im-plugin-inaktiv-setzen-set-payment-mean-to-inactive-in-plugin/37076/4 "2016-07-08T08:59:10Z")

</div>

Hallo,

auch das ist&nbsp;im Klarna-Plugin enthalten. Dort haben die “sManageRisks”-Methode gehookt:  
&nbsp;

```
        $this->subscribeEvent(
            'sAdmin::sManageRisks::after',
            'onAfterManageRisks'
        );

    /**
     * @param Enlight_Hook_HookArgs $args
     * @return bool|null
     */
    public function onAfterManageRisks($args)
    {
        $args = $args->getArgs();
        $userData = $args[2];

        if (empty($userData['billingaddress']['company']) && empty($userData['shippingaddress']['company'])) {
            return null; // Nichts machen
        }

        $paymentIds = $this->getKlarnaPaymentIds();
        $currentPaymentId = $args[0];
        if (!in_array($currentPaymentId, $paymentIds)) {
            return null;
        }

        if (!empty($userData['additional']['country']['countryiso'])) {
            $country = $userData['additional']['country']['countryiso'];
            $countries = array('SE', 'FI', 'NO', 'DK');
            if (in_array($country, $countries)) {
                if ($currentPaymentId == $this->getInvoicePaymentId()) {
                    return null;
                } else {
                    return true; //Zahlungsart sperren
                }
            } else {
                return true;
            }
        }
    }

```

Gruß Heiner

---

<div class="post-metadata">

**Author:** ![Daniel\_Bottner](https://avatars.discourse-cdn.com/v4/letter/d/a5b964/32.png) [@Daniel\_Bottner](https://forum.shopware.com/u/Daniel_Bottner)\
**Post date:** [8. Juli 2016 um 09:04 UTC](https://forum.shopware.com/t/zahlungsarten-im-plugin-inaktiv-setzen-set-payment-mean-to-inactive-in-plugin/37076/5 "2016-07-08T09:04:47Z")

</div>

Auch hier danke für den Hinweis.  
ich werde mir den hook ansehen und schauen ob ich damit vorran komme.
