バージョン選択

フォーラム

メニュー

オンライン状況

55 人のユーザが現在オンラインです。 (36 人のユーザが フォーラム を参照しています。)
登録ユーザ: 1
ゲスト: 54
akn もっと...

サイト内検索

質問 > その他 > 商品別に外部のシステムにGETパラメータを送信したい

その他

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
tosi528
投稿日時: 2020/5/16 7:09
対応状況: −−−
新米
登録日: 2019/11/21
居住地:
投稿: 9
商品別に外部のシステムにGETパラメータを送信したい
よろしくお願いいたします。

オンライン商品の決済完了後、お客様の名前、メールアドレスなどが自動で外部システムに送信されるようにしたいと思っております。

目的は、お客様が決済完了後、すぐに外部システムにログインできるようにするためです。

そのために、商品別に外部システムにGETパラメータを送信したいと考えております。


物販も扱っているので、オンライン商品を購入した時にだけ、その商品専用のGETパラメータを送りたいので、

たとえば、GETパラメータを、商品登録のフリーエリアに記載し、

それが注文完了画面にて表示されることでパラメータが送信されるイメージをしております。


これらのことを考えておりますが、難しいでしょうか。

もし、お力をお借りさせていただけるのであれば、変更するファイルやコードなど、どのようにすればいいのかご教授いただければ、ありがたいです。

お手数をおかけいたしますが、よろしくお願いいたします。



[EC-CUBE] 3.0.17
[レンタルサーバ] Xサーバ
[OS] Linux
[PHP] PHP 7.2.17
[データベース] MySQL5.7
[WEBサーバ] apache 2.4.x、nginx
[ブラウザ] Firefox 68.2.0
468
投稿日時: 2020/5/16 12:31
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 2292
Re: 商品別に外部のシステムにGETパラメータを送信したい
イメージされている挙動が分からない点があるのですが、

>たとえば、GETパラメータを、商品登録のフリーエリアに記載し、
>それが注文完了画面にて表示されることでパラメータが送信されるイメージをしております。
これは送信をクリック等のアクションで行わせる予定ですが
それともお客様には何も意識させず裏で通信させたいという事ですか?
それとも数秒の待機後に自動的に画面遷移を伴う通信を行いたいという事でしょうか?
通信といっても色々なパターンがあるかと思いますので
希望されている動作によって手を加える箇所や手段が変わってくると思います。

あと、目的が「すぐに外部システムにログインできるようにするため」とありますが
外部システムでログイン済みにしたいという事でしょうか?
外部システム側にそのような受け口があるという前提なのでしょうか?

ShoppingController.php function complete()や
Shopping/complete.twigに手を加える事になるかと思います。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

tosi528
投稿日時: 2020/5/16 13:23
対応状況: −−−
新米
登録日: 2019/11/21
居住地:
投稿: 9
Re: 商品別に外部のシステムにGETパラメータを送信したい
説明が稚拙で申し訳ございません。

>これは送信をクリック等のアクションで行わせる予定ですが
>それともお客様には何も意識させず裏で通信させたいという事ですか?


お客様には、何も意識させず裏で通信させたいという事でございます。
その際、お名前とメールアドレスを送りたいと考えております。


>外部システムでログイン済みにしたいという事でしょうか?

いえ。すみません。そうではございません。
ECCUBEで決済完了後に、お客様が外部システム(オンラインサイト)のログインページに行って、
フォームにメールアドレスを手動で入力すると
ログインができる(アカウントが出来ている)状態という意味でございます。

外部システムは、GETパラメータを送ることで、
アカウントが自動作成される仕組みになっております。


●お客様側から見たイメージとしましては、

ECCUBEで「オンラインサイト年会費」という商品を決済し完了ページが表示され、そのページは閉じる。

ECCUBEの自動返信メールで配信された「受付完了メール」の中に
オンラインサイトのログインページのURLがあり、
それをクリックして、オンラインサイトに行って、
アカウント情報を入力するとログインできるようになっているという感じでございます。

商品ごとにパラメータの情報(会員ランクなど)を変えたいので、
それなら商品別に設定できるフリーエリアを
活用するほうが便利かと素人発想で考えておりましたが、
まったく情報も知識もなく困り果てておりました。

分かりにくくてすみません。

なにとぞ、よろしくお願い致します。


468
投稿日時: 2020/5/16 16:05
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 2292
Re: 商品別に外部のシステムにGETパラメータを送信したい
裏方で通信を発生させたいという事であれば、
ShoppingController.phpのfunction complete()で処理をするのが良いかと思うのですが
通信に失敗した場合、どうするのか?によって
通信を指示する箇所が変わってくるかと思います。

例えば、通信エラー(通信障害や外部システムのサーバダウンで通信自体が失敗)や
外部システム側で登録エラーが発生した場合、
注文を中止するのであれば、
ShoppingController.phpのfunction confirm()で
$em->getConnection()->commit();
が実行される直前の辺りで外部システムに通信させる必要があると思います。

通信自体はGETで処理されるという事ですので
file_get_contents()関数を利用すれば良いのではないかと思います。
注意点としては、php.iniの設定でallow_url_fopen = Onになっている必要がある事と
会員名のような2バイト文字を含む場合、GETパラメータはurlencode()を通しておくほうが良いのではないかと思います。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

