3

Je développe un site web qui utilise Authorize.net mais j'utilise actuellement un compte de test. Pour tester un remboursement, il nécessite un identifiant de transaction unique, mais puisque je n'utilise qu'un compte de test, il ne renvoie pas un identifiant de transaction unique lorsque vous effectuez une transaction de test (toujours 2147483647). Y a-t-il un autre moyen pour que cela fonctionne? J'ai besoin de voir si mon code fonctionnera avec l'API.Test de remboursement sur Authorize.net en utilisant un compte de test?

+0

Cela fait trop longtemps que je sois sûr, mais je pense que vous devez être en mode direct (pas en mode Test)) pour un remboursement au travail. Authorize.NET dit d'utiliser une transaction de 1 cent, leur Guide d'intégration marchande peut avoir plus de détails. – ryanday

+0

merci! Je vais essayer cela – Singletonio

Répondre

0

Pour obtenir transaction id, lors de l'envoi demande de transaction en mode test, vous devez définir en vous demandez la liste des paramètres:

x_test_request=FALSE 

vous obtiendrez id correct

+0

Dans Magento 1.7.0.2, cette valeur est définie dans /app/code/core/Mage/Paygate/Model/Authorizenet.php - dans la méthode '_getRequest()', voir 'setXTestRequest()' – pspahn

1

Quel que soit le code que vous utilisez pour analyser le "Identifiant de transaction" que Authorize.net vous redonne après qu'une transaction réussie est en train de convertir cet identifiant de transaction en un nombre entier. Il devrait être traité comme une chaîne, pas un entier. En 2008, Authorize a déclaré qu'il passait d'un nombre entier à un ID de transaction basé sur une chaîne car il manquait d'entiers 32 bits.

2147483647 est le plus grand entier de base 10 que vous pouvez créer avec 32 bits binaires (1111 1111 1111 1111 1111 1111 1111 1111). Cela signifie qu'Autorize renvoie un ID de transaction> 2147483647 (3000000000 par exemple) et que votre langage de programmation tronque les bits à la valeur maximale autorisée, 2147483647.

Examinez votre code PHP et assurez-vous que l'ID de la transaction est en cours d'exécution. valeur en tant que chaîne. Pour être sûr, vous pourriez vouloir passer par votre code et le lancer vous-même. Par exemple:

(string)$transaction_id 

Assurez-vous également que votre code ne fait pas les choses que les chaînes automatiquement sous forme d'entiers jetés. Par exemple:

$transaction_id + 1 

Enfin, si l'ID de transaction est en cours de lecture à partir d'une base de données, assurez-vous que la base de données stocke l'ID de transaction comme un type de chaîne. Par exemple, avec mysql, utilisez CHAR, ou VARCHAR et faites-le plus grand que 10. Essayez 16 ou 24 pour être sûr.

Références:

1

Si vous envoyez des messages à vos demandes https://test.authorize.net/gateway/transact.dll alors vous recevrez toujours 0 comme transaction_id.

Donc, en bref, vous aurez besoin d'un compte en direct pour tester vos remboursements. Vous pouvez définir x_test_request = TRUE et le publier sur https://secure.authorize.net/gateway/transact.dll et vérifier si vous obtenez un ID de transaction valide. Mais encore une fois, vous aurez besoin d'un compte Live valide avec Authorize.Net pour être en mesure d'envoyer des transactions à Live URL