web-dev-qa-db-ja.com

authorize.netの応答virtuemart 1.1.9を変更する方法?

Virtuemart 1.1.9がサポートされなくなったことを知っていますが、インストールしたオンラインのJoomla Webサイトで多くのカスタマイズを行っています。 joomlaの最新バージョンとVMにも移動できません。

シナリオを読んでください。私はvirtuemart 1.1.9で1.5をjoomlaしました。ユーザーがauthorize.netを通じてクレジットカードの支払いを処理するたびに、処理が完了すると、ユーザーに「ありがとうございます。注文は完了しました...失敗または成功したトランザクション応答に関係なく。

My Need is ..取引が失敗したときに自分のメールアドレスにメールを送信したい。携帯電話でauthorize.netのステートメントを確認できません。

質問の内容は...自分にメールを送信する方法と、authorize.netサーバーからの応答をチェックするために機能しているファイルと機能.

この質問が紛らわしい場合はお知らせください...よりわかりやすく説明します。

1
MFarooqi

たくさんの努力の末、ようやくすべての取引の詳細を含むページにたどり着きました。

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

他の開発者にも役立つと思います。

よろしく

1
MFarooqi