「ワードでホームページ」は日本一簡単です!!

ブログ - ネットショップBASEさんとの接続

ネットショップBASEさんとの接続

カテゴリ : 
ブログ
執筆 : 
2019/12/31 1:13
緒方です。

ネットショップの機能はXoops上で動くZencart On Xoopsというソフトがあり、これがImpressCMSでも動くので、当初はこれを組み込んで実現しようと考えていました。

そこでZencartを使う本を買って読んだのですが、機能が多くて使いこなしや、クレジットカードとの接続にもお金と時間がかかりそうなのでどうすべきかと考えていました。

調べていくとBASE(ベイス)という無料で開設できるネットショップがあり、どうやらこちらと接続することができそうだとわかりました。この連携する情報は、BASEさんのこちらのブログにありました。

BASEを利用し、皆様のWebサービスに商品販売機能を追加する方法


この記事によると、広告効果測定APPSという機能を使うと、お客様が購入完了をした際に注文IDを返すことが可能だとのこと。

原文はこちら
その中に「広告効果測定」という機能があります。このAPPSを使うと、購入者様が商品を購入する際の購入完了画面で、任意のタグ、JavaScriptを実行する機能を提供することができます。

(途中省略)

BASEの商品購入の完了画面に、ここに書いた任意のHTML / JavaScriptが出力されます。iframe内に出力されるのでWebページ経由のWebhookとして皆様のサービスに通知を送ることができます。

ところがいくら検索しても、具体的なコードが出てこなくて、結局、自分で調べながらコードを書いて注文IDを自サイトへ戻して、DBまで入力するまで、大阪に帰省する深夜の高速バスの中から開発を始めて、ここ2、3日かかってしまいました。

そこで同じようなことをしたいと考える人もいるだろうと、私の書いたコードを公開することにしました(そんなたいそうなことではないのですが、コードをコピペできれば早い)。

まずは、BASEさんに自分のショップを開いて、「広告効果測定APPS」をインストールします。ここまではドキュメントやマニュアルを見るまでもなく、メニューに従って適当にやっていけばできるレベルの簡単な操作でした。

そしていざ、広告効果測定APPSの設定画面がこちら。上の欄はFacebookピクセルとの接続なので、下の欄に入力するということはわかりますが、いったい何を入力するの?という感じです。



テスト商品を登録していろいろ購入を繰り返して調べたところ、購入完了ページに以下のIframeタグが入ることがわかりました。
<iframe src="https://thebase.in/conversion/conversion_user_tags/generate_conversion?shop_id=homepage2&order_id=51E17C1236A4F992" height="1" width="1" style="display:none;"></iframe>

そして、その先のgenerate_conversionの中に、ここに入力した内容がそのまま出力されるのですが、変数である注文IDと合計金額は文字列が置き換わってくれます(なぜかショップIDは置き換わりませんでした)。
ということで、私の方では以下のコードを入力して保存しました。

<iframe src="https://www.homepage2.work/PHPの モジュール名~.php?shop_id=homepage2&order_id={%order_id%}&item_total={%item_total%}" style="display: none;"></iframe>

こう書いておくと、広告効果測定APPSが生成するIframeタグの中で、さらに自分のサイトをIframeで呼び出し、注文IDと合計金額を渡すことができるので、モジュール名~.phpの中では以下のように値を受けることができます。

ImpressCMS上で動くのは、Xoopsモジュールの作り方と同じ方法です。肝心のロジック部分だけ抜き出して記述しておきます。

値を受け取るロジック(PHPのコードです)

     //注文IDがなければ抜ける
     if (isset($_GET['order_id'])){

        //GETされたデータを変数にセット
          $shop_id   = $_GET['shop_id'];
          $order_id  = $_GET['order_id'];
          $item_total= $_GET['item_total'];
     }else{
          echo _ER_Error01;
          include( XOOPS_ROOT_PATH . '/footer.php');
          exit;
     }


受け取ったデータを保存するSQLです。

     $basedate = date('Y/m/d H:i:s');
     $query  = "INSERT INTO " . $xoopsDB->prefix('baseid');
     $query .= " (`order_id`, `shop_id`, `user_id`, `item_total`, `basedate`) ";
     $query .= " VALUES ('" . $order_id . "', '" . $shop_id . "', '" . $user_id . "', '" . $item_total;
     $query .= "', '" . $basedate . "')";

     $result = $xoopsDB->queryF($query);


これで、お客様が購入を完了すると、Iframeが二重に発生して、自分のサイトへ注文IDと合計金額を戻して、日時を追加してDBへ保存することができました。

その次は、この注文IDを使って、BASE APIを叩けば、注文IDから注文内容や顧客の詳細データが取得できるはずですが、これはBASEの管理画面でもできることですし、APIを叩くのは、ローカルPC上のExcelVBAマクロでやってしまえばいいと考えています。ローカルPC上で実行することで、サーバ側にお客様の詳細データは置かず、注文IDしかないのでセキュリティ上も問題ありませんね。

早く手作業ではできないくらいに注文が来るようになればいいなと()
おそらくこれで今年最後のブログになるかと思います。

開発は明日もやるだろうなと思いつつw。皆様良いお年を。
 
    閲覧 (1622)