tosi528
投稿日時: 2020/5/16 19:37
対応状況: −−−
新米
登録日: 2019/11/21
居住地:
投稿: 9
Re: 商品別に外部のシステムにGETパラメータを送信したい

丁寧にお教えいただき、ありがとうございます。

ただ、お教えいただいたことは、正直、私の素人レベルでは難しい感じがします。

わざわざお時間を使ってお考えいただき、回答まで頂いたのに、勝手を言って申し訳ございません。


私としては、例えば商品登録のフリーエリアに、

<img src="https://***.com/directregist.php?name1=<%name1%>&name2=<%name2%>&email=<%email%>" width="1" height="1">

という感じの<img src=~>タグを記入して、

そのフリーエリアのタグが決済後の注文完了ページにだけ表示されるようにさえ出来れば、

名前とメールアドレスのパラメータを「https://***.com/directregist.php」に送ることができると簡単に考えておりました。

自分が甘かったなと反省しております。


ちなみに、このようにフリーエリアに書いた<img src=~>タグを、

注文完了ページにだけ表示させることは、不可能でしょうか。

もし、出来るということであれば、どのようにカスタマイズすれば良いのか、

お教えいただければありがたく思います。

何度もすみません。よろしくお願いいたします。
468
投稿日時: 2020/5/17 11:39
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 2292
Re: 商品別に外部のシステムにGETパラメータを送信したい
注文完了画面にimgタグを追加する事でGET通信を実行させる事は可能と思います。

以下の投稿で注文完了画面にfree_areaを表示させる方法について回答した事がありますので参照してみてください。
https://xoops.ec-cube.net/modules/newbb/viewtopic.php?viewmode=thread&topic_id=23974&forum=10&post_id=97829#forumpost97829

物販商品とオンライン商品の切り分けは商品種別を利用する事で判定できるかと思います。

あと、少し気になったのですが
外部システムのアカウント登録APIは、アクセスがあれば必ずアカウントが登録されるのでしょうか?
もし、そうだとすると注文完了画面にimgタグを出力する方法だとHTMLソースを見られると
アカウント登録用のURLが顧客にばれてしまうという事になりますが問題ありませんか?
そのような形で悪用されるパターンは確立としては低いとは思いますが
有償で販売しているサービスを無償で利用できてしまう可能性が少しでもあるのであれば
弊社であればその方法は採用しないと思います。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

tosi528
投稿日時: 2020/5/17 13:28
対応状況: −−−
新米
登録日: 2019/11/21
居住地:
投稿: 9
Re: 商品別に外部のシステムにGETパラメータを送信したい
ありがとうございます。

<img src="で送信すれば、今のところ必ず登録は出来ているようなので、大丈夫かとは思います。
また、今回はフロントエンドということで10円でカートへの登録だけを目的としておりまして、
0円という価格で、限られた一部の方に活用させていただこうと考えております。

細部までご心配頂き恐れ入ります。
ありがとうございます。


ご指導いただき、いろいろ考えた結果、今回は取り急ぎ、
切り分けはおっしゃる通り、商品種別で、完了ページにタグを直接貼って
対応させていただこうか考え、

今、Shopping/complete.twigに、


{% if Shipping.ShipmentItems[0].ProductClass.ProductType.id == 商品種別ID %}
<img src="https://
{% else %}
{% endif %}


と記載したのですが、なぜかうまくいきません。。。

<img src="https://だけを張ってテストすると問題なく送信登録できるのですが。。。


商品種別IDの切り分けは、


{% if Shipping.ShipmentItems[0].ProductClass.ProductType.id == 商品種別ID %}
●商品種別IDの際の表示
{% else %}
●それ以外での表示
{% endif %}


という認識ですが、、、

切り分けのタグに何か間違いがありますでしょうか。。。


あと、ちなみに、、、

商品種別での切り分け以外に、カテゴリでの切り分けということは可能でしょうか?

その場合、どのような記載をすればよろしいでしょうか・・・

質問ばかりで、大変お手数をおかけして申し訳ございません。

よろしくお願いいたします。


468
投稿日時: 2020/5/17 19:05
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 2292
Re: 商品別に外部のシステムにGETパラメータを送信したい
注文完了画面のtwigにShippingが渡っていないのではないでしょうか?
Orderからの判定ならできるのではないでしょうか?


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

tosi528
投稿日時: 2020/5/17 19:36
対応状況: −−−
新米
登録日: 2019/11/21
居住地:
投稿: 9
Re: 商品別に外部のシステムにGETパラメータを送信したい
ありがとうございます。

無事にできました。

本当にありがとうございました。

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBEペイメント

公式ストアEC-CUBE4系デザインテンプレート続々リリース中

統計情報

総メンバー数は62,234名です
総投稿数は96,232件です

投稿数ランキング

1
seasoft
7332
2
AMUAMU
2712
3
468
2292
4
nanasess
2044
5
yuh
1612
6
umebius
1588
7
red
1403
8
h_tanaka
1009
9
fukap
907
10
tsuji
863
11
shutta
835
12
tao_s
792
13 ramrun 789
14 karin 656
15 sumida 641
16
homan
633
17 DELIGHT 571
18
patapata
502
19
flealog
485
20 tonton 437


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.