0

kohana 3.0 プロジェクトで Authorize.Net を使用しようとしています。モジュールを bootstrap.php ファイルに設定しました。
コードに集中する前に、プロセスをよく理解しておきたい。彼らのサンプルコードでは、それが書かれています。

<?php
require_once 'anet_php_sdk/AuthorizeNet.php'; // Include the SDK you downloaded in Step 2
$api_login_id = 'I_put_my_login_id_here';
$transaction_key = 'and_my_transaction_key_here;
$amount = "5.99";
$fp_timestamp = time();
$fp_sequence = "123" . time(); // Enter an invoice or other unique number.
$fingerprint = AuthorizeNetSIM_Form::getFingerprint($api_login_id,
  $transaction_key, $amount, $fp_sequence, $fp_timestamp)
?>

<form method='post' action="https://test.authorize.net/gateway/transact.dll">
<input type='hidden' name="x_login" value="<?php echo $api_login_id?>" />
<input type='hidden' name="x_fp_hash" value="<?php echo $fingerprint?>" />
<input type='hidden' name="x_amount" value="<?php echo $amount?>" />
<input type='hidden' name="x_fp_timestamp" value="<?php echo $fp_timestamp?>" />
<input type='hidden' name="x_fp_sequence" value="<?php echo $fp_sequence?>" />
<input type='hidden' name="x_version" value="3.1">
<input type='hidden' name="x_show_form" value="payment_form">
<input type='hidden' name="x_test_request" value="false" />
<input type='hidden' name="x_method" value="cc">
<input type='submit' value="Click here for the secure payment form">
</form>

それで、ユーザーが私のウェブサイトにアクセスして商品を買おうとしているとします。コントローラーへのプロセスを処理します。php_curl を使用します。

public function action_authorize(){
$url = 'https://test.authorize.net/gateway/transact.dll';

                    $post_string = '';
                    $request = curl_init($url);

                    curl_setopt($request, CURLOPT_HEADER, 0); // set to 0 to eliminate header info from response
                    curl_setopt($request, CURLOPT_RETURNTRANSFER, 1); // Returns response data instead of TRUE(1)
                    curl_setopt($request, CURLOPT_POSTFIELDS, $post_string); // use HTTP POST to send form data
                    curl_setopt($request, CURLOPT_SSL_VERIFYPEER, FALSE); // uncomment this line if you get no gateway response.

                    $post_response = curl_exec($request); // execute curl post and store results in $post_response

                    curl_close($request);

                    $response_array = explode($post_values["x_delim_char"],$post_response);
}

ここで私の問題は、クエリ結果に対するサーバーの応答を *$response_array* で知る方法です。エラーコードを特定する方法は? もう 1 つ、Authorize モジュールを有効にします。コントローラーから *'api_login'* と *'transaction_key'* にアクセスするにはどうすればよいですか? コントローラーでこれを行うと、エラーが発生します*

$authorize = new Authorize;
$authorize->api_login;
  • エラーを出します。実際、Kohana3.0 で Authorize.NET モジュールを実装できるようにしたいと考えています。
4

1 に答える 1

1

Authorize.NetSDKクラスをapplication/vendor /anet_php_sdk/に保存します

デモコントローラー方式:

class Controller_Payment extends Controller_Template
{
    // Set properties at the top of the class for easier changes later
    $this->authorize_url = 'https://test.authorize.net/gateway/transact.dll';
    $this->api_login_id = 'I_put_my_login_id_here';

    public function action_authorize()
    {
        require Kohana::find_file('vendor', 'anet_php_sdk/AuthorizeNet');

        if($_POST)
        {
            $request = curl_init($this->authorize_url);

            // Build your post string
            $post_string = http_build_query($_POST);

            // The rest of the Authorize.net code
            curl_setopt($request, CURLOPT_HEADER, 0);
            curl_setopt($request, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($request, CURLOPT_POSTFIELDS, $post_string);
            curl_setopt($request, CURLOPT_SSL_VERIFYPEER, FALSE);
            $post_response = curl_exec($request);
            curl_close($request);

            $response_array = explode($post_values["x_delim_char"],$post_response);

            // Look in your SDK docs to determine the actual values you need
            // to check to verify that the transaction was successful:
            if($response_array['code'] == 200)
            {
                Request::current()->redirect('success/page');
            }
            else
            {
                // Error handling
            }
        }

        $transaction_key = 'transaction_key_here;
        $amount = "5.99";
        $fp_timestamp = time();
        $fp_sequence = "123" . time(); // Enter an invoice or other unique number.
        $fingerprint = AuthorizeNetSIM_Form::getFingerprint($this->api_login_id,
            $transaction_key, $amount, $fp_sequence, $fp_timestamp)

        $this->template->content = View::factory('payment/page')
            ->set('api_login_id', $this->api_login_id)
            ->set('amount = $amount)
            ->set('fp_timestamp = $fp_timestamp)
            ->set('fp_sequence = $fp_sequence)
            ->set('fingerprint', $fingerprint);
    }
}

質問したので、コントローラーからPOST変数にアクセスします。

$transaction_key = $_POST['transaction_key'];

ファイルの表示(views /payment / page.php):

<form method='post' action="payment/authorize">
<input type='hidden' name="x_login" value="<?php echo $api_login_id?>" />
<input type='hidden' name="x_fp_hash" value="<?php echo $fingerprint?>" />
<input type='hidden' name="x_amount" value="<?php echo $amount?>" />
<input type='hidden' name="x_fp_timestamp" value="<?php echo $fp_timestamp?>" />
<input type='hidden' name="x_fp_sequence" value="<?php echo $fp_sequence?>" />
<input type='hidden' name="x_version" value="3.1">
<input type='hidden' name="x_show_form" value="payment_form">
<input type='hidden' name="x_test_request" value="false" />
<input type='hidden' name="x_method" value="cc">
<input type='submit' value="Click here for the secure payment form">
</form>
于 2013-01-15T16:37:42.713 に答える