Virtuemart 1.1.9がサポートされなくなったことを知っていますが、インストールしたオンラインのJoomla Webサイトで多くのカスタマイズを行っています。 joomlaの最新バージョンとVMにも移動できません。
シナリオを読んでください。私はvirtuemart 1.1.9で1.5をjoomlaしました。ユーザーがauthorize.netを通じてクレジットカードの支払いを処理するたびに、処理が完了すると、ユーザーに「ありがとうございます。注文は完了しました...失敗または成功したトランザクション応答に関係なく。
My Need is ..取引が失敗したときに自分のメールアドレスにメールを送信したい。携帯電話でauthorize.netのステートメントを確認できません。
質問の内容は...自分にメールを送信する方法と、authorize.netサーバーからの応答をチェックするために機能しているファイルと機能.
この質問が紛らわしい場合はお知らせください...よりわかりやすく説明します。
たくさんの努力の末、ようやくすべての取引の詳細を含むページにたどり着きました。
authorize.netを使用している間、トランザクション要求はJson/XML形式でauthorize.netサーバーに送信され、処理後に同じXML/Json形式で応答が返されます。次のページはこの点に関して機能します
joomlasite/administrator/components/com_virtuemart/classes/payment/ps_authorize.php
今このファイル検索でprocess_payment関数、
process_payment
これは、支払いゲートウェイへの直接接続(authorize.netやeWay XMLなど)を使用するすべての支払いモジュールの主な機能です。これは、支払いの詳細が検証され、成功時に取得される場所です。成功した場合はtrue、失敗した場合はfalseを返します。
そして、これが決済ゲートウェイからの応答に応じてカスタマイズしたものです。
すべての応答をエコーしてから、ステータス1、3、4またはいずれかに従って、指定したメールアドレスにメールを送信するphpメールスクリプトを作成しました
サーバーからの応答を一時的にエコーする
$vmLogger->err('result: '. $result);
トランザクション後にすべての応答がエラーとして表示されます。
$Message =
'**Notification:**A Transaction was attempt. Authorize.net responded
**'.$response[3].'**.
Details are as under:
========= ORDER INFORMATION =========
Invoice : '.$response[36].'
Amount : '.$order_total.'
============== RESULTS ==============
Response : '.$response[3].'
Authorization Code : '.$response[4].'
Transaction ID : '.$response[6].'
==== CUSTOMER BILLING INFORMATION ===
First Name : '. substr($dbst->f("first_name"), 0, 50).'
Last Name : '. substr($dbst->f("last_name"), 0, 50).'
E-Mail : '.$dbbt->f("user_email");
$cc_headers = "MIME-Version: 1.0" . "\r\n";
$cc_headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";
//this address will show as "from" in email box
$cc_headers = 'From:<[email protected]>'. "\r\n";
//$vendor_mail fetches virtuemart's vendor's email.
$to_email = $vendor_mail;
$cc_subject = "Transaction attempt - ".$response[3];
$cc_message = $Message;
次に、ステータスに応じて応答をカスタマイズしました。
...
elseif ($response[0] == '2') {
....//some codes
mail($to_email,$cc_subject,$cc_message,$cc_headers);
.....
elseif ($response[0] == '3') {
....//some codes
mail($to_email,$cc_subject,$cc_message,$cc_headers);
.....
elseif ($response[0] == '4') {
....//some codes
mail($to_email,$cc_subject,$cc_message,$cc_headers);
.....
これは、応答が失敗した、拒否された、またはその他の発行されたが成功しなかった場合に、ベンダーに電子メールを送信します。
支払いが成功した場合の応答もカスタマイズできます
if ($response[0] == '1') {
............. email is successful
他の開発者にも役立つと思います。
よろしく