,

REST API 実装

¥0.00

商品コード: affiliatewp-rest-api-extended カテゴリー: , タグ:

自社アフィリエイトに完全な REST API を実装

プラグイン「アフィリエイト導入」では、デフォルトの状態で、「読み込み専用」の REST API 機能は実装されています。

そのため、自社アフィリエイトシステムから、データを引っ張ってくることはできますが、データを更新したり、作成することができませんでした。

しかし、REST API 実装 を使用すると、作成、更新、および削除操作をシステムに追加し、開発者および外部アプリケーションが自社アフィリエイトのデータベースのデータを完全に制御できるようにします。

 

REST API で操作できる内容

REST API 実装 を追加することで、以下の操作が可能になります:

  • アフィリエイター、広告素材、成果、アクセス情報、支払いの作成
  • アフィリエイター、広告素材、成果、アクセス情報、支払いの更新
  • アフィリエイター、広告素材、成果、アクセス情報、支払いの削除

REST API の実装例

REST API 実装 を追加することで、以下のようなことが可能になります:

  • WordPress 以外のサイトを含む、外部のWeb サイトからのアクセスおよび成果のトラッキング
  • WordPress 以外のサイトを含む、外部の Eコマースシステムでの成果計上
  • 複数のデータベースやサーバー間でのアフィリエイトアカウントの同期
  • 外部アプリケーションから変更が行われたときにアフィリエイトアカウントを自動的に更新する
  • 外部の決済代行システムで注文が処理されるたびにアフィリエイターに成果の情報を作成する
  • WordPress 以外のサイトの外部のサイトでアフィリエイト用の管理画面を提供する
  • etc…

REST API 実装 の使い方

 

REST API を使用する事前準備

API キーの発行

REST API を使用するためには、API キーを発行する必要があります。
以下の方法で、API キーを発行してください。

  1. WordPress のサイドメニューの [アフィリエイト] > [ツール] にアクセスします。
    AffiliateWP - Tools
  2. 画面上部のタブの [API キー] をクリックします。
    AffiliateWP - 自社アフィリエイト API キー生成画面
    この画面からAPI キーを発行します。
  3. ユーザー名を入力し、[新しい API キーを生成する] をクリックしてください。
    「ユーザー名を…」と記載のあるテキストボックスに管理者権限のアカウントのユーザー名を入力してください。
    ※ 管理者権限を持つアカウントで発行しないと、API を使用した際に「権限がない」というエラーが発生します。
    AffiliateWP - 新しい API キーを生成する をクリック
  4. API キーの発行が完了しました。
    API を使用する際は「パブリックキー」及び「トークン」を使用します。
    AffiliateWP - パブリックキー&トークン

 

API キーのテスト

次に、先程作成した API キーが正常に作動するかテストを行います。
テスト方法はなんでも構いませんが、ここでは ① Web API をテストできる Postman というツールを使用する方法と ② コマンドラインから行う方法を解説します。

REST API の認証方法

REST API は、「パブリックキー」と「トークン」を組み合わせたベーシック認証を使用します。

API キーが作成されたら、認証ヘッダーに API キーを含めることにより、REST API で認証できます。
「パブリックキー」をユーザー名として、「トークン」をパスワードとして渡す必要があります。

 

REST API のエンドポイント

エンドポイントとは、API を送受信する際の URL です。

サイドメニューの [アフィリエイト] > [設定] > [REST API] にアクセスすると、使用できるエンドポイントが例とともに記載されています。

https://content-creation.bizapp.jp/wp-content/uploads/2020/06/AffiliateWP-REST-API-エンドポイント.png

それでは実際にアフィリエイターの情報を取得するエンドポイントを使用して API を試します。

 

① Postman で API の認証確認を行う方法

Postman を使用する場合は、下記のような設定になります。

AffiliateWP - Postman で REST API

※ Postman 自体の使い方は割愛致します。詳しくはこちら(※英語サイト)をご覧ください。

 

② コマンドラインから API の認証確認を行う方法

Mac では「ターミナル」。Windows では「Powershell」等を利用して、cURL コマンドを使用して確認できます。

  • 下記のようなコマンドになります。:
    curl -u {パブリックキー}:{トークン} https://{自社アフィリエイトがインストールされているWordPress}/wp-json/affwp/v1/affiliates
    「{}」で囲まれた値はご利用の環境によって差し替えてください。
  • 実際の例:
    curl -u 6xxxxx3fdxxxxx1884xxxxxb7d3eaf36:f7a435xxxxxxxxxx76xxxxxafcxxxxxa https://affiliate.flatflat.co.jp/wp-json/affwp/v1/affiliates
    ※ 一部伏せ字にしています

 

