Changeset 3231483
- Timestamp:
- 01/29/2025 06:14:19 PM (14 months ago)
- Location:
- refacil-pay/trunk
- Files:
-
- 2 added
- 4 edited
-
class-gateway.php (modified) (12 diffs)
-
environment.php (added)
-
includes/callback-refacil.php (modified) (5 diffs)
-
includes/logger.php (added)
-
re-facil-gateway.php (modified) (6 diffs)
-
readme.txt (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
refacil-pay/trunk/class-gateway.php
r3178945 r3231483 9 9 private $reference1; 10 10 private $store_id; 11 private $logger; 12 private $environment; 11 13 12 14 public function __construct() 13 15 { 16 $this->logger = new Logger(); 17 $this->environment = Environment::from_env(); 14 18 $this->fetch_store_id_from_bd(); 15 19 $this->setup_properties(); … … 26 30 global $wpdb; 27 31 $table_name = $wpdb->prefix . 're_facil_store_id'; 28 $this->token = $wpdb->get_var( 29 $wpdb->prepare("SELECT token FROM $table_name WHERE id = %d", 1)); 32 $this->token = $wpdb->get_var($wpdb->prepare("SELECT token FROM $table_name WHERE storeId = %s", $this->store_id)); 30 33 $show_register_button = is_null($this->token); 31 $this->form_fields = array( 32 'success_registration' => array( 34 35 $this->form_fields = array(); 36 37 if (!$show_register_button) { 38 $this->form_fields['success_registration'] = array( 33 39 'type' => 'hidden', 34 'title' => __('Su plugin esta activo.', 're-facil-payments-woo'), 35 ), 36 ); 37 if ($show_register_button) { 38 $this->form_fields = array( 39 'customize_button' => array( 40 'title' => __('Registrate!', 're-facil-payments-woo'), 41 'type' => 'button', 42 'custom_attributes' => array( 43 'onclick' => "var button = this; window.open('" . 44 esc_url('https://autoregistro.refacilpay.co//?comm=1&storeid=' . $this->store_id . 45 '&returnurl=' . urlencode(get_site_url() . '/wp-json/api/auth/refacil')) . 46 "', '_blank'); button.style.display = 'none'; alert('Actualiza la página si ya te registraste.');" 47 ), 48 'description' => __('Debes registrate para poder usar este plugin.', 're-facil-payments-woo'), 49 'desc_tip' => true, 50 ) 40 'title' => __('¡El plugin Refácil Pay está activo! Comienza a realizar pagos ahora.', 're-facil-payments-woo'), 41 ); 42 } else { 43 $url = $this->get_register_url() . '?comm=1&storeid=' . $this->store_id . '&returnurl=' . urlencode(get_site_url() . '/wp-json/api/auth/refacil'); 44 $this->form_fields['customize_button'] = array( 45 'title' => __('Registrarme', 're-facil-payments-woo'), 46 'type' => 'button', 47 'custom_attributes' => array( 48 'onclick' => "var button = this; button.disabled = true; button.innerText = 'Cargando...'; window.open('" . 49 esc_url($url) . 50 "', '_blank'); setTimeout(function() { button.disabled = false; button.innerText = 'Registrarme'; alert('Por favor, actualiza la página si ya completaste el registro.'); }, 5000);", 51 'class' => 'refacil-register-button' 52 ), 53 'description' => __('Debes registrarte para poder usar este plugin. Haz clic en el botón para registrarte y luego actualiza la página.', 're-facil-payments-woo'), 54 'desc_tip' => true, 51 55 ); 52 56 } … … 71 75 $data = wp_parse_args($data, $defaults); 72 76 ob_start(); 73 ?> 74 <tr> 75 <th scope="row" class="titledesc"> 76 <label for="<?php echo esc_attr($field); ?>"><?php echo wp_kses_post($data['title']); ?></label> 77 <?php echo $this->get_tooltip_html($data); ?> 78 </th> 79 <td class="forminp"> 80 <fieldset> 81 <legend class="screen-reader-text"><span><?php echo wp_kses_post($data['title']); ?></span></legend> 82 <button class="<?php echo esc_attr($data['class']); ?>" type="button" 83 name="<?php echo esc_attr($field); ?>" id="<?php echo esc_attr($field); ?>" 84 style="<?php echo esc_attr($data['css']); ?>" 85 <?php echo $this->get_custom_attribute_html($data); ?>> 86 <?php echo wp_kses_post($data['title']); ?> 87 </button> 88 <?php echo $this->get_description_html($data); ?> 89 </fieldset> 90 </td> 91 </tr> 92 <?php 77 ?> 78 <div class="form-field"> 79 <label for="<?php echo esc_attr($field); ?>"><?php echo wp_kses_post($data['title']); ?></label> 80 <?php echo $this->get_tooltip_html($data); ?> 81 <button class="<?php echo esc_attr($data['class']); ?>" type="button" 82 name="<?php echo esc_attr($field); ?>" id="<?php echo esc_attr($field); ?>" 83 style="<?php echo esc_attr($data['css']); ?>" 84 <?php echo $this->get_custom_attribute_html($data); ?>> 85 <?php echo wp_kses_post($data['title']); ?> 86 </button> 87 <?php echo $this->get_description_html($data); ?> 88 </div> 89 <?php 93 90 return ob_get_clean(); 94 91 } … … 102 99 { 103 100 $order = wc_get_order($order_id); 104 $this->get_trx_token(); 105 $this->create_payment_structure($order); 106 $response_transaction = $this->create_transaction($order->get_id()); 107 $response_status_code = $response_transaction['response_status_code']; 108 if ($response_status_code === '00' && isset($response_transaction['url_return'])) { 109 $order->set_payment_method_title($this->method_title); 110 $order->save(); 101 $this->logger->info('Processing payment for order ' . $order_id); 102 103 try { 104 $this->get_trx_token(); 105 $this->create_payment_structure($order); 106 $response_transaction = $this->create_transaction($order->get_id()); 107 $response_status_code = $response_transaction['response_status_code']; 108 109 if ($response_status_code === '00' && isset($response_transaction['url_return'])) { 110 $order->set_payment_method_title($this->method_title); 111 $order->save(); 112 113 return array( 114 'result' => 'success', 115 'redirect' => $response_transaction['url_return'], 116 ); 117 } else { 118 $message = 'Error processing payment for order: ' . $order_id . ' - Response: ' . json_encode($response_transaction); 119 $this->logger->error($message); 120 121 return array( 122 'result' => 'error', 123 'message' => 'Error al procesar el pago: ' . $response_status_code 124 ); 125 } 126 } catch (Exception $e) { 127 $message = 'Exception processing payment for order ' . $order_id . ' - ' . $e->getMessage(); 128 $this->logger->error($message); 129 111 130 return array( 112 'result' => 'success', 113 'redirect' => $response_transaction['url_return'], 114 ); 115 } 116 return array( 117 'result' => 'error', 118 'message' => 'Error al procesar el pago: ' . $response_status_code 119 ); 131 'result' => 'error', 132 'message' => 'Excepción al procesar el pago: ' . $e->getMessage() 133 ); 134 } 120 135 } 121 136 … … 145 160 * @return string 146 161 */ 147 public function get_refacil_url(): string 148 { 149 return 'https://pay-api.refacil.co/'; 162 public function get_pay_api_url(): string 163 { 164 return $this->environment->get_pay_api_url(); 165 } 166 167 /** 168 * @return string 169 */ 170 public function get_register_url(): string 171 { 172 return $this->environment->get_register_url(); 150 173 } 151 174 … … 157 180 * @return int 158 181 */ 159 public function register_transaction_log($request_body, $event_name, $response_code = null, 160 $response_data = null): int 182 public function register_transaction_log($request_body, $event_name, $response_code = null, $response_data = null): int 161 183 { 162 184 global $wpdb; … … 193 215 $this->id = self::GATEWAY_ID; 194 216 $this->method_title = __('ReFacilPay', 're-facil-gateway'); 195 $this->method_description = __('Ac cept payments through Refacil', 're-facil-gateway');217 $this->method_description = __('Acepta pagos de manera fácil y segura a través de Refácil Pay, una solución integral para tu tienda en línea.', 're-facil-gateway'); 196 218 $this->has_fields = false; 197 219 $this->title = 'REFÁCIL PAY'; 198 220 $this->icon = plugin_dir_url(__FILE__) . 'assets/images/refacil_logo.png'; 199 $this->description = 'Paga con <b>Transfiya,PSE, Nequi, Daviplata, Bancolombia, TPAGA y Efectivo,' . 200 ' </b> Refacil Pay un <b>centralizador de pagos</b> con múltiples <b>soluciones.</b>'; 201 221 $this->description = 'Paga con <b>Transfiya, PSE, Nequi, Daviplata, Bancolombia, TPAGA y Efectivo,' . 222 ' </b> Refácil Pay un <b>centralizador de pagos</b> con múltiples <b>soluciones.</b>'; 202 223 } 203 224 … … 220 241 private function create_payment_structure($order): void 221 242 { 243 $webhookUrl = $this->environment->get_webhook_url(); 244 $returnUrl = $this->environment->get_return_url($order); 222 245 $name = $order->get_billing_first_name() . ' ' . $order->get_billing_last_name(); 223 246 $email = $order->get_billing_email(); 224 247 $cell_phone = $order->get_billing_phone(); 248 225 249 $this->request_body_pay = ([ 226 250 'expiresIn' => 0, 227 251 'amount' => WC()->cart->get_total(null), 228 252 'brandId' => 62, 229 //todo asociar urls de reales 230 'webhookUrl' => get_site_url() . '/wp-json/api/payments/refacil', 231 //'webhookUrl' => 'googole.com' . '/wp-json/api/payments/refacil', 232 //'returnUrl' => 'google.com/return', 233 'returnUrl' => $this->get_return_url($order), 253 'webhookUrl' => $webhookUrl, 254 'returnUrl' => $returnUrl, 234 255 'showSummary' => true, 235 256 'name' => $order->get_billing_first_name() . ' ' . $order->get_billing_last_name(), … … 256 277 private function get_trx_token(): void 257 278 { 258 $data = array( 259 'service' => '/cash-in/generate/payment-link/token' 260 ); 261 $response = wp_remote_post( 262 $this->get_refacil_url() . 'trx-token/generate', 263 array( 264 'body' => wp_json_encode($data), 265 'headers' => array('Content-Type' => 'application/json', 266 'Authorization' => $this->token), 267 ) 268 ); 279 $authorization = "{'Bearer'} {$this->token}"; 280 $request_headers = array('Content-Type' => 'application/json', 'Authorization' => $authorization); 281 $url = $this->get_pay_api_url() . 'trx-token/generate'; 282 $data = array('service' => '/cash-in/generate/payment-link/token'); 283 284 $response = wp_remote_post($url, array('body' => wp_json_encode($data), 'headers' => $request_headers)); 269 285 $response_code = wp_remote_retrieve_response_code($response); 286 270 287 if ($response_code === 200) { 271 288 $response_body = wp_remote_retrieve_body($response); … … 283 300 $this->reference1 = time() . str_pad($order_id, 10, '0', STR_PAD_LEFT); 284 301 $this->request_body_pay['reference1'] = $this->reference1; 285 $authorizationHeader = "{'bearer'} {$this->token}"; 302 303 $authorization = "{'Bearer'} {$this->token}"; 304 $request_headers = [ 305 'Content-Type' => 'application/json', 306 'Authorization' => $authorization, 307 'x-transaction-token' => $this->x_transaction_token, 308 ]; 309 286 310 $response = wp_remote_post( 287 $this->get_refacil_url() . 'cash-in/generate/payment-link/token', 288 array( 289 'body' => json_encode($this->request_body_pay), 290 'headers' => [ 291 'Content-Type' => 'application/json', 292 'Authorization' => $authorizationHeader, 293 'x-transaction-token' => $this->x_transaction_token, 294 ], 295 ) 311 $this->get_pay_api_url() . 'cash-in/generate/payment-link/token', 312 array('body' => json_encode($this->request_body_pay), 'headers' => $request_headers) 296 313 ); 314 297 315 $response_body = wp_remote_retrieve_body($response); 298 316 $response_data = json_decode($response_body, true); 299 317 $response_code = wp_remote_retrieve_response_code($response); 300 $response_status_code = $response_data['statusCode'] ??null;318 $response_status_code = is_array($response_data) ? $response_data['statusCode'] ?? null : null; 301 319 $url_return = null; 302 if ($response_code >= 200 && $response_code < 300 && $response_status_code === '00') { 303 $url_return = $response_data['data']['url']; 304 $this->add_payment_record($order_id, $response_data['data']['reference'], 305 $this->reference1, $response_data['data']['resourceId'], 306 $response_data['data']['status']); 320 321 322 if ($response_code >= 200 && $response_code < 300 && $response_status_code === '00' && is_array($response_data)) { 323 $url_return = $response_data['data']['url'] ?? null; 324 $this->add_payment_record( 325 $order_id, 326 $response_data['data']['reference'] ?? null, 327 $this->reference1, 328 $response_data['data']['resourceId'] ?? null, 329 $response_data['data']['status'] ?? null 330 ); 307 331 } elseif ($response_code === 401) { 308 332 $this->delete_invalid_token(); 309 $this->register_transaction_log(json_encode($this->request_body_pay), 333 $this->register_transaction_log( 334 json_encode($this->request_body_pay), 310 335 'create_transaction_delete_invalid_token', 311 $response_code, $response_data['data'] ?? $response_data['message']); 312 336 $response_code, 337 json_encode($response_data) 338 ); 313 339 } else { 314 $this->register_transaction_log(json_encode($this->request_body_pay), 'create_transaction', 315 $response_code, $response_data['data'] ?? $response_data['message']); 316 } 340 $this->register_transaction_log( 341 json_encode($this->request_body_pay), 342 'create_transaction', 343 $response_code, 344 json_encode($response_data) 345 ); 346 } 347 317 348 return array( 318 349 'response_status_code' => $response_status_code, 319 'url_return' => $url_return); 350 'url_return' => $url_return, 351 'message' => $response_data['message'] ?? null, 352 'data' => $response_data['data'] ?? null 353 ); 320 354 } 321 355 … … 328 362 * @return void 329 363 */ 330 private function add_payment_record($order_id, $re_facil_reference, $reference1, $re_facil_resource_id, 331 $re_facil_status): void 332 { 364 private function add_payment_record( 365 $order_id, 366 $re_facil_reference, 367 $reference1, 368 $re_facil_resource_id, 369 $re_facil_status 370 ): void { 333 371 global $wpdb; 334 372 $table_name = $wpdb->prefix . 're_facil_payments'; … … 362 400 global $wpdb; 363 401 $table_name = sanitize_text_field($wpdb->prefix . 're_facil_store_id'); 364 $wpdb->query("UPDATE $table_name SET token = NULL WHERE id = 1"); 402 $query = $wpdb->prepare("UPDATE $table_name SET token = NULL WHERE storeId = %s", $this->store_id); 403 $wpdb->query($query); 365 404 } 366 405 } -
refacil-pay/trunk/includes/callback-refacil.php
r3178945 r3231483 1 1 <?php 2 3 require_once plugin_dir_path(__FILE__) . '/logger.php'; 2 4 3 5 class WC_REST_Custom_Controller … … 6 8 protected string $namespace_auth = 'api/auth'; 7 9 protected string $rest_base = 'refacil'; 10 private $logger; 11 12 public function __construct() 13 { 14 $this->logger = new Logger(); 15 } 8 16 9 17 /** … … 34 42 public function process_auth(WP_REST_Request $data): WP_REST_Response 35 43 { 36 if (is_null($data['storeId']) || is_null($data['token'])) { 37 return new WP_REST_Response(['error' => 'Parámetros inválidos'], 422); 38 } 44 $message = null; 45 46 if (is_null($data['storeId'])) { 47 $message = 'The storeId field is missing'; 48 $this->logger->error($message . ' - Data: ' . json_encode($data->get_params())); 49 return new WP_REST_Response(['error' => 'The storeId field is missing'], 422); 50 } 51 52 if (is_null($data['token'])) { 53 $message = 'The token field is missing'; 54 $this->logger->error($message . ' - Data: ' . json_encode($data->get_params())); 55 return new WP_REST_Response(['error' => 'The token field is missing'], 422); 56 } 57 39 58 return $this->associate_token($data); 40 59 } … … 95 114 { 96 115 global $wpdb; 116 $message = null; 97 117 $table_name = $wpdb->prefix . 're_facil_store_id'; 98 118 $storeId = $wpdb->get_var("SELECT storeId FROM $table_name"); 119 99 120 if ($storeId === $data['storeId']) { 100 121 $result = $wpdb->update( … … 103 124 array('storeId' => $storeId) 104 125 ); 105 126 106 127 if ($result !== false) { 107 return new WP_REST_Response(['message' => 'Se le asignó correctamente el token al storeid: ' . 108 $storeId], 200); 128 $message = 'Token assigned to storeId: ' . $storeId; 129 $this->logger->info($message); 130 return new WP_REST_Response(['message' => $message], 200); 109 131 } else { 110 return new WP_REST_Response(['error' => 'Error no se encontró registro relacionado al storeId: ' . 111 $data['storeId']], 404); 132 $message = 'Register not found related to storeId: ' . $data['storeId']; 133 $this->logger->error($message); 134 return new WP_REST_Response(['error' => $message], 404); 112 135 } 113 } 114 return new WP_REST_Response(['error' => 'Error al asignar el token del storeId: ' . $storeId], 404); 136 } else { 137 $message = 'Error assigning token to storeId: ' . $storeId; 138 $this->logger->error($message); 139 return new WP_REST_Response(['error' => $message], 404); 140 } 115 141 } 116 142 -
refacil-pay/trunk/re-facil-gateway.php
r3179098 r3231483 1 1 <?php 2 2 /* 3 Plugin Name: Refácil Pay3 Plugin Name: Refácil Pay 4 4 Description: Pasarela de pagos para Woocommerce. 5 Version: 1.0. 46 Author: Refácil 7 Author URI: https:// www.refacil.co/5 Version: 1.0.5 6 Author: Refácil Pay 7 Author URI: https://refacilpay.com/ 8 8 License: GPL-2.0+ 9 9 License URI: http://www.gnu.org/licenses/gpl-2.0.txt 10 Text Domain: refacil-pay 10 Text Domain: custom-gateway 11 Domain Path: /languages 11 12 */ 12 13 … … 26 27 require_once plugin_dir_path(__FILE__) . '/includes/callback-refacil.php'; 27 28 require_once plugin_dir_path(__FILE__) . '/includes/event-log-refacil.php'; 29 require_once plugin_dir_path(__FILE__) . '/includes/logger.php'; 30 require_once plugin_dir_path(__FILE__) . 'environment.php'; 28 31 new Event_Log_Re_Facil_Table_Creator(); 29 32 } … … 44 47 { 45 48 create_refacil_cronjob(); 46 47 49 } 48 50 … … 60 62 * @return array 61 63 */ 62 function update_pending_orders_schedule( ): array64 function update_pending_orders_schedule($schedules): array 63 65 { 64 66 $schedules['10minutes'] = array( … … 82 84 function update_pending_orders(): void 83 85 { 84 $logger = wc_get_logger();85 $logger->info("Ini cia cron órdenes pendientes ReFacilPay.");86 $logger = new Logger(); 87 $logger->info("Init cronjob to update pending orders"); 86 88 try { 87 89 $pending_orders = wc_get_orders(array( … … 127 129 ); 128 130 $response = wp_remote_post( 129 $re_facil_pay_gateway->get_ refacil_url() . 'payment/status',131 $re_facil_pay_gateway->get_pay_api_url() . 'payment/status', 130 132 array( 131 133 'body' => wp_json_encode($data), -
refacil-pay/trunk/readme.txt
r3179098 r3231483 1 1 === Refácil Pay === 2 Contributors: @refacilpay 3 Tags: Efectivo, ventas, pagos inmediatos, transferencias, medios de pago4 Requires at least: 4.0 5 Tested up to: 6. 66 Stable tag: 1.0. 47 Requires PHP: 7.0 8 License: GPL-2.0+ 9 License URI: https://www.gnu.org/licenses/gpl-2.0.html 2 Contributors: @refacilpay 3 Tags: efectivo, ventas, pagos inmediatos, transferencias, medios de pago, pasarela de pagos 4 Requires at least: 4.0 5 Tested up to: 6.4.2 6 Stable tag: 1.0.5 7 Requires PHP: 7.0 8 License: GPL-2.0+ 9 License URI: https://www.gnu.org/licenses/gpl-2.0.html 10 10 11 Here is a short description of the plugin. This should be no more than 150 characters. No markup here. 11 La solución de pagos más completa y económica del mercado. Refácil Pay permite a tus clientes elegir el medio de pago que deseen, entregando diversas opciones que incluyen botones de pago con entidades como: 12 12 13 == Descripción == 14 Somos la solución de pagos más completa y económica del mercado. 15 Refácil Pay permite a tus clientes elegir el medio de pago que desee, entregando diversas opciones que incluyen botones de pago con entidades como: 13 - Transfiya 14 - Nequi (experiencia Transfiya) 15 - Daviplata (experiencia Transfiya Bancolombia) 16 - PSE 17 - TPAGA 18 - Recaudo en efectivo 16 19 17 Transfiya 18 Nequi (experiencia Transfiya) 19 Daviplata (experiencia Transfiya Bancolombia) 20 PSE 21 Transfiya 22 TPAGA 23 Recaudo en efectivo 24 ¿Cuánto cuesta usar Refácil Pay? 20 == Descripción == 21 Refácil Pay es una pasarela de pagos sencilla e intuitiva que permite a tus clientes realizar pagos mediante diferentes opciones disponibles en Colombia. Con integración directa a WooCommerce, facilita la aceptación de pagos en tu tienda en línea. 25 22 26 2,5% + $500 + IVA, recuerda que puedes retirar tu dinero al día siguiente hábil de haber solicitado el retiro de tu dinero. 27 ¿Cómo puedo comunicarme con el equipo de Refácil Pay? 23 ### Ventajas: 24 - **Bajos costos:** 2,5% + $500 + IVA por transacción. 25 - **Retiro inmediato:** Puedes retirar tus fondos al día siguiente hábil. 26 - **Soporte integral:** Contacto vía correo electrónico y WhatsApp. 28 27 29 Si necesitas ayuda comunícate con nuestro equipo de atención al cliente soporte.comercial@refacil.com, WhatsApp 310 2409917 30 == Requisitos previos == 31 - WooCommerce instalado y activado. 28 == Requisitos previos == 29 - WooCommerce instalado y activado. 32 30 33 == Instalación == 34 1. Busca el plugin "Refácil Pay para WooCommerce" en la tienda de plugins de WordPress. 31 == Instalación == 32 1. Busca el plugin "Refácil Pay para WooCommerce" en la tienda de plugins de WordPress. 33 2. Instala y activa el plugin desde el panel de administración de WordPress. 34 3. Configura el plugin en la sección "Métodos de Pago" de WooCommerce. 35 35 36 == Configuración == 37 Desde las configuraciones de WooCommerce, ve a "Métodos de Pago" y en la configuración del plugin se debe hacer el registro (boton 'Registrate!') del usuario del administrador del comercio para activar el plugin [Imagen 1] 36 == Configuración == 37 1. Accede a las configuraciones de WooCommerce. 38 2. Ve a "Métodos de Pago" y selecciona **Refácil Pay**. 39 3. Completa el registro del usuario administrador del comercio para activar el plugin. 40 4. Inicia sesión en Refácil Pay y completa la configuración de tu cuenta. 38 41 39 [Imagen 1](https://s3.amazonaws.com/plataforma.refacil.co/slides/plugin-refacilpay-woocommerce.png ) 42 == Frequently Asked Questions == 43 = ¿Qué medios de pago puedo usar con Refácil Pay? = 44 - Botón de pago Transfiya 45 - Botón de pago Nequi (experiencia Transfiya) 46 - Botón de pago Daviplata (experiencia Transfiya) 47 - Botón de pago Bancolombia 48 - Botón de pago PSE 49 - Botón de pago TPAGA 50 - Botón de pago Recaudo en efectivo 40 51 52 = ¿Cuáles son las recomendaciones de seguridad para hacer uso correcto de los medios de pago? = 53 - Confirma que los pagos se encuentren en estado exitoso antes de enviar productos o servicios. 54 - No compartas información sobre tus usuarios y contraseñas. 55 - Mantén tu información de perfil actualizada. 56 - Cambia tus contraseñas al menos cada tres meses. 41 57 42 == Frequently Asked Questions == 43 = ¿Qué medios de pago puedo usar con Refacil? 44 Botón de pago Transfiya. 45 Botón de pago Nequi (experiencia transfiiya) 46 Botón de pago Daviplata (experiencia transfiiya) 47 Botón de pago Bancolombia 48 Botón de Pago PSE 49 Botón de pago TPAGA 50 Botón de Pago Recaudo en efectivo 58 = ¿Cómo puedo retirar mi dinero? = 59 En el portal de Refácil Pay (https://app.refacilpay.com/home), selecciona la opción "Retiros". Registra tu cuenta bancaria y solicita el retiro. 51 60 52 = ¿Cuáles son las recomendaciones de seguridad para hacer uso correcto de los 53 medios de pago? 54 Es importante confirmar que tus pagos se encuentren en estado exitoso 55 antes de enviar o entregar productos o servicios. 56 No compartir información sobre tus usuarios y contraseñas. 57 Mantener tu información de perfil actualizada. 58 Cambiar tus contraseñas por lo menos una vez cada tres meses. 61 = ¿Cada cuánto puedo retirar mi dinero? = 62 - Las solicitudes se procesan de lunes a viernes (días hábiles). 63 - Los retiros online están disponibles 24/7. 59 64 60 = ¿Como puedo retirar mi dinero? 61 Dentro del portal de RefacilPay ( https://app.refacilpay.com/home), en la sesión 62 retiros, podrás solicitar retiro de tu saldo, registrando tu cuenta en la opción 63 solicitar retiro, ingresas el banco y numero de cuenta hacia donde requieres se 64 traslade los recursos, esta solicitud se procesa al día siguiente laboral. 65 También puedes solicitar retiro online a través del servicio de Transfiya 66 retiros, este servicio te permite retirar tu dinero en línea y a cualquier de las 19 67 entidades financieras asociadas a Transfiya. 65 = ¿Qué costo tiene el retiro? = 66 - Un retiro semanal gratuito a cuentas Bancolombia o Nequi. 67 - Retiro adicional: $1.000. 68 - Para entidades financieras distintas: dos retiros gratis al mes, adicionales a $1.500. 69 - Retiro online: $1.000 + 0,5% + IVA. 68 70 69 = ¿Cada cuanto lo puedo retirar? 70 Las solicitudes de retiro se procesan de lunes a viernes (días hábiles). 71 Los retiros online se pueden efectuar los 7 días a las semana, las 24 horas del 72 día. 71 = ¿Cuál es el costo de una transacción rechazada? = 72 En Refácil Pay las transacciones rechazadas no tienen costo. 73 73 74 = ¿Qué costo tiene el retiro? 75 A cuentas Bancolombia o Nequi podrás efectuar un (1) retiro a la semana sin 76 costo, los retiros adicionales tendrán un costo de $1.000. 77 Si tu cuenta es de una entidad financiera diferente a Nequi o Bancolombia, 78 podrás retirar dos (2) veces al mes sin costo, los retiros adicionales tendrán un 79 costo de $1.500. 80 Para los retiros ONLINE el costo es de cada retiro será de $1.000 + 0,5%+IVA, 81 el límite de este retiro es de $2.000.000 y la transferencia debe ser aceptada 82 en un máximo de doce (12) horas. 83 84 = ¿Cuanto me cuesta usar cada medio de pago? 85 2,5% + $500 + IVA por cada transacción, esta tarifa se descuenta online una 86 vez la transacción quede en estado exitosa. 87 88 = ¿Dónde puedo ver el saldo de mis movimientos? 89 Dentro del portal de RefacilPay ( https://app.refacilpay.com/home), en la sesión 90 retirar, puedes ver el saldo y los movimientos asociados a tu comercio. 91 92 = ¿Dónde puedo ver los movimientos de mis transacciones? 93 En el portal Refacil ( https://app.refacilpay.com/home) en la opción 94 Movimientos, podrás ver informes transacciones con filtros de consulta para 95 transacciones exitosas, fallidas y pendientes, igualmente podrás ver tus 96 transacciones de retiro. 97 98 = ¿Cuál es el costo de una transacción rechazada? 99 En Refacil Pay las transacciones rechazadas NO tienen costo. 74 = ¿Dónde puedo ver el saldo y movimientos de mis transacciones? = 75 En el portal Refácil Pay, sección "Movimientos", puedes ver informes detallados con filtros para transacciones exitosas, fallidas y pendientes. 100 76 101 77 = Si tengo dudas o requiero comunicarme con el equipo de Refácil Pay, ¿qué debo hacer? 102 Si necesitas ayuda comunícate con nuestro equipo de atención al cliente al correo 103 soporte.comercial@refacil.com o al WhatsApp 310 2409917, en el Horario de Lunes 104 a viernes: 8:00 am - 12:00 pm y de 2:00 p.m. a 6:00 p.m. 78 Si necesitas ayuda comunícate con nuestro equipo de atención al cliente al correo soporte.comercial@refacil.com o al WhatsApp 310 2409917, en el Horario de Lunes a viernes: 8:00 am - 12:00 pm y de 2:00 p.m. a 6:00 p.m. 105 79 80 == Screenshots == 81 1. [Vista de la configuración del plugin](https://s3.amazonaws.com/plataforma.refacil.co/slides/plugin-refacilpay-woocommerce.png) 106 82 83 == Changelog == 84 = 1.0.5 = 85 * Corrección de bug en el manejo de credenciales. 86 * Implementación de monitoreo en la generación de recursos de pago. 107 87 108 == Screenshots == 109 1. Url de screenshots mencionados en todo el readme https://s3.amazonaws.com/plataforma.refacil.co/slides/plugin-refacilpay-woocommerce.png 88 = 1.0.1 = 89 * Mejora en la validación de configuración del plugin. 90 * Refactorización de queries SQL para mayor seguridad. 110 91 111 == Changelog == 112 = 1.0.0 = 113 * Se crea el plugin. 92 = 1.0.0 = 93 * Primera versión del plugin. 114 94 115 == Upgrade Notice == 116 = 1.0.1 = 117 * Se agrega check para configuracion sandbox y produccion. 118 * Se agrega seguridad a las querys usadas en el plugin. 119 95 == Upgrade Notice == 96 = 1.0.5 = 97 * Actualiza a esta versión para corregir problemas de credenciales y mejorar la seguridad de las consultas SQL.
Note: See TracChangeset
for help on using the changeset viewer.