def create(apiclient: ApiClient, payment_data: Dict[str, Any]) -> PaymentResponse: """ Este método permite crear una orden de pago a Flow y recibe como respuesta la URL para redirigir el browser del pagador y el token que identifica la transacción. La url de redirección se debe formar concatenando los valores recibidos en la respuesta de la siguiente forma: url + "?token=" +token Una vez que el pagador efectúe el pago, Flow notificará el resultado a la página del comercio que se envió en el parámetro urlConfirmation. """ url = f"{apiclient.api_url}/payment/create" payment = PaymentRequest.from_dict(payment_data) if not payment.apiKey: payment.apiKey = apiclient.api_key payment.s = apiclient.make_signature(asdict(payment)) logging.debug("Before Request:" + str(payment)) response = apiclient.post(url, asdict(payment)) if response.status_code == 200: return PaymentResponse.from_dict(cast(Dict[str, Any], response.json())) elif response.status_code == 400: raise GenericError(cast(Dict[str, Any], response.json())) elif response.status_code == 401: raise GenericError(cast(Dict[str, Any], response.json())) else: raise GenericError({"code": response.status_code, "message": response})
def createEmail(apiclient: ApiClient, payment_data: Dict[str, Any]) -> PaymentResponse: """ Permite generar un cobro por email. Flow emite un email al pagador que contiene la información de la Orden de pago y el link de pago correspondiente. Una vez que el pagador efectúe el pago, Flow notificará el resultado a la página del comercio que se envió en el parámetro urlConfirmation. """ url = f"{apiclient.api_url}/payment/createEmail" payment = PaymentRequestEmail.from_dict(payment_data) if payment.apiKey is None: payment.apiKey = apiclient.api_key payment.s = apiclient.make_signature(asdict(payment)) logging.debug("Before Request:" + str(payment)) response = apiclient.post(url, asdict(payment)) if response.status_code == 200: return PaymentResponse.from_dict(cast(Dict[str, Any], response.json())) elif response.status_code == 400: raise GenericError(cast(Dict[str, Any], response.json())) elif response.status_code == 401: raise GenericError(cast(Dict[str, Any], response.json())) else: raise GenericError({"code": response.status_code, "message": response})
def create(apiclient: ApiClient, refund_data: Dict[str, Any]) -> RefundStatus: """ Este servicio permite crear una orden de reembolso. Una vez que el receptor del reembolso acepte o rechaze el reembolso, Flow notificará vía POST a la página del comercio identificada en urlCallback pasando como parámetro token En esta página, el comercio debe invocar el servicio refund/getStatus para obtener el estado del reembolso. """ url = f"{apiclient.api_url}/refund/create" refund = RefundRequest.from_dict(refund_data) if refund.apiKey is None: refund.apiKey = apiclient.api_key refund.s = apiclient.make_signature(asdict(refund)) logging.debug("Before Request:" + str(refund)) response = apiclient.post(url, asdict(refund)) if response.status_code == 200: return RefundStatus.from_dict(cast(Dict[str, Any], response.json())) elif response.status_code == 400: raise GenericError(cast(Dict[str, Any], response.json())) elif response.status_code == 401: raise GenericError(cast(Dict[str, Any], response.json())) else: raise GenericError({"code": response.status_code, "message": response})