API で適切に認証するには、すべての API リクエストに認証ヘッダーを含める必要があります。
Basic 認証がされていないか、認証キーが正しくない場合、下記のエラーメッセージが返されます。

{
    "code": "rest_forbidden",
    "message": "その操作を実行する権限がありません。",
    "data": {
        "status": 401
    }
}

 

REST API 仕様解説

REST API 拡張 for 自社アフィリエイト のアドオンを追加することで、REST API を使用してアフィリエイターや成果などの「作成/編集/削除」が行えるようになります。
具体的には、下記の5つの項目を操作することができます:

  • アフィリエイター(affiliates)の作成/編集/削除
  • 広告素材(creatives)の作成/編集/削除
  • 支払い情報(payouts)の作成/編集/削除
  • 成果(referrals)の作成/編集/削除
  • アクセス情報(visits)の作成/編集/削除

 

それぞれの項目は REST API のエンドポイントで分かれており、エンドポイントの末尾に「id」(数字)を加える/加えないで操作する対象を切り替えることができます。

下記、アクセス情報(visits)を例に挙げると…

  1. visits – GET リクエストが送信されると、アクセス情報の一覧が返され、追加の引数でフィルタリングできます。
    POST または PUT リクエストを送信すると、アフィリエイト広告からのアクセスを新たに作成(記録)できます。
    リクエスト例:https://affiliate.flatflat.co.jp/wp-json/affwp/v1/visits
  2. visits/{id} – GETPATCH、または DELETE リクエストを送信すると、1回のアクセス情報をそれぞれ取得、編集、または削除できます。
    リクエスト例:https://affiliate.flatflat.co.jp/wp-json/affwp/v1/visits/1

 

id の確認方法

id は自社アフィリエイトの管理画面内で各ページに記載された「〇〇 ID」という項目からご確認ください。

AffiliateWP - id の確認方法

 

使用できる引数等の確認方法

どちらのルートも、一般的な OPTIONS リクエストを受け入れることができます。
これを使用することで、使用可能なエンドポイント、使用できるリクエストタイプや引数、およびアイテムスキーマに関する情報を返ってきますので、ぜひご参考ください。

 

REST API 使用例

それでは実例を交えながら、使用する方法を解説します。

ここでは、【サイトA:販売サイト】と、【サイトB:自社アフィリエイトがインストールされている WordPress】が別々のサイトであるという想定です。
そのため、アフィリエイト広告から【サイトA】への ① 流入の計測と、② 成果の計測を行い、【サイトB】で成果が確認できるようにします。

 

ここでは、様々なサイトで汎用性が効くよう、Javascript で解説しますが、PHP やその他の言語で開発されたとしても、REST API を使用できる形であればなんでも構いません。

今回は ① 流入を計測するためと、② コンバージョンを計測するための Javascript のコードを合計2種類用意しました。

 

① アフィリエイト広告からのサービスサイトへの流入計測(例)

下記のコードを【サイトA】のすべてのページ(アフィリエイト広告からの流入をトラッキングしたいページ)に埋め込んでください。

/**
 * 「アフィリエイト広告をクリック → サイトへの訪問」をトラッキング
 * 「AffiliateWP REST API Extended」の機能を利用し、APIで訪問した情報を通知
 *
 * @requires jQuery
 */

var url_string = window.location.href;
var url = new URL(url_string);
var ref = url.searchParams.get("ref");
var $cookie_domain = '.wpsuite.jp'; // サービスサイトのドメインを指定


