こちらのページでは、PHPで作成されたフォームとの連携についてご案内しております。

    Digima PHPクライアントを使用し、PHPで作成されたフォームと連携します。

     

    連携に必要となる各種コードについて

    Digimaを導入いただいた会社様については、フォーム連携のサポートを行っております。フォーム連携をご希望の場合、まずはサポート窓口へご連絡ください。

    推奨環境について

    PHPクライアントの推奨バージョンは、PHP 7.3以上のバージョンとなります。バージョンを満たしていない場合、動作の保証ができかねますため、バージョンアップをご検討ください。

    Digima PHPクライアントのインストール

    Digima PHPクライアントをサーバーにインストールします。

      1. 以下のURLより、Digima PHPクライアントをダウンロードします。(https://drive.google.com/file/d/1rBIYzj7CLkd-Cyv6afpwcbD-M-janxlB/view?usp=sharing
      2. ファイル解凍後、取り出したフォルダ名を “digima”とし、ウェブフォームの送信を行なっているサーバー上にコピーします。フォルダ内へはウェブサーバーのユーザーからのアクセスが可能となります。(通常“wwwdata”)サーバー上の配置例: "/var/www/digima"
      3. Digima PHPクライアントで使用するコンポーザーをインストールします。インストール方法についてはこちらをご参考ください。
      4. Digima PHPクライアントをインストールしたフォルダー(例: "/var/www/digima")で以下のコマンドを実行します。
        composer install -o

    手順③➃については任意となりますが、設定を推奨いたします。

    ホスティングサーバーでコンポーザーをご使用になれない場合は設定不要です。

    Digima PHPクライアントの推奨バージョンはPHP 7.3以上となります。推奨バージョンでない場合、動作の保証は行えません。

    アカウントコード・フォームコードの設定

    アカウントコード・フォームコードは、Digimaサポートよりご案内いたします。

     

    <アカウントコード>

    Digima Clientオブジェクトのインスタンスを生成します。

    $client = new \Digima\Client('YOUR_DIGIMA_ACCOUNT_CODE');

    <フォームコード>

    Formオブジェクトを作成します。

    $form = $client->makeForm('YOUR_DIGIMA_FORM_CODE');

     

     

    ページ情報の設定

    以下のようにフォームのページタイトルや URLを設定することができます。

    $form->setPageTitle('Contact us!');
    $form->setPageUrl('https://www.domain.com/contact');

    項目コードの設定

    Digimaサポートよりご案内する「Digima項目コード」を設定します。Digima項目コード一覧はこちらからも確認できます。

    項目のフィールドと入れ子の設定

    前提として、フォーム項目に対して「フィールド」「入れ子」「Digima項目コード」の3つの設定が必要です。

    フィールドの設定

    Digima の顧客情報に存在する項目には2つの種別があります。

    • 基本項目 : 全ての Digima 顧客情報に共通して設定された項目 (メールアドレス、名前など)
    • カスタム項目 : アカウントに独自で追加作成できる項目

    Formオブジェクトの “contact()” の後に 基本項目であれば“staticFields()” 、カスタム項目であれば “customFields()” を設定し、フィールド名を指定してください。

    入れ子の設定

    基本項目のうち、以下に該当する項目は入れ子の設定が必要となります。

    <記述例>

    基本項目「メールアドレス」「姓」「名」と、注文住宅問い合わせ項目「問い合わせモデルハウス名」「請求カタログ名」、カスタム項目「関心」を設定する場合

    // 基本項目
    $form-contact()-staticFields()-setMany(array(
      'email'    => $_POST['email'],
      'first_name' => $_POST['first_name'],
      'Last_name'  => $_POST['last_name'],
    ));
      
    // 基本項目(入れ子)
    $form-contact()-staticFields()-set('real_estate_construction_inquiry', array( ‘model_house_name’ => $_POST['real_estate_construction_inquiry_model_house_name'], ‘preferred_catalog_name’=> $_POST['real_estate_construction_inquiry_preferred_catalog_name'], )); // カスタム項目 $form-contact()-customFields()-set('interest', $_POST['interest']);

    参考:テスト記述ファイル

    上の例では直接 $_POSTを使用していますが、実際のコードではユーザーの入力を必ずサニタイズしてください。

     

    電話番号のリクエスト時の注意

    電話番号を登録する場合、フォームへの入力値からハイフン等の記号を除外し、数値のみに加工した
    上でリクエストしてください。

    例)000-0000-0000 → 00000000000

     

    カスタム項目[日時形式]のリクエスト時の注意

    日時形式のカスタム項目について、フォームへの入力値は UTC(協定世界時)としてリクエストしてください。

    • 日時形式:「YYYY-MM-DD HH:mm:ss」    例)2018-02-22 12:34:33

     

    顧客情報の認証

    問い合わせフォームの認証には “form”インスタンスの “validate()” を使います。

    フォームのデータは記録されませんが認証エラーが発生したかどうか確認できます。

    $response = $form->validate();

     

    顧客情報の登録

    問い合わせフォームのデータをDigimaに登録したい場合は “form”オブジェクトの “submit()” を呼び出します。

    $response = $form->submit();

     

    エラーのリクエスト

    “validate()” や “submit()” を呼び出した場合、結果は以下の様に表示されます。

    • 問題なくリクエストされた場合:true
    • エラーが1つでも発生した場合:false

    何らかの問題が発生した場合は “hasError()” でも確認が行えます。

    また、“getErrors()” で発生したエラー全てを確認することができます。

     

    $form->submit();
      
    if ($form->hasError()) {
      
      // Loop through all the errors and check them foreach ($form->getErrors() as $error)
      
    { switch ($error->getCode()) {
      
      case \Digima\Errors\Error::TYPE_DATA_VALIDATION_ERROR:
      // Handle data validation errors
    $field = $error->getProperty();
    $message = $error->getMessage();
      // ..
    break;
      case \Digima\Errors\Error::TYPE_REQUEST_ERROR:
      // Handle request error response
      // ...
    break;
      default:
      // Handle other errors
      // ...
    break;
      }
     }
    }
    

     

    エラーコード一覧

    エラーのコードとメッセージから、どんなエラーかを特定することができます。

    項目が認証されなかった場合のエラー

    \Digima\Errors\Error::TYPE_DATA_VALIDATION_ERROR
    • 値が大き過ぎるか文字数が多すぎる
    • 値が有効でない
    • リソースIDがDigima 内に存在しない

    詳細はエラーの “プロパティ” と “メッセージ” を確認してください。

    リクエストが認証されなかった場合のエラー

    \Digima\Errors\Error::REQUEST_UNAUTHORIZED
    • Digimaアカウントコードが正しくない
    • ウェブフォームコードが正しくない
    • [IP制限オプション利用]ウェブサイトの IP アドレスがDigimaで許可されていない

    その他のエラー

    \Digima\Errors\Error::REQUEST_METHOD_NOT_ALLOWED
    • HTTP 形式 (GET, POST, PUT, DELETE 等) が使用できない
    \Digima\Errors\Error::REQUEST_RESOURCE_NOT_FOUND
    • リクエストされたURLが無効である
    \Digima\Errors\Error::RESPONSE_INVALID_FORMAT
    • レスポンスの形式が無効です

    上の3つは、APIが変更され、PHPクライアントが失効している可能性があります。PHPクライアントのアップデートをしてください。

     

    \Digima\Errors\Error::SERVICE_ERROR

    DigimaのAPIが使用できていない可能性があります。エラーが続く場合はサポートまでご連絡ください。

    \Digima\Errors\Error::UNKNOWN_ERROR

    エラーの特定ができない。ネットワーク接続によるエラーの場合などが考えられます。

     

    特定の項目に関するエラー

    特定の項目に関するエラーの情報をリクエストするには、項目名の前に基本項目であれば“static.”、カスタム項目であれば “custom.”と入力します。

     

    例えば “hasFieldErrors()” を使って項目に1つもしくは複数のエラーがあるかどうか確認できます。

    $form->hasFieldErrors('static.email');


    特定の項目について一覧でエラーを確認したい場合は “getFieldErrors()” を使用します。

    $emailErrors = $form->getFieldErrors('static.email');

    $genderErrors = $form->getFieldErrors('custom.gender');

     

    これまでのまとめ

    これまでの内容をまとめた、記述の一例となります。

    <?php
      
    // Manually include the Client class
    // if your application doesn’t already do it require_once 
    {PATH_TO_THE_DIGIMA_PHP_CLIENT}.'/Client.php'; // Instantiate the Digima client $client = new \Digima\Client('YOUR_DIGIMA_ACCOUNT_CODE'); // Instantiate a Digima Web Form $form = $client->makeForm('YOUR_DIGIMA_FORM_CODE'); // Set the contact static fields $form->contact()->staticFields()->setMany(array( 'first_name' => $_POST['first_name'], 'last_name' => $_POST['last_name'], 'email' => $_POST['email'], )); // Set the contact custom fields $form->contact()->customFields()->set('interest', $_POST['interest']) )); // Submit the form data for registration in your Digima account $form->submit(); // Check if there are errors and handle them if($form->hasError()) { foreach ($form->getErrors() as $error) { switch ($error->getCode()) { case \Digima\Errors\Error::VALIDATION_ERROR: // Handle validation errors $field = $error->getProperty(); $message = $error->getMessage(); // ... break; case \Digima\Errors\Error::REQUEST_UNAUTHORIZED: // Handle an unauthorized request: check the credentials // ... break; // Handle errors of other types // ... default: // Handle other errors // ... break;   }  } }>

    Digimaに関する"?"にお答えします。

    Digimaサポート窓口 平日10:00~12:00/13:00~17:00

    お問い合わせ