フォームから支払いが処理された際に、Stripeにメタデータを送信したいですか?特に、Stripeの決済で簡単に識別できるタグを追加したい場合に便利です。
このチュートリアルでは、WPFormsを通して支払いの一部としてメタデータを送信するために必要なPHPスニペットを紹介します。
始める前に、WPFormsがあなたのサイトにインストールされ、有効化されていること、そしてライセンスが確認されていることを確認してください。
支払いフォームの作成
まず、新しい支払いフォームを作成するか、既存のフォームを編集してフォームビルダーにアクセスします。フォームビルダーで、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を見つけるのにヘルプが必要な場合は、このチュートリアルをご覧ください。

シングル・ペイメントのみの追加
/**
* 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 );

注:フォームとフィールドのID番号は、必ずあなた自身のIDに合わせて変更してください。
以上です!これで、WPFormsからStripeにメタデータを送信する方法を学びました。
次に、Stripe Credit Cardフィールドのサブラベルを変更しますか?Stripeクレジットカードフィールドのサブラベルを変更する方法については、こちらのガイドをご覧ください。
関連
アクションリファレンス:wpforms_stripe_process_complete