ご注意!

この記事には PHP コードが含まれており、開発者を対象としています。このコードは便宜上提供していますが、コードのカスタマイズやサードパーティの開発についてはサポートを提供していません。

追加のガイダンスについては、WPBeginner の カスタムコードの追加方法に関するチュートリアル を参照してください。

閉じる

Stripe決済にメタデータを送信する

フォーム経由で支払いが行われる際に、Stripeにメタデータを送信しますか?これは、Stripeの支払いで簡単に識別できるタグを追加したい場合に特に役立ちます。

このチュートリアルでは、WPForms経由での支払いの一部としてメタデータを送信するために必要なPHPスニペットを紹介します。


開始する前に、WPFormsがサイトにインストールされ、有効化されていること、およびライセンスが検証済みであることを確認してください。

決済フォームの作成

まず、新しい支払いフォームを作成するか、既存のフォームを編集してフォームビルダーにアクセスする必要があります。フォームビルダーで、フォームにStripeクレジットカードフィールドを追加してください。

フォームにStripeクレジットカードフィールドを追加する

また、フォームがStripeの支払いを受け付けるように設定する必要があります。フォームでのStripeの設定に支援が必要な場合は、このドキュメントを確認してください

メタデータをStripeに送信するスニペットの追加

Stripeの支払いが処理される際にメタデータを送信するサイトへのスニペットを追加する時期になりました。

サイトへのスニペットの追加に支援が必要な場合は、このチュートリアルを参照してください

単一支払いと初回サブスクリプション支払いの両方に追加

/**
 * Send metadata to Stripe when payment is processed for single payments and initial subscription payments.
 *
 * @link  https://wpforms.com/developers/how-to-send-metadata-to-stripe-payments/
 */
 
function wpf_stripe_single_payment_and_initial_subscription_payment_custom_metadata( $fields, $form_data, $entry_id, $payment ) {
    if ( ! ( $payment instanceof  \WPForms\Vendor\Stripe\PaymentIntent ) && ! ( $payment instanceof \WPForms\Vendor\Stripe\Charge ) ) {
        return;
    }
 
    // Check if the field with id equals 3 value exists and assign it.
    if ( isset( $fields[3][ 'value' ] ) ) {
        $payment->metadata[ 'something' ] = $fields[3][ 'value' ];
    }
 
    // Assign fixed value (no additional checks required).
    $payment->metadata[ 'key' ] = 'some value for single payment';
 
    $payment->save();
}
 
add_action( 'wpforms_stripe_process_complete', 'wpf_stripe_single_payment_and_initial_subscription_payment_custom_metadata', 10, 4 );

上記のコードスニペットでは、2つの形式のメタデータを送信しています。1つは特定のフォームフィールド$fields[3][ 'value' ]から割り当てられます。これは、IDが3のフォームフィールドに入力された値が何であれ、それを取得してStripeに送信することを意味します。

metadata[ 'key' ] = 'some value for single payment';も送信されますが、ユーザーが入力したフォームから値を取得するのではなく、コード自体でこれを設定します。

スニペットで必要なものに合わせて、それぞれを変更することを覚えておく必要があります。たとえば、送信したいフィールドIDに合わせてフィールドID3を変更する必要があるほか、some value for single paymentのテキストも変更する必要があります。

注意:フィールドIDを見つける場所、または特定のフォームをターゲットにしてフォームIDを見つけるのに支援が必要な場合は、このチュートリアルを確認してください

支払いが処理される際にStripeに送信されたメタデータが表示されるようになります

単一支払いのみに追加

/**
 * Send metadata to Stripe when payment is processed for single payments only.
 *
 * @link  https://wpforms.com/developers/how-to-send-metadata-to-stripe-payments/
 */
 
function wpf_stripe_single_payment_custom_metadata( $fields, $form_data, $entry_id, $payment, $subscription ) {
 
    if ( ! empty( $subscription->id ) ) {
        return;
    }
 
    if ( ! ( $payment instanceof  \WPForms\Vendor\Stripe\PaymentIntent ) && ! ( $payment instanceof \WPForms\Vendor\Stripe\Charge ) ) {
        return;
    }
 
    // Check if the field with id equals 3 value exists and assign it.
    if ( isset( $fields[3][ 'value' ] ) ) {
        $payment->metadata[ 'something' ] = $fields[3][ 'value' ];
    }
 
    // Assign fixed value (no additional checks required).
    $payment->metadata[ 'key' ] = 'some value for single payment';
 
    $payment->save();
}
 
