compropago / compropago-ruby

Ruby bindings for ComproPago
Other
4 stars 7 forks source link

Respuesta de orden con status = nil #32

Open alosada opened 6 years ago

alosada commented 6 years ago

Hola!

Estoy refactorizando nuestra integración de compropago y cuando envió órdenes al modo de prueba en la respuesta de order = client.api.place_order(order_info) el parametro order.status en el cual esperaría el valor 'pending' está llegando con el valor nil, y el campo type no está en la estructura, el cual esperaría con el valor "charge.pending" como descrito en la respuesta aqui: https://panel.compropago.com/documentacion/api/crear-cargo ya que no especifican una respuesta diferente para el SDK de Ruby, ni muestran ejemplos en este repositorio.

Es un error? Hay otra forma de verificar el estado del cargo sin tener que esperar el webhook o hacer una segunda solicitud al API?

Aquí la respuesta que obtengo:

irb(main):006:0> order
#<NewOrderInfo:0x007fe2d8938b50 @order_info=#<OrderInfo:0x007fe2d8938a60 @exchange=#<Exchange:0x007fe2d8938a10 @rate=1, @request="4bddcefc-7804-4494-9987-6be5385c043f", @origin_amount="100.00", @final_amount="100.00", @origin_currency="MXN", @final_currency="MXN", @exchange_id=nil>, @order_id="3a30885b-ac91-47cb-81a6-df7c323aed35", @order_name="project_foobar-back_3a30885b-ac91-47cb-81a6-df7c323aed35", @order_price=100, @image_url="">, @fee_details=#<FeeDetails:0x007fe2d89389e8 @amount=5.9, @tax=0.94, @tax_percent=nil, @currency="MXN", @type="compropago_fee", @description=nil, @amount_refunded=0>, @instructions=#<Instructions:0x007fe2d89389c0 @details=#<InstructionDetails:0x007fe2d8938970 @payment_amount="100.00", @payment_store="Oxxo", @amount="100.00", @store="Oxxo", @bank_account_number="0000 0000 0000 0000", @company_reference_name="ComproPago", @company_reference_number="00000000000000", @company_bank_number="00000000000000", @order_reference_number="40E73632", @bank_account_holder_name="ComproPago SAPI de CV", @bank_reference="40E73632", @bank_name="Banco Pruebas">, @description="Para que el pago sea válido debes pagar la cantidad exacta de $ 100.00", @step_1="Ir a la caja OXXO de 8:00 am a 8:00 pm", @step_2="Solicitar depósito bancario al número: Banco Pruebas 0000 0000 0000 0000", @step_3="Deposite la cantidad exacta de: $ 100.00", @note_extra_comition="No incluye la comisión de $10.00 de Oxxo", @note_expiration_date="Orden válida antes de 07/10/2018 04:00, en caso de vencimiento genera una nueva compra.", @note_confirmation="Tu pago será confirmado a través de SMS y correo electronico. ¡Gracias por usar ComproPago!">, @id="ch_e19838ba-e966-4bbb-a295-2eb58fbe7a0b", @short_id="40E73632", @object="charge", @status=nil, @created=nil, @exp_date=nil, @live_mode=nil, @api_version="1.1">

PD Los invitaria a checar el standard JSON_API http://jsonapi.org/

waldix commented 6 years ago

Hola @alosada disculpa la demora, ya estamos revisando el caso. Vamos a realizar algunas pruebas con tu tienda con las llaves de prueba para verificar las respuestas.

Te mantengo informado en el transcurso del día.

alosada commented 6 years ago

Alguna actualización?

waldix commented 6 years ago

@alosada Tengo la duda de donde estas tomando el parámetro "status"? Ya que en la generación, verificación y webhoook no manejamos este parámetro.

alosada commented 6 years ago

@waldix en el código tengo:

def order_success?(order)
  order.try(:type) == "charge.pending" || order.try(:status) == 'pending'
end

dónde order es el resultado de:

client.api.place_order order_info

waldix commented 6 years ago

@alosada El parámetro "status" actualmente solo lo utilizamos para el procesamiento con SPEI, estamos realizando una modificación a nuestra API para que sea solo una respuesta para los distintos métodos de pago.

Hay forma de que puedas cachar "status" únicamente cuando generas la orden de pago por SPEI, mientras realizamos las modificaciones necesarias para igual los JSON de repuesta.