Guía de migración - Comercios con varios métodos de pago

La siguiente sección está direccionada a los comercios que transaccionan en Conekta utilizando el producto de Efectivo y al menos un método de pago adicional, como Tarjetas y Transferencias. Para continuar procesando el producto de Efectivo con Oxxo Pay será necesario que crees un nuevo negocio en el portal de Digital Femsa y adaptes tu integración. A continuación detallamos los pasos a seguir.

Accede al nuevo Panel

Dirigite a https://panel.digitalfemsa.io para comenzar. Puedes ingresar con las mismas credenciales que utilizabas en Conekta o con tu cuenta de gmail.

Crea un nuevo negocio

Inicia el proceso para crear tu negocio en https://panel.digitalfemsa.io/dashboard. En la parte inferior izquierda visualizarás el acceso "Crear negocio"

Registra con los datos correspondientes el flujo de creación. Podrás utilizar los mismos datos con los que transaccionabas en Conekta. Una vez completado el proceso el equipo operativo aprobará la documentación entregada y estarás listo para comenzar


Modificaciones técnicas

A continuación detallamos los pasos a seguir para cada tipo de integración. Destacamos que para todos los casos tengas en cuenta que las api-keys de tu comercio son distintas y exclusivas para esta nueva integración. Dichas api-keys podrás consultarlas en https://panel.digitalfemsa.io/developers/api-keys

Integración por API

Si posees una integración deberás segmentar el flujo de Efectivo hacia el nuevo agregador de pagos Digital@Femsa utilizando el dominio https://api.digitalfemsa.io.. Las firmas de los recursos y los response correspondientes al nuevo dominio mantienen la misma estructura que utilizabas en Conekta. Ten en cuenta que la nueva api solo procesa efectivo.

SDK

En el caso de que utilices SDK, debes instalar el nuevo SDK desde el siguiente link : https://developers.digitalfemsa.io/page/bibliotecas-de-programaci%C3%B3n

(*) Las versiones anteriores a 6.0 de cada SDK no están disponibles. Deberás adaptar tus integraciones a esta nueva versión.

Php

Pasos para la migración de Php sdk

  1. composer remove conekta/conekta-php
  2. composer require digitalfemsa/femsa-php
  3. cambiar los imports para usar femsa-php como el siguiente ejemplo
 <?php
require_once(__DIR__ . '/vendor/autoload.php');



// Configure Bearer authorization: bearerAuth
$config = DigitalFemsa\Configuration::getDefaultConfiguration()->setAccessToken('API_KEY');


$apiInstance = new DigitalFemsa\Api\ApiKeysApi(
    // If you want use custom http client, pass your client which implements `GuzzleHttp\ClientInterface`.
    // This is optional, `GuzzleHttp\Client` will be used as default.
    new GuzzleHttp\Client(),
    $config
);
$api_key_request = new \DigitalFemsa\Model\ApiKeyRequest(); // \DigitalFemsa\Model\ApiKeyRequest | requested field for a api keys
$accept_language = "es"; // string | Use for knowing which language to use

try {
    $result = $apiInstance->createApiKey($api_key_request, $accept_language);
    print_r($result);
} catch (Exception $e) {
    echo 'Exception when calling ApiKeysApi->createApiKey: ', $e->getMessage(), PHP_EOL;
}

Ruby

Pasos para la migración de Ruby Sdk

  1. gem uninstall conekta
  2. gem install digital_femsa
  3. cambiar los imports, pueden seguir este ejemplo
# Load the gem
require 'digital_femsa'

# Setup authorization
DigitalFemsa.configure do |config|
  config.access_token = 'YOUR_API_KEY'
end

api_instance = DigitalFemsa::ApiKeysApi.new
api_key_request = DigitalFemsa::ApiKeyRequest.new({role: 'private'}) # ApiKeyRequest | requested field for a api keys
opts = {
  accept_language: 'es', # String | Use for knowing which language to use
}

begin
  #Create Api Key
  result = api_instance.create_api_key(api_key_request, opts)
  p result
rescue DigitalFemsa::ApiError => e
  puts "Exception when calling ApiKeysApi->create_api_key: #{e}"
end

Python

Pasos para la migración de Python Sdk

  1. pip uninstall conekta
  2. pip install digitalfemsa
  3. cambiar los imports, pueden seguir este ejemplo

import time
import digitialfemsa
from digitialfemsa.rest import ApiException
from pprint import pprint

# The client must configure the authentication and authorization parameters
# in accordance with the API server security policy.
# Examples for each auth method are provided below, use the example that
# satisfies your auth use case.

# Configure Bearer authorization: bearerAuth
configuration = digitialfemsa.Configuration(
    access_token = os.environ["API_KEY"]
)