add_action( 'wpforms_stripe_process_complete', 'wpf_stripe_single_payment_custom_metadata', 10, 5 );

サブスクリプション支払いのみに追加(単一支払いまたは初回サブスクリプション支払いを除く)

/**
 * Send metadata to Stripe when payment is processed for subscription payments (excluding single payments and initial subscription payments).
 *
 * @link  https://wpforms.com/developers/how-to-send-metadata-to-stripe-payments/
 */
 
function wpf_stripe_subscription_custom_metadata( $fields, $form_data, $entry_id, $payment, $subscription ) {
    if ( ! ( $subscription instanceof \WPForms\Vendor\Stripe\Subscription ) ) {
        return;
    }
 
    // Check if the field with id equals 3 value exists and assign it.
    if ( isset( $fields[3][ 'value' ] ) ) {
        $subscription->metadata[ 'something' ] = $fields[3][ 'value' ];
    }
 
    // Assign fixed value (no additional checks required).
    $subscription->metadata[ 'key' ] = 'some value for subscription';
 
    $subscription->save();
}
 
add_action( 'wpforms_stripe_process_complete', 'wpf_stripe_subscription_custom_metadata', 10, 5 );

よくある質問

これらは、Stripe支払いでのメタデータの使用に関するよくある質問への回答です。

Q: 複数のフィールドを送信して特定のフォームをターゲットにするにはどうすればよいですか?

A: 1つのフォームをターゲットにして複数のメタデータフィールドを送信するには、以下のコードスニペットを使用してください。

/**
 * Send metadata to Stripe when payment is processed based on form ID.
 *
 * @link  https://wpforms.com/developers/how-to-send-metadata-to-stripe-payments/
 */
 
function wpf_stripe_single_payment_and_initial_subscription_payment_custom_metadata_multiple( $fields, $form_data, $entry_id, $payment ) {
     
        // Only run this code on form ID 2614
        if ( absint( $form_data[ 'id' ] ) !== 2614 ) {
        return;
    }
 
    if ( ! ( $payment instanceof  \WPForms\Vendor\Stripe\PaymentIntent ) && ! ( $payment instanceof \WPForms\Vendor\Stripe\Charge ) ) {
        return;
    }
 
    // Capture the value listed in the field ID 0
        if ( isset( $fields[0][ 'value' ] ) ) {
        $payment->metadata[ 'Name' ] = $fields[0][ 'value' ];
    }
 
        // Capture the value listed in the field ID 1
    if ( isset( $fields[1][ 'value' ] ) ) {
        $payment->metadata[ 'Email' ] = $fields[1][ 'value' ];
    }
 
        // Capture the value listed in the field ID 2
    if ( isset( $fields[2][ 'value' ] ) ) {
        $payment->metadata[ 'Phone' ] = $fields[2][ 'value' ];
    }
 
        // Capture the value listed in the field ID 3
    if ( isset( $fields[3][ 'value' ] ) ) {
        $payment->metadata[ 'Address' ] = $fields[3][ 'value' ];
    }
 
    $payment->save();
}
 
add_action( 'wpforms_stripe_process_complete', 'wpf_stripe_single_payment_and_initial_subscription_payment_custom_metadata_multiple', 10, 4 );
このコードスニペットを使用すると、複数のフィールドにメタデータを送信したり、特定のフォームのみにメタデータを送信したりできます。

注意:フォームとフィールドのID番号を自分のIDに合わせて変更してください。

これで完了です!WPFormsからStripeにメタデータを正常に送信する方法を学びました。

次に、Stripeクレジットカードフィールドのサブラベルを変更しますか?Stripeクレジットカードフィールドのサブラベルを変更する方法を学ぶためのガイドを確認してください。

アクション参照: wpforms_stripe_process_complete