WooCommerce + Stripeで、クレジットカードの利用明細表記をカスタマイズする方法

WooCommerceでStripeを利用したクレジットカード決済を実施している場合、顧客のクレジットカード明細には、通常以下のどちらかが記載されます。

- Stripeアカウントで設定した「明細書表記」
- WooCommerce管理画面で設定した「明細書表記」

![スクリーンショット 2022-06-13 14.49.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366300/6424ff30-b40d-b975-d4fb-fe7489522618.png)

ですが、提供したい商品やサービスによっては、「特定の商品では、別の表記を記載したい」場合もあります。

今回は、WooCommerceのフックを利用して、明細書表記をカスタマイズする方法を紹介します。

## 明細書表記のカスタマイズは、`wc_stripe_generate_create_intent_request`フックを利用する

`wc_stripe_generate_create_intent_request`フックは、StripeのAPIを呼び出してPayment Intentを作成する際の値を変更できるフックです。

明細書表記のカスタマイズは、Payment Intentのリクエストパラメータを変更する必要があるため、このフックを利用します。

```php
<?php
/*
Plugin Name: Stripe Custom code plugin
Description: Example WordPress plugin to customize Stripe payment feature
Version: 100
*/

add_filter( "wc_stripe_generate_create_intent_request", function ( $request ) {
    return $request;
} );
```

## 漢字・カタカナの明細書表記を追加する方法

Stripeでは、2022年夏から漢字・カタカナでの明細表記をサポートしています。

ただしプラグイン設定画面には、漢字・カタカナでの設定を行う画面がありません。

以下のようなコードをプラグインとして追加することで、設定が可能です。

```php
<?php
/*
Plugin Name: Stripe Custom code plugin
Description: Example WordPress plugin to customize Stripe payment feature
Version: 100
*/

add_filter( "wc_stripe_generate_create_intent_request", function ( $request ) {
    $request[ "payment_method_options" ] = [
        "card" => [
            "statement_descriptor_suffix_kanji" => "漢字明細書表記",
            "statement_descriptor_suffix_kana" => "カタカナメイサイ"
        ]
    ];
    return $request;
} );
```

なお、ダッシュボードからアカウント全体に設定することも可能です。

詳細は、以下の記事をご確認ください。

https://qiita.com/hideokamoto/items/8eca4e1680f8aeb12ce8

## 商品ごとに、動的に明細表記を変更する

店舗名ではなく、ブランド・商品名を明細に載せたい場合もあります。

その場合は、`wc_stripe_generate_create_intent_reques`フックを利用し、`WC_Order`から必要な情報を取得して、動的にカスタマイズします。

```php
<?php
/*
Plugin Name: Stripe Custom code plugin
Description: Example WordPress plugin to customize Stripe payment feature
Version: 100
*/

add_filter( "wc_stripe_generate_create_intent_request", function ($request, $order, $prepared_source) {
    $item_count = $order->get_item_count();
    if ( 1 === $order->get_item_count() ) {
        $request[ "statement_descriptor" ] = "CUSTOM SUFFIX";
        $request[ "payment_method_options" ] = [
            "card" => [
                "statement_descriptor_suffix_kanji" => "漢字明細書表記",
                "statement_descriptor_suffix_kana" => "カタカナメイサイ"
            ]
        ];
    }
    return $request;
}, 10, 2);
```

`$order`に`WP_Order`データが含まれていますので、これを利用して、「特定カテゴリ・IDの商品では、明細を変更する」ことができます。

注意点としては、「英語」「漢字」「カタカナ」それぞれを入力するフィールドが異なることです。

そのため、「商品名をそのまま使う」のではなく、カスタムフィールドで設定するか、コードに定義してしまうかでの対応が必要です。

また、明細は１決済単位での設定のため、複数商品の注文には設定が難しいケースがあることにもご注意ください。

## 明細書表記設定の注意点
### どの表記が利用されるかは、カード会社次第
Stripeからカード会社に決済リクエストを送信する際に、明細表記情報をあわせて送信します。

ですが、送信した表記データのうち、どれが実際に発行された明細へ記載されるかは、カード会社とそのシステム次第です。

カード会社やそのシステムによっては、「漢字・カタカナを設定しても、英語の明細が表示される」ケースも発生しますのでご了承ください。

顧客向けのFAQなどに、「英語の明細表記が表示されるケースもあること」をおすすめします。

### Stripeダッシュボードでは、APIリクエストログから確認する必要がある

明細書表記のデータが送信されたかどうかは、APIの呼び出し記録を確認する必要があります。

ダッシュボードで、該当する支払いを見つけた後、[イベントとログ]セクションの[イベントデータ]を確認しましょう。

![スクリーンショット 2022-10-26 17.04.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366300/abaec30f-64b7-8b91-6750-40d471cbb1d4.png)


## [告知] 東京WordPress Meetup 2022 Fallにて、Stripe <> WordPress / WooCommerceなセッションをします

WordPress Meetupコミュニティの方々のご厚意で、StripeとWordPress / WooCommerceについてのセッションを持たせていただけることになりました。

2022年11月6日日曜日に、東京新宿区のCASE Shinjikuにて14時から開催です。

https://www.meetup.com/tokyo-wordpress-meetup/events/288173891/

WooCommerceの日本ローカライズプラグイン作者のShohei Tanakaさんも参加されますので、ぜひご参加ください。