# Enter a context with an instance of the API client
with digitialfemsa.ApiClient(configuration) as api_client:
    # Create an instance of the API class
    api_instance = digitialfemsa.CustomersApi(api_client)
    customer = digitialfemsa.Customer(
        email='[email protected]',
        name='Customer Name',
        phone='5534343434'
    ) # Customer | requested field for create Customer
    accept_language = 'es' # str | Use for knowing which language to use (optional) (default to 'es')

    try:
        # Create Customer
        api_response = api_instance.create_customer(customer, accept_language=accept_language)
        print("The response of CustomersApi->create_customer:\n")
        pprint(api_response)
    except ApiException as e:
        print("Exception when calling CustomersApi->create_customer: %s\n" % e)

Node

Pasos para la migración de Node Sdk

  1. npm uninstall conekta
  2. npm i digitalfemsa
  3. cambiar los imports, pueden seguir este ejemplo
import { CustomersApi, Configuration, Customer, CustomerResponse } from "digitalfemsa";

const apikey = "key_xxxxx";
const config = new Configuration({ accessToken: apikey });
const client = new CustomersApi(config);

const customer: Customer = {
  name: "John Constantine",
  email: "[email protected]",
  phone: "+5215555555555"
}

client.createCustomer(customer).then(response => {
  const customerResponse = response.data as CustomerResponse;
  console.log(customerResponse.id);
}).catch(error => {
  console.error("here", error);
});

Dotnet

  1. dotnet remove package Conekta.net
  2. dotnet add package DigitalFemsa.net
  3. cambiar los imports, pueden seguir este ejemplo
// Create a OrderRequest
using System;
using System.Collections.Generic;
using DigitalFemsa.net.Client;
using DigitalFemsa.net.Api;
using DigitalFemsa.net.Model;

// create the http client

string acceptLanguage = "en";
Configuration configuration = new()
{
    AccessToken = "Your merchant XAPI key"
};
var ordersApi = new OrdersApi(configuration);
var customerApi = new CustomersApi(config);

// create customer
var customer = new Customer(
    name: "test dot",
    phone: "+573143159063",
    email: "[email protected]"
);
CustomerResponse customerResponse = customerApi.CreateCustomer(customer);
// Create OrderRequest

var lineItems = new List<LineItems>{new (
        name: "toshiba",
        quantity: 1,
        unitPrice: 1555
    )};
var charges = new List<ChargeRequest>{new (
    amount: 1555,
    paymentMethod: new ChargeRequestPaymentMethod("cash")
)};
var customerInfo = new OrderRequestCustomerInfo(new CustomerInfoJustCustomerId(customerResponse.Id));
OrderRequest orderRequest = new OrderRequest(
    currency: "MXN",
    customerInfo: customerInfo,
    lineItems: lineItems,
    charges: charges
);
            
//Make the call to the service. This example code makes a call to /orders
OrderResponse response = ordersApi.CreateOrder(orderRequest, acceptLanguage);

Golang

Pasos para la migración de golang sdk

  1. go get -u github.com/digitalfemsa/digitalfemsa-go
  2. modificar imports usando el siguiente ejemplo
package main

import (
    "context"
	"net/http"
	
    "github.com/digitalfemsa/digitalfemsa-go"
)

func main() {
	// Create a OrderRequest
	const acceptLanguage = "es"
	const accessToken = "Your merchant XAPI key"

	// create the http client
	config := digitalfemsa.NewConfiguration()
	client := digitalfemsa.NewAPIClient(config)

	ctx := context.WithValue(context.TODO(), digitalfemsa.ContextAccessToken, accessToken)

	// create customer
	customer := digitalfemsa.Customer{
		Name:  "test go",
		Phone: "+573143159063",
		Email: "[email protected]",
	}
	customerResponse, httpResponse, err := client.CustomersApi.CreateCustomer(ctx).
		Customer(customer).
		AcceptLanguage(acceptLanguage).
		Execute()
	if err != nil {
		panic(err)
	}
	if httpResponse.StatusCode != http.StatusCreated {
		panic("invalid response statusCode")
	}

	// Create OrderRequest
	chargeRequest := digitalfemsa.ChargeRequest{
		Amount:        digitalfemsa.PtrInt32(1555),
		PaymentMethod: *digitalfemsa.NewChargeRequestPaymentMethod("cash"),
	}
	productLine := digitalfemsa.Product{
		Name:      "toshiba",
		Quantity:  1,
		UnitPrice: 1555,
	}
	orderRequest := digitalfemsa.OrderRequest{
		Charges: []digitalfemsa.ChargeRequest{
			chargeRequest,
		},
		Currency: "MXN",
		CustomerInfo: digitalfemsa.OrderRequestCustomerInfo{
			CustomerInfoJustCustomerId: digitalfemsa.NewCustomerInfoJustCustomerId(customerResponse.Id),
		},
		LineItems: []digitalfemsa.Product{
			productLine,
		},
	}

	//Make the call to the service. This example code makes a call to /orders
	orderResponse, httpResponse, err := client.OrdersApi.CreateOrder(ctx).
		OrderRequest(orderRequest).
		AcceptLanguage(acceptLanguage).
		Execute()
	if err != nil {
		panic(err)
	}
	if httpResponse.StatusCode != http.StatusCreated {
		panic("invalid response statusCode")
	}
	println(*orderResponse)   
}
  1. go mod tidy

