# Express Checkout モーダルで特定の配送方法を無効にする

Express Checkout モーダルから特定の配送方法を削除します。

**店舗での受け取り**など特定の配送方法では、集荷先住所など、顧客に追加情報を入力していただく必要があります。Express Checkout ウォレットは支払いモーダルをカスタマイズする方法を提供していないため、これらの配送方法は Express Checkout ウォレットには適していません。

この種の配送方法を使用する場合は、モジュールのカスタマイズを使用して Express Checkout に対して配送方法を無効にすることができます。

## 新しいモジュールを作成する

次のディレクトリ構造で新しいモジュールを作成します。`Vendor` をご希望のベンダー名に置き換えます。

```
app/code/Vendor/StripeCustomizations/
├── etc/
│   └── module.xml
├── Plugin/
│   └── Api/
│       └── Response/
│           └── ECEResponse.php
└── registration.php
```

`registration.php` 内で、モジュールを Magento に登録します。

```php
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::MODULE,
    'Vendor_StripeCustomizations',
    __DIR__
);
```

`etc/module.xml` 内で、モジュールを定義し、Stripe モジュールの後に読み込まれるように依存関係を設定します。

```xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
    <module name="Vendor_StripeCustomizations" setup_version="1.0.0">
        <sequence>
            <module name="StripeIntegration_Payments"/>
        </sequence>
    </module>
</config>
```

`etc/di.xml` 内で、次のプラグインを定義します。

```xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <type name="StripeIntegration\Payments\Model\Config">
        <plugin
            name="vendor_stripecustomizations_eceresponse_plugin"
            type="Vendor\StripeCustomizations\Plugin\Api\Response\ECEResponse"
            sortOrder="10"
            disabled="false" />
    </type>
</config>
```

`Plugin/Api/Response/ECEResponse.php` 内で、afterMethod インターセプターを作成します。

```php
<?php
namespace Vendor\StripeCustomizations\Plugin\Payments;

class ECEResponse
{
    /**
     * After plugin for getShippingRatesForQuoteShippingAddress method.
     *
     * @param $subject
     * @param array $result
     * @return array
     */
    public function afterGetShippingRatesForQuoteShippingAddress($subject, array $result)
    {
        $idToRemove = "store_pickup";

        return array_filter($result, function ($shippingRate) use ($idToRemove) {
            return $shippingRate['id'] !== $idToRemove;
        });
    }
}
```

モジュールを有効にします。

```sh
php bin/magento module:enable Vendor_StripeCustomizations
php bin/magento setup:upgrade
php bin/magento cache:clean
php bin/magento cache:flush
```
