2011-05-19 12 views
6

Trato de hacer una transacción de reembolso a través de mi aplicación Django mediante código:La transacción que se hace referencia no cumple con los criterios para la emisión de un crédito

class Handler(): 

    def __init__(self): 
     self.initial_values = { 
      'x_login': settings.API_LOGIN, 
      'x_tran_key': settings.TRANS_KEY, 
      'x_delim_data': 'TRUE', 
      'x_relay_response': 'FALSE', 
      'x_version': '3.1', 
     } 

    def send_AIM_credit(self, amount): 
     self.amount = amount 
     self.additional_values = { 
      'x_type': 'CREDIT', 
      'x_card_num': '370000000000002', 
      'x_amount': '123', 
      'x_description': "Refund", 
      'x_trans_id': 'someid' 
     } 
     result = self.__send_AIM_request() 
     if result[0] in ['3', '2']: 
      raise Exception("ERROR %s" % result[2], result[3]) 
     return result 

    def __send_AIM_request(self): 
     self.initial_values.update(self.additional_values) 
     logging.info(self.initial_values) 
     params_string = urllib.urlencode(self.initial_values) 
     response = urllib2.urlopen(settings.AIM_URL, params_string).read() 
     response_list = response.split(',') 
     logging.info(response_list) 
     return response_list 

Estoy seguro de que se le permite hacer esa transacción que quiero reembolsar eso porque tengo la opción de reembolso en el sitio web authorize.net. ¿Por qué no puedo hacer eso en mi aplicación? tal vez algo falta?

AIM_URL = 'https://test.authorize.net/gateway/transact.dll' 

Además en la documentación, leí que no necesito el número de tarjeta completo para la transacción de crédito, solo los últimos 4 dígitos. Pero cuando uso solo los últimos 4 dígitos recibo una respuesta que no se puede encontrar transacción

+0

Agregué x_test_reques = TRUE para solicitar y luego se aprobó la operación. Pero es una buena manera? Pensé que cuando realizo una solicitud para probar la transacción del servidor debería aprobarse sin ningún indicador adicional. ¿Qué pasa con este número de tarjeta? – szaman

Respuesta

2

El problema era con claves de seguridad que utilizo para comunicarse con authorize.net yo era capaz de hacer transacciones, pero no a la devolución de ellos. Cuando generé nuevas claves, el problema desapareció.

+1

Maldición. Esto robó dos horas de mi vida hasta que encontré tu publicación. Gracias. Los chicos de ANet están tan enojados con la seguridad que te hacen la vida imposible. La documentación es terriblemente mala para un servicio pago. ¿Qué tan difícil es poner "necesita regenerar su clave de transacción" en la descripción del código de error en los documentos? – Mauro

+0

Me alegro de poder ayudar.Espero que completen sus documentos :) – szaman

3

Los reembolsos solo pueden realizarse a través de Authorize.Net si la transacción original es menor de 6 meses y la cantidad es igual o inferior a la original monto de la compra. Si no cumple con este criterio, no puede emitir ese reembolso.

edición

FYI, el establecimiento de x_test_request = TRUE significa que la transacción era sólo una prueba y en realidad no procesada.

+0

Hice mis transacciones ayer. Ellos tienen un estado establecido con éxito. También realizo transacciones de reembolso con una cantidad mucho menor que la transacción original. – szaman

+0

¿Has verificado que estás enviando el transaction_id correcto de la compra original? –

+0

Tomo la identificación de la transacción desde el panel de authorize.net, así que estoy seguro de que es correcta – szaman

2

Esto también podría ser si la transacción es muy nuevo y no ha sido resuelto. En este caso, deseará ANULAR la transacción.

1

de:

https://support.authorize.net/authkb/index?page=content&id=A567

he encontrado que:

  • reembolsos no pueden ser procesados ​​en las transacciones de más de 120 días.

así que creo que los 6 meses se han modificado y son actualmente incorrectos. Traté de emitir un REEMBOLSO por una transacción de 122 días de antigüedad, y recibí el mensaje de error que figura más arriba.

+0

sí pRose es correcto! – Jaswinder

1

tienen el mismo problema con mi cuenta de prueba. No puedo reembolsar la transacción creada hace unos minutos. Debería iniciar sesión en su cuenta de espacio aislado y acceder a la configuración de la cuenta -> modo de prueba -> proceso de transacción establecer 'Prueba' fue 'En vivo' en mi caso. Que el éxito reembolsado por la transacción.

Cuestiones relacionadas