open-pay/openpay-ruby

OpenpayTransactionException (OpenpayTransactionException)

Closed this issue · 2 comments

Al crear un pago SPEI devuelve error

@openpay=OpenpayApi.new(merchant_id,private_key)
@charges=@openpay.create(:charges)
request_hash={
"method" => "bank_account",
"amount" => 200.00,
"description" => "Cargo con banco",
"order_id" => "oid-00051"
}

response_hash=@charges.create(request_hash.to_hash)

causa error.

Traceback (most recent call last):
1: from (irb):18
OpenpayTransactionException (OpenpayTransactionException)

el ejemplo tomado del tutorial https://www.openpay.mx/docs/bank-charge.html# con mis credenciales de ambiente de prueba.

Existe alguna forma de saber cual es el error?

mphsi commented

Para conocer la causa del error puedes envolver tu código en un bloque begin rescue. Así puedes tener acceso al objeto del error, su description debería incluir la causa:

begin
  @openpay=OpenpayApi.new(merchant_id,private_key)
  @charges=@openpay.create(:charges)
  request_hash={
  "method" => "bank_account",
  "amount" => 200.00,
  "description" => "Cargo con banco",
  "order_id" => "oid-00051"
  }

  response_hash=@charges.create(request_hash.to_hash)
rescue => error
  puts error.description
end

El bloque begin rescue podría mejorarse esperando excepciones específicos. openpay-ruby provee tres, OpenpayConnectionException y OpenpayTransactionException. Ambas clases heredan de OpenpayException que a su vez hereda de StandardError.

Las clases están disponibles aquí

Another thing that is not described in the documentation is you have to add the customer inside request_hash:

request_hash = {
    "method" => "bank_account",
    "amount" => 200.00,
    "description" => "Cargo con banco",
    "order_id" => "oid-00051",
    "customer" => {
      "name" => "Juan",
      "last_name" => "Vazquez Juarez",
      "phone_number" => "4423456723",
      "email" => "juan.vazquez@empresa.com.mx"
    }
  }
response_hash=@charges.create(request_hash.to_hash)

I had the same error here, and it solved the problem!