Stripe Paymentsへのメタデータの送信

フォームから支払いが処理された際に、Stripeにメタデータを送信したいですか?特に、Stripeの決済で簡単に識別できるタグを追加したい場合に便利です。

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


始める前に、WPFormsがあなたのサイトにインストールされ、有効化されていること、そしてライセンスが確認されていることを確認してください。

支払いフォームの作成

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

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

また、Stripeでの支払いを受け付けるようにフォームを設定する必要があります。フォームにStripeを設定する際にサポートが必要な場合は、こちらのドキュメントをご覧ください

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

次に、Stripeの支払い処理時にメタデータを送信するスニペットをサイトに追加します。

スニペットをサイトに追加する際にサポートが必要な場合は、こちらのチュートリアルをご覧ください

1回払いと初回サブスクリプション払いの両方への追加

/**
 * 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つの形式のメタデータを送信している。ひとつは $fields[3][ 'value' ].これは、IDが 3それをStripeに送ります。

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

スニペットで必要なものと一致させるために、それぞれを変更する必要があります。例えば、フィールドID3を送信したいフィールドIDと一致するように変更する必要があります

注:フィールド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 );

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

/**
 * 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 );
次のコードスニペットを使用すると、特定のフォームだけでなく、複数のフィールドでメタデータを stripe に送信できます。

注:フォームとフィールドのID番号は、必ずあなた自身のIDに合わせて変更してください。

以上です!これで、WPFormsからStripeにメタデータを送信する方法を学びました。

次に、Stripe Credit Cardフィールドのサブラベルを変更しますか?Stripeクレジットカードフィールドのサブラベルを変更する方法については、こちらのガイドをご覧ください。

アクションリファレンス:wpforms_stripe_process_complete