//「?ref=」パラメータがあれば実行
if (ref) {

  var $user = '22c1bxxxx26b7b2c492xxxx7b64xxxe1'; // パブリックキー
  var $pass = 'ce42e6xxxx092b5e4e3cxxxxxxxxf8ad'; // トークン
  var $request_url = 'https://affiliate.flatflat.co.jp/wp-json/affwp/v1/visits'; // 【サイトB】のアクセス計測のエンドポイント
  var $affiliate_id = ref;
  var $url = document.location.href;
  var $referrer = document.referrer;
  var $campaign = ''; //キャンペーン情報をパラメータ等から挿入できます
  var $ip = ''; //サイト訪問者の IP を挿入できます(このコードでは、api.ipgeolocation.io を使用してます)
  var $exdays = 30; //cookie duration (days)

  // サイト訪問者の IP 取得
  jQuery.getJSON('https://api.ipgeolocation.io/getip', function(data) {
    console.log(data.ip);
    $ip = data.ip;
  });

  // API のリクエスト作成
  var settings = {
    "async": true,
    "crossDomain": true,
    "url": $request_url + "?affiliate_id=" + $affiliate_id + "&url=" + $url + "&referrer=" + $referrer + "&campaign=" + $campaign + "&ip=" + $ip,
    "method": "POST",
    "headers": {
      "authorization": "Basic " + btoa($user + ":" + $pass),
    }
  };

  jQuery.ajax(settings).done(function (response) {
    console.log(response);

    //set cookies
    setCookie('affwp_ref', $affiliate_id, $exdays); // affwp_ref – アフィリエイターの ID を保存します
    setCookie('affwp_ref_visit_id', response.visit_id, $exdays); //affwp_ref_visit_id – アクセス ID を保存します(アクセス IDは、Cookie が期限切れになるか削除されるまで、アフィリエイトリンクが使用されるたびに1ずつ増加します)
  });
}

// クッキー保存用関数
function setCookie(cname, cvalue, exdays) {
  var d = new Date();
  d.setTime(d.getTime() + (exdays*24*60*60*1000));
  var expires = "expires=" + d.toUTCString();
  document.cookie = cname + "=" + cvalue + ";" + expires + ";domain=" + $cookie_domain + ";path=/";
}

 

 

② アフィリエイト流入からの成果の計測(例)

下記のコードを【サイトA】の決済後のサンキューページ等(成果として計測したいアクションを起こした後のページ)に埋め込んでください。

/**
 * アフィリエイトでコンバージョンのトラッキング
 * 「AffiliateWP REST API Extended」の機能を利用し、APIでコンバージョンの情報を通知
 *
 * @requires jQuery
 */

var $affiliate_id = getCookie('affwp_ref');
var $visit_id = getCookie('affwp_ref_visit_id');
var $cookie_domain = '.wpsuite.jp'; // サービスサイトのドメインを指定

//クッキーがあったら実行
if ($affiliate_id && $visit_id) {
  var $user = '22c1bxxxx26b7b2c492xxxx7b64xxxe1'; // パブリックキー
  var $pass = 'ce42e6xxxx092b5e4e3cxxxxxxxxf8ad'; // トークン
  var $request_url = 'https://affiliate.flatflat.co.jp/wp-json/affwp/v1/referrals'; // 【サイトB】の成果計測のエンドポイント
  var $amount = '';
  var $currency = 'JPY';
  var $description = '';
  var $reference = ''; // 製品IDやトランザクションIDなどの製品情報を保存することができます。
  var $context = 'REST API';
  var $status = 'pending';
  
  var settings = {
    "async": true,
    "crossDomain": true,
    "url": $request_url + "?affiliate_id=" + $affiliate_id + "&visit_id=" + $visit_id + "&amount=" + $amount + "&currency=" + $currency + "&description=" + $description + "&reference=" + $reference + "&context=" + $context + "&status=" + $status,
    "method": "POST",
    "headers": {
      "authorization": "Basic " + btoa($user + ":" + $pass)
    },
    "xhrFields": {
      "withCredentials": true //cross domain setting
    }
  };
  
  jQuery.ajax(settings).done(function (response) {
    console.log(response);
    
    //delete cookie to prevent repeated conversion tracking
    deleteCookie('affwp_ref');
    deleteCookie('affwp_ref_visit_id');
  });
}



function getCookie(cname) {
  var name = cname + "=";
  var decodedCookie = decodeURIComponent(document.cookie);
  var ca = decodedCookie.split(';');
  for (var i = 0; i < ca.length; i++) {
    var c = ca[i];
    while (c.charAt(0) == ' ') {
      c = c.substring(1);
    }
    if (c.indexOf(name) === 0) {
      return c.substring(name.length, c.length);
    }
  }
  return "";
}

function deleteCookie(cname) {
  var d = new Date();
  d.setTime(1);
  var expires = "expires=" + d.toUTCString();
  document.cookie = cname + "=;" + expires + ";domain=" + $cookie_domain + ";path=/";
}

以上です。

技術的な部分が多くなってしまいましたが、上記をご参考いただき、適宜内容を修正して利用していただければ幸いです。

 

レビュー

レビューはまだありません。

“REST API 実装” の口コミを投稿します

メールアドレスが公開されることはありません。 が付いている欄は必須項目です