Java

Pasos para la migración de java sdk

  1. remover dependencia de conekta del pom.xml o gradle file
  2. agregar la depedencia
    1. <!-- https://mvnrepository.com/artifact/io.digitalfemsa/ct-digitalfemsa-java -->
      <dependency>
          <groupId>io.digitalfemsa</groupId>
          <artifactId>ct-digitalfemsa-java</artifactId>
          <version>1.0.0</version>
      </dependency>
      	
      
  3. cambiar los imports, puedes seguir este ejemplo
import io.digitalfemsa.*;
import io.digitalfemsa.auth.*;
import io.digitalfemsa.model.*;
import io.digitalfemsa.CustomersApi;

public class CustomersApiExample {

    public static void main(String[] args) {
        ApiClient defaultClient = Configuration.getDefaultApiClient();

        // Configure HTTP bearer authorization: bearerAuth
        HttpBearerAuth bearerAuth = (HttpBearerAuth) defaultClient.getAuthentication("bearerAuth");
        bearerAuth.setBearerToken("API_KEY");

        CustomersApi apiInstance = new CustomersApi(defaultClient);
        Customer customer = new Customer(); // Customer | requested field for customer
        customer.setName("Customer Name");
        customer.setEmail("[email protected]");
        customer.setPhone("55454545454");
        String acceptLanguage = "es"; // String | Use for knowing which language to use
        try {
            CustomerResponse result = apiInstance.createCustomer(customer, acceptLanguage,null);
            System.out.println(result);
        } catch (ApiException e) {
            System.err.println("Exception when calling CustomersApi#createCustomer");
            System.err.println("Status code: " + e.getCode());
            System.err.println("Reason: " + e.getResponseBody());
            System.err.println("Response headers: " + e.getResponseHeaders());
            e.printStackTrace();
        }
    }
}

Integración por Component

Si posees una integración por Component deberás adaptar tu sitio para poder dividir en dos componentes separados la operatoria. El nuevo componente mantendrá la misma lógica para Efectivo y estará almacenada en https://pay.digitalfemsa.io/v1.0/js/digitalfemsa-checkout.min.js

Te compartimos un snippet para que puedas identificar el cambio:

<head>    
<meta charset=\"utf-8\" />
    <title>Checkout</title>
    <script
      crossorigin
      src=\" https://pay.digitalfemsa.io/v1.0/js/digitalfemsa-checkout.min.js\"
    ></script>
  <!-- En este archivo esta la config de tu componente -->
</head>

Integración por plugin

Si posees una tienda con el plugin de Conekta en alguna de las siguientes plataformas, deberás configurar el nuevo plugin de Digital@Femsa que soportará exclusivamente el producto de Efectivo con Oxxo Pay y modificar la configuración del plugin Conekta para otros métodos de pago que ofrezcas. En esta sección se irá publicando el instructivo una vez que esté listo para ser instalado. Podrás mantener el plugin que actualmente tengas instalado para Tarjetas y Transferencias


MAGENTO

  1. Apagar Efectivo con Conekta
  2. Instalar Plugin Digital@Femsa

Luego de seguir los pasos anteriores así se visualizará la selección de métodos de pago




PRESTASHOP

  1. Apagar Efectivo con Conekta
  2. Instalar Plugin Digital@Femsa

Luego de seguir los pasos anteriores así se visualizará la selección de métodos de pago


SHOPIFY

  1. Apagar Efectivo con Conekta
  2. Instalar Plugin Digital@Femsa

Luego de seguir los pasos anteriores así se visualizará la selección de métodos de pago


WOOCOMMERCE

  1. Apagar Efectivo con Conekta
  2. Instalar Plugin Digital@Femsa

Luego de seguir los pasos anteriores así se visualizará la selección de métodos de pago


VTEX

  1. Apagar Efectivo con Conekta
  2. Instalar Plugin Digital@Femsa

Luego de seguir los pasos anteriores así se visualizará la selección de métodos de pago


TIENDA-NUBE (WIP)

  1. Apagar Efectivo con Conekta
  2. Instalar Plugin Digital@Femsa

Luego de seguir los pasos anteriores así se visualizará la selección de métodos de pago


Restricciones de Red

Si tu servidor cuenta con alguna restricción mediante Firewall debes añadir la IP de los servidores de Oxxo Pay para recibir los eventos vía webhooks.
Las ips correspondientes son: 52.44.103.21 y 52.55.241.130.
Además, puedes seleccionar un puerto específico para tus webhooks. Los puertos soportados son el 80, 443 y el rango del 1025 al 10001.