web-dev-qa-db-fra.com

Bibliothèque Codeigniter ci-merchant - Problème d’intégration de la passerelle de paiement authorize.net

J'ai essayé d'intégrer la passerelle de paiement codeigniter authorize.net en utilisant la documentation http://ci-merchant.org , je peux intégrer avec succès Paypal, mais malheureusement, je n'ai pas pu faire authorize.net. Le code ci-dessous, j'ai essayé, mais ne fonctionne pas, comment le faire?

$this->load->library('merchant');
$this->merchant->load('authorize_net_sim');
$settings = array(
'api_login_id' => 'xxxx',
'transaction_key' => 'xxxx',
'test_mode' => true);

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

$params = array( 
        'amount' => 10, 
        'currency' => 'USD', 
        'card_no' => '4111111111111111', 
        'exp_month' => '12', 
        'exp_year' => '14', 
        'csc' => 123, 
        'first_name' => 'Ashok', 
        'last_name' => 'KS',
        'return_url' => 'http://www.ioss.in/success',
        'cancel_url' => 'http://www.ioss.in/cancel'    
        );
$response = $this->merchant->purchase($params);   

print_r($response) retourne:

Merchant_response Object (
    [_status:protected] => failed
    [_message:protected] =>
    [_reference:protected] =>
    [_data:protected] =>
    [_redirect_url:protected] =>
    [_redirect_method:protected] => GET
    [_redirect_message:protected] =>
    [_redirect_data:protected] =>
)

MISE À JOUR 1 après avoir changé le code, cela fonctionne très bien ...

$params = array(
'amount' => 10.00,
'currency' => 'USD',
'return_url' => 'http://www.ioss.in',
'cancel_url' => 'http://www.google.in');
2
Ashok KS

D'après les commentaires, si le $response échoue sans message d'erreur, c'est généralement parce que vous essayez d'envoyer des informations de carte de crédit non cryptées (sans l'aide de HTTPS), qui n'est pas prise en charge par CI Merchant (pour des raisons de sécurité évidentes).

Dans ce cas, les détails de la carte de crédit ne sont de toute façon pas nécessaires car la passerelle SIM Auth.net est une passerelle hors site (les détails de la carte ne sont pas entrés sur votre site). Changer la requête $ en ceci a résolu le problème:

$params = array(
    'amount' => 10.00,
    'currency' => 'USD',
    'return_url' => 'http://www.ioss.in',
    'cancel_url' => 'http://www.google.in',
);

De plus, pour utiliser le noeud final de développeur Authorize.net, developer_mode doit être défini sur true dans les paramètres de la passerelle. Ceci est différent de test_mode (fonctionnalité spécifique d'Auth.net):

$settings = array(
    'api_login_id' => 'xxxx',
    'transaction_key' => 'xxxx',
    'developer_mode' => true,
);
$this->merchant->initialize($settings);
1
Adrian Macneil