open-pay / openpay-python

Openpay Python Bindings
19 stars 32 forks source link

charges as customer #7

Closed yusjacobs closed 3 years ago

yusjacobs commented 6 years ago

Hola @marcosAlvarado,

Gracias por actualizar la documentación. Era muy necesario desde hace tiempo. Tengo una duda con respecto al ejemplo de charges. Incluiste un ejemplo de cómo generar un charge a nivel merchant (comercio). Si no me equivoco, la única diferencia para crear el charge a nivel de cliente sería que debemos pasar el String customer_id a la hora de crear el charge, correcto? La sintaxis sería la siguiente? charge = openpay.Charge.create_as_customer( source_id="k2trvya1nxpcytgww4rt", customer_id="cz4nkhrlcu9k7qd4lwqx", method="card", amount=100, description="Fourth charge", ) Saludos,

marcosAlvarado commented 6 years ago

Hola @yusjacobs !

He agregado un ejemplo para crear un cargo para los customer, aquí abajo te dejo el fragmento...

`customer = openpay.Customer.retrieve('amce5ycvwycfzyarjf8l') print "customer: ", customer

card = customer.cards.create( card_number="4111111111111111", holder_name="Juan Perez Ramirez", expiration_year="20", expiration_month="12", cvv2="110", address={ "city":"Querétaro", "country_code":"MX", "postal_code":"76900", "line1":"Av 5 de Febrero", "line2":"Roble 207", "line3":"col carrillo", "state":"Queretaro" })

print "Card: ", card

print "Creating card as customer" charge = customer.charges.create(source_id=card.id, method="card", amount=100, description="Charge", capture=False)

print "charge: ", charge

print charge.refund()`

Saludos!

yusjacobs commented 6 years ago

Gracias @marcosAlvarado ,

Otra duda, si el cargo se hace con un token_id de tarjeta en lugar de una tarjeta previamente creada, pero se quiere hacer el cargo a nivel customer. Hay que pasar el customer_id?

Saludos,

yusjacobs commented 6 years ago

@marcosAlvarado ya vi que primero definiste la variable customer a un cliente en específico y con eso referencias el cargo. Gracias!

marcosAlvarado commented 6 years ago

Hola de nuevo @yusjacobs!

Si lo que deseas hacer es un cargo con una tarjeta que no se creo para el Customer, debes ejecutar el cargo de la misma forma por ejemplo

customer = openpay.Customer.retrieve('{customerId}') charge = customer.charges.create(source_id={tokenId}, method="card", amount=100, description="Charge", capture=False)

de esta forma la petición será la siguiente

POST https://sandbox-api.openpay.mx/v1/merchants/{merchantId}/customers/{customerId}/charges { "source_id": "{tokenId}", "method": "card", "amount":"100", "description":"Charge", "capture":false }

Saludos!

yusjacobs commented 6 years ago

Gracias,

No es necesario pasar también el deviceSessionId?

marcosAlvarado commented 6 years ago

Hola! Buen día! Si es necesario el deviceSessionId. Saludos!

Macodom commented 6 years ago

Hola, buenas tardes, podrías ser más claro donde va el deviceSessionId, ya que no puedo hacer cargos porque me dice que en el mensaje de error que no lo esta recibiendo., pero en el ejemplo de la documentación no viene donde se supone que está o se usa. Que tengas buen día.

cantoniohdez commented 4 years ago

Hola en el ambiente sandbox todo mi código funciona bien. Cuando pase a productivo obtengo este error Invalid usage use_3d_secure:true and capture:false, error code: 1003. Alguna sugerencia?

Ejemplo de consulta: charge = customer.charges.create(source_id='esvpngcg0o73icqzrjla', method="card", amount=amount, description='Cargo de Prueba' capture=False, redirect_url='http://www.openpay.mx/index.html', device_session_id="cs345ds32dFdfgE43Sa", use_3d_secure=True)

maraleronava commented 4 years ago

Podrian Apoyarme a integrar un pago en Angular

jemy-dasm-openpay commented 3 years ago

El tema principal ya se atendió.

jemy-dasm-openpay commented 3 years ago

Podrian Apoyarme a integrar un pago en Angular

@maraleronavaa puedes dejar tus dudas en el repositorio correspondiente por favor