質問 > フロント機能 > 外部サイトでのクレジット決済について |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
ゲスト |
投稿日時: 2007/3/23 2:01
対応状況: −−−
|
外部サイトでのクレジット決済について お世話になります。
無料とは思えないシステムに驚いています。 現在利用しているショッピングカートでクレジット決済を行う場合には、 購入手続き完了後、formで情報を外部クレジット決済ページへ遷移する方法で決済しています。 ECCUBEでも、購入手続き完了後(complete.php)そういった方法でクレジット決済ができそうな気がするのですが、 できれば、クレジット決済完了後、formでデータを持ってcomplete.phpへ遷移して、購入手続きを完了したいと考えております。 (クレジット決済をしないで、購入完了することを防ぐため) そういったことは、可能でしょうか?また、可能であればformでどういったデータを持って遷移すればできるのでしょうか? ご教授ください。よろしくお願いいたします。 |
|
nanasess |
投稿日時: 2007/3/23 3:53
対応状況: −−−
|
神 登録日: 2006/9/9 居住地: 投稿: 2314 |
Re: 外部サイトでのクレジット決済について 大河内です.
引用:
現在, 上記のような要件を EC-CUBE に実装し, 実際に運用しております. (UFJニコスのクレジットカード決済モジュール) form でどのようなデータを持つかは, 決済会社ごとに異なると思いますので, 仕様がわからないと具体的なアドバイスはできませんが... こちらの投稿が参考になれば幸いです... http://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=388&forum=10&post_id=1084#forumpost1084 おそらく, 決済完了後, 決済サイトから自サイトへ戻るときに, 決済情報が POST or GET されるような仕組みになっていると思います. それを complete.php で受け取って DB へ保存する等, 完了処理を実装してやることで実現可能です. が, 決済会社によってはできないかもしれませんので, 要確認ですね.(承認完了後, 自動的に自サイトへリダイレクトしてくれない仕様等) |
ゲスト |
投稿日時: 2007/3/23 21:03
対応状況: −−−
|
Re: 外部サイトでのクレジット決済について 大河内さま、ご返信ありがとうございます!
confirm.phpをカスタマイズして、クレジット決済を選択した場合のみクレジット決済ページへリダイレクトできるようにできました。 クレジット会社に確認したところ、遷移後にパラメーターを付加できるそうで問題なさそうです。 クレジット決済画面での決済完了後、complete.phpへ遷移する際にもっていくパラメーターは、 ソースを見る限り、「mode」「uniqid」を持っていけばよさそうな感じに見えるのですが、 大河内さまのサイトではどのパラメーターを持っていって遷移しているのか、差し支えなければお教えいただけると大変助かります。 よろしくお願いいたします。 |
|
nanasess |
投稿日時: 2007/3/23 22:06
対応状況: −−−
|
神 登録日: 2006/9/9 居住地: 投稿: 2314 |
Re: 外部サイトでのクレジット決済について 大河内です.
引用:
決済会社によって, 仕様が異るため, 参考にならないかもしれませんが... complete.php では, 注文の完了処理のみなので, 当方では mode は渡していません. 当方では, 支払方法や, 決済会社ごとに 3タイプのモジュールをしています. 厳密には, 決済タイプごとに, xxxCard.php や xxxloan.php を用意し, 決済完了後, 決済サイトからそこへ遷移するようにしています. 決済サイトからは, キャンセルや, 承認NG, 承認OK などといったパラメータを, GET または POST で受け取り, 上記 PHP ファイルのロジックで遷移先を決定, 承認OK の場合は, complete.php へ遷移するようにしています. $uniqid は, セッションに格納されているものを使用するので, 特にパラメータを渡すような処理は実装していません. 承認番号や, ローンの受付番号を DBに保存するなど, 支払方法によって異る処理は, xxxCard.php や xxxloan.php で行うようにしています. 決済サイトの仕様や, ショップの要件によって, かなり実装が異ってくるとは思います. ざっくりと書きましたが, 参考になりますでしょうか... |
ゲスト |
投稿日時: 2007/3/24 12:15
対応状況: −−−
|
Re: 外部サイトでのクレジット決済について ご返信ありがとうございます。
確認をしてみましたが、確かにGETでパラメーターをもってなくても、セッションで判別しているため問題なく注文完了できました。 カード決済が正常に完了しない限り遷移しないようになっているので、途中でブラウザを閉じてしまえば注文完了されていないようですし、わざとやらない限り決済完了しないと注文も完了しない形になっています。 ちなみに、こんなプログラムで実装しました。 PHPをやり始めて1ヶ月もたっていないのでお役に立てるかわかりませんが、一応貼り付けておきます。 【confirm.php】 // 決済方法により画面切替 if($payment_type != "") { $_SESSION["payment_id"] = $arrData['payment_id']; header("Location: " . URL_SHOP_MODULE); }else{ header("Location: " . URL_SHOP_COMPLETE); } を以下のように変更しています。(決済名に「クレジットカード」が含まれている場合に決済ページへ遷移) // 決済方法により画面切替 $creditshiharai = $_POST['creditshiharai']; if(eregi('クレジットカード', $creditshiharai)){ //必要なパラメータを変数に入れる $creditprice = str_replace( ",", "", $_POST['creditprice']); $creditmail = $_POST['creditmail']; $creditmode = $_POST['mode']; $credituniqid = $_POST['uniqid']; //遷移先 header("Location:【クレジット決済先のURLを記載(必要なパラメーターを付与する)】; }else{ if($payment_type != "") { $_SESSION["payment_id"] = $arrData['payment_id']; header("Location: " . URL_SHOP_MODULE); }else{ header("Location: " . URL_SHOP_COMPLETE); } } そして、confirm.tplにhiddenで必要なパラメータを保持しておきます。 <input type="hidden" name="creditprice" value="<!--{$arrData.payment_total|number_format}-->"> <input type="hidden" name="creditshiharai" value="<!--{$arrData.payment_method|escape}-->"> は必須かと。(クレジット決済金額・支払い方法) ほかにもメールアドレスとかも必要な場合は適宜追加します。メールアドレスのhiddenは以下のタグです。 <input type="hidden" name="creditmail" value="<!--{$arrData.order_email}-->"> NTTデータキュビットの決済サービスでテストをしてみましたが、問題なさそうでした。 (何かあっても責任は負えませんが;^^) もし、こういったものを投稿することに問題がありましたら削除をお願いいたします。 大河内さま、ご指導まことにありがとうございました。また、何かありましたらよろしくお願いいたします。 |
|
masa999 |
投稿日時: 2010/4/2 11:19
対応状況: −−−
|
新米 登録日: 2009/10/9 居住地: 投稿: 4 |
Re: 外部サイトでのクレジット決済について 横から入って申し訳ありません。
私も同様にクレジットの外部サイトと連携して処理を実装しましたが、クレジットがOKで帰ってきた後、(ec-cubeの)complete.phpで受注データ作成を行うと思うのですが、そこで在庫エラーになった時どの様な処置をされていますか?ソースの内容では、在庫エラー画面を出力しているのですが、クレジットはOKになっています。※受注データは作成されない(ロールバックしている)為、管理画面上にも受注データが上がってこない。。。みなさんこのような場合、どの様にカスタマイズしていますか? |
nanasess |
投稿日時: 2010/4/2 11:27
対応状況: −−−
|
神 登録日: 2006/9/9 居住地: 投稿: 2314 |
Re: 外部サイトでのクレジット決済について オーソリの前に在庫チェックするようなロジックにしてはいかがでしょうか?
決済処理中に在庫が無くなった場合に対応するには, 運用で対応するしかないかもしれません. |
masa999 |
投稿日時: 2010/4/3 2:27
対応状況: −−−
|
新米 登録日: 2009/10/9 居住地: 投稿: 4 |
Re: 外部サイトでのクレジット決済について 返信ありがとうございます。
やっぱりそうですね、最後は運用でカバーするしかないですね。 オーソリ前に在庫のチェックというか、在庫引当を行う必要があると思います。※オーソリ中に別注文が入る為 詳しく言うと、在庫引当=仮受注データを作る事になります。もし、オーソリを中止しても、仮受注データの明細から在庫の戻しを行う運用でいこうかと思います。 |
nanasess |
投稿日時: 2010/4/5 9:44
対応状況: −−−
|
神 登録日: 2006/9/9 居住地: 投稿: 2314 |
Re: 外部サイトでのクレジット決済について 引用:
在庫引当については, EC-CUBE の標準機能として必要だと思うので, 今後のバージョンで改善していきたいですね. |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |