首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Cardsave 3D secure检出

使用Cardsave 3D secure检出
EN

Stack Overflow用户
提问于 2014-06-10 22:53:17
回答 1查看 138关注 0票数 1

是否有人使用CI-Merchant和3D Secure成功地集成了Cardsave?

我现在已经设法让3D Secure响应我的网站(似乎你需要将'return_url‘作为参数添加到参数中,以供其他有问题的人使用),但无论是使用真实的卡还是使用授权成功的测试3D安全卡,交易总是失败。

不幸的是,CI-Merchant网站上没有任何关于Cardsave驱动程序的文档,只有Paypal的一个示例。

失败的交易不会出现在我的Cardsave账户中,所以我甚至不确定CI-Merchant是否正在与Cardsave进行通信。

下面是我用于测试的代码示例:

代码语言:javascript
复制
public function test_live_payment()
    {
        $this->load->library('merchant');

        $creditcard = $this->input->post('creditcard');
        $creditcardtype = $this->input->post('creditcardtype');
        $cardmonth = $this->input->post('cardmonth');
        $cardyear = $this->input->post('cardyear');
        $cardsecurecode = $this->input->post('cardsecurecode');
        $cardnameon = $this->input->post('cardnameon');
        $address1 = $this->input->post('address1');
        $address2 = $this->input->post('address2');
        $city = $this->input->post('city');
        $postcode = $this->input->post('postcode');


        $data['status'] = '';
        $data['message'] = '';

        $test = TRUE;

            if ($test) :

                  $settings = array (
                    'merchant_id' => 'TEST ACCOUNT',
                    'password' => 'XXXX'
                );



            else :

                $settings = array (
                    'merchant_id' => 'LIVE ACCOUNT',
                    'password' => 'XXXX'
                );


            endif;


        if ($_POST) :

            $this->merchant->load('cardsave');


            $this->merchant->initialize($settings);

            $data['transaction_id'] = '999' . rand(1, 999);

            $params = array(
                            'amount' => '1.00',
                            'currency' => 'GBP',
                            'card_no' => $creditcard,
                            'name' => $cardnameon,
                            'exp_month' => $cardmonth,
                            'exp_year' => 20 . $cardyear,
                            'csc' => $cardsecurecode,
                            'transaction_id' => $data['transaction_id'],
                            'description' => 'Test payment',
                            'address1' => $address1,
                            'address2' => $address2,
                            'city' => $city,
                            'postcode' => $postcode,
                            'return_url' => site_url('/test-payment')
                 );

                 $response = $this->merchant->purchase($params);


                if ($response->success()) :
                    $gateway_reference = $response->reference();

                    $data['status'] = 'Success';
                    $data['message'] = 'The transaction was successfully processed';

                else :

                    $message = $response->message();

                    $data['status'] = 'Failed';

                    if ( ! empty($message)) :
                        $data['message'] = $message;
                    else :
                        $data['message'] = 'Transaction failed. No further details received.';
                    endif;

                endif;



        endif;


        $this->load->view('test_payment_form', $data);


    }
EN

回答 1

Stack Overflow用户

发布于 2014-06-11 15:47:00

似乎已经解决了我自己的问题,1.确保我正在传递一个返回的URL,以及2.将返回的URL发送到一个包含purchase_return()函数的新函数。下面是我的完整(测试)代码:

代码语言:javascript
复制
public function test_live_payment()
    {
        $this->load->library('merchant');

        $creditcard = $this->input->post('creditcard');
        $creditcardtype = $this->input->post('creditcardtype');
        $cardmonth = $this->input->post('cardmonth');
        $cardyear = $this->input->post('cardyear');
        $cardsecurecode = $this->input->post('cardsecurecode');
        $cardnameon = $this->input->post('cardnameon');
        $address1 = $this->input->post('address1');
        $address2 = $this->input->post('address2');
        $city = $this->input->post('city');
        $postcode = $this->input->post('postcode');


        $data['status'] = '';
        $data['message'] = '';

        $test = TRUE;

            if ($test) :

                  $settings = array (
                    'merchant_id' => 'TEST ACCOUNT',
                    'password' => 'XXXX'
                );



            else :

                $settings = array (
                    'merchant_id' => 'LIVE ACCOUNT',
                    'password' => 'XXXX'
                );


            endif;


        if ($_POST) :

            $this->merchant->load('cardsave');


            $this->merchant->initialize($settings);

            $data['transaction_id'] = '999' . rand(1, 999);

            $data['transaction_id'] = '999' . rand(1, 999);

            $newdata = array(
                   'transaction_id'  => $data['transaction_id']
                   );

           $this->session->set_userdata($newdata);

            $params = array(
                            'amount' => '1.00',
                            'currency' => 'GBP',
                            'card_no' => $creditcard,
                            'name' => $cardnameon,
                            'exp_month' => $cardmonth,
                            'exp_year' => 20 . $cardyear,
                            'csc' => $cardsecurecode,
                            'transaction_id' => $data['transaction_id'],
                            'description' => 'Test payment',
                            'address1' => $address1,
                            'address2' => $address2,
                            'city' => $city,
                            'postcode' => $postcode,
                            'return_url' => site_url('/test-payment-response')
                 );

                 $response = $this->merchant->purchase($params);


                if ($response->success()) :
                    $gateway_reference = $response->reference();

                    $data['status'] = 'Success';
                    $data['message'] = 'The transaction was successfully processed';

                else :

                    $message = $response->message();

                    $data['status'] = 'Failed';

                    if ( ! empty($message)) :
                        $data['message'] = $message;
                    else :
                        $data['message'] = 'Transaction failed. No further details received.';
                    endif;

                endif;



        endif;


        $this->load->view('test_payment_form', $data);


    }



    public function test_response()
    {
        $settings = array (
                    'merchant_id' => 'TEST ACCOUNT',
                    'password' => 'XXXX'
                );


        $this->load->library('merchant');
        $this->merchant->load('cardsave');
        $this->merchant->initialize($settings);

        $data['transaction_id'] = $this->session->userdata('transaction_id');


        $params = array(
                            'amount' => '1.00',
                            'currency' => 'GBP',
                            'transaction_id' => $data['transaction_id']

                 );

        $response = $this->merchant->purchase_return($params);

        if ($response->success()) :
                    $gateway_reference = $response->reference();

                    $data['status'] = 'Success';
                    $data['message'] = 'The transaction was successfully processed';

                else :

                    $message = $response->message();

                    $data['status'] = 'Failed';

                    if ( ! empty($message)) :
                        $data['message'] = $message;
                    else :
                        $data['message'] = 'Transaction failed. No further details received.';
                    endif;

                endif;


        $this->load->view('test_payment_form', $data);



    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24144139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档