Flujo Mifel
Postman
Importar una coleccion de Postman
- Primero que todo creamos una cuenta de Postman
- Importamos la coleccion de postman.
- Seleccionamos File --> Import
- Seleccionamos el archivo Mifel.postman_collection

- Obtendriamos algo como esto

- Para obtener el Token:
- Seleccionamos Mifel --> Authorization --> Get New Access Token

- De esta manera ya no sera necesario configurar el token a cada una de las peticiones de la coleccion, debido a que ya vienen configuradas para que tome el token del padre

Saber que Url poner
- Para saber que url poner simplemente nos dirigimos a swagger y si la Url es
https://prices.scisa.com.mx/y el endpoint es algo comoget_price, entonces la Url final seria algo comohttps://prices.scisa.com.mx/get_price. Lo ponemos en Postman y seleccionamos el tipo de peticion que es.

Hacer un Get sin parametros
- Para hacer un Get sin parametros simplemente verificamos que la URL no tenga ninguno y solo le presionamos el boton de Send

Hacer un Get con parametros
- Para hacer un Get con parametros simplemente verificamos que la URL contenga parametros
- Podemos verificar en Swagger que parametro lleva, en este caso usaremos de ejemplo el
https://prices.scisa.com.mx/get_priceque pide estos parametros 
- En postman al poner la liga en la seccion Params podemos poner cada parametro necesario con su valor y estos se añadirán a la Url

- Podemos verificar en Swagger que parametro lleva, en este caso usaremos de ejemplo el
Hacer un Get cuyo parametro esta en la Url
- Para hacer un Get cuyo parametro esta en la Url
- Podemos verificar en Swagger los endpoints cuyo parametro esta en la Url, por ejemplo
- En postman al poner la liga tendriamos algo como esto
https://siglonet.scisa.com.mx/v2/payee_settlement_types/2018
Hacer un Post
- Para hacer un Post es similar a hacer un Get sin parametros, solo hay que poner la Url del endpoint, pero si hay que seguir unos pasos
- La estructura de lo que se enviara y la documentacion de cada campo viene documentado en su respectivo endpoint


- En la seccion Body seleccionamos el tipo raw y el tipo JSON

Flujo para obtener precios
1. Inicializamos los datos iniciales
Enviamos el rquest donde obtenemos los datos iniciales que se guardaran en la calculadora, puede ser el siguiente endpoint:
https://siglonet.scisa.com.mx/v2/forex_transactions/data_init

Aqui obtendremos los spotPricing, portfolioSpreads, priceRange, productPrice.
2. Obtenemos un precio
Supongamos que queremos obtener el precio del par de divisas USD/MXN con un intervalo de 1. En ese caso, el request sería el siguiente:
https://prices.scisa.com.mx/get_price?CurrencyPairId=1&IntervalId=1
Supongamos que queremos realizar una compra con el TermCode 'Today'. En este caso, nos interesa lo siguiente:
En BasePrices, el valor que contenga BuyPriceTODAY.
Los campos ExpiresAt y BuyPriceTODAYChecksum, ya que ambos nos servirán para verificar que el precio sea válido al momento de pactar una operación.

Flujo para poder completar una operación
1. Se registra una forma de liquidación (en caso de ser requerida)
Enviamos, por ejemplo, lo siguiente:
{
"contractCode": "0000000",
"beneficiaryName": null,
"branchBankName": "",
"payeeSettlementType": {
"id": 2018,
"payeeId": 1,
"settlementTypeId": 1,
"settlementTypeDescription": "SPEI",
"currencyID": 1,
"currencyName": "Peso Mexicano",
"settlementTypeStatusCode": 1,
"isActive": true,
"version": "-4752702782736171008",
"paySettTypeInstID": 0,
"treasuryAccountID": 0,
"isSwiftSendMsg300": false,
"swiftCodeBIC": null,
"isWebOperate": false,
"isDefaultIntermediary": false,
"secuencia": 0,
"isUniqueLetter": 0,
"vigencyUniqueLetter": "0001-01-01T00:00:00",
"emailUniqueLetter1": null,
"emailUniqueLetter2": null,
"accountNumber": null,
"bankName": "AFIRME",
"payeeContractSettlementTypeID": 0,
"beneficiaryAccountTypeCode": 0,
"beneficiaryBankID": 0,
"intermediaryBankID": 0
},
"settlementTypeDTO": {
"SettlementTypeId": 1,
"SettlementType": {
"SettlementTypeId": 1,
"Id": 2,
"PayeeSettlementTypeId": 2018,
"BeneficiaryName": "KLU TECH, S.A.P.I. DE C.V.",
"RFC": "COI170804N33",
"AccountCode": "566679009334",
"PaymentConcept": "PAGO",
"SpeiOperationTypeId": 2,
"SpeiAccountTypeId": 2,
"SpeiPaymentTypeId": 5,
"BankSettlementTypeID": 30,
"BranchBankId": 0,
"Version": "-4608587594660315136",
"SecondBeneficiary": null
}
}
}
2. Obtenemos un precio
Supongamos que queremos obtener el precio del par de divisas USD/MXN con un intervalo de 1. En ese caso, el request sería el siguiente:
https://prices.scisa.com.mx/get_price?CurrencyPairId=1&IntervalId=1
Supongamos que queremos realizar una compra con el TermCode 'Today'. En este caso, nos interesa lo siguiente:
En BasePrices, el valor que contenga BuyPriceTODAY. Los campos ExpiresAt y BuyPriceTODAYChecksum, ya que ambos nos servirán para verificar que el precio sea válido al momento de pactar una operación.
3. Pactar una operación
Enviamos, por ejemplo, lo siguiente:
{
"contractCode": "0000002",
"tradedCurrency": "USD",
"tradedCurrencyAmount": 100,
"baseCurrency": "MXN",
"tradeRate": 19.2027616826647,
"marketRate": 19.2027616826647,
"executorId": "gerardo",
"beneficiaryId": 2018,
"payment": [],
"isIncome": true,
"termCode": "TermToday",
"expiresAt": 1738367523,
"tipoCambioMesaChecksum": "MaPxQjP9Ob/FKR45OGGwqUKoC6jYuLWobQUbvPl3DQElfHIpbWP6symwGP7S5Ek6JlSoR9nHyS6MlHDheCcbLl4rJDPf/cmA/VJFpFlrMd5oN2bEZ6p/64aBHimMhkApAng2iJ2HtgEj4y0OKW4dTN4CYaNMO16zWk5nYZexyKkmBOPKyYl6J5RhMzzDaYwnb4a/xndz5K5PUKSbjyNPPg=="
}
Lo importante a resaltar son los siguientes campos:
- ExpiresAt = ExpiresAt
- TipoCambioMesaChecksum = BuyPriceTODAYChecksum
Estos campos se llenan con la información adicional que obtenemos de la calculadora de precios.
4. Completamos la operación
Desde la siguiente liga enviamos lo siguiente:
https://siglonet.scisa.com.mx/v2/forex_transactions/436/complete (el 436 es el id de la operacion)
{
"contractCode": "0000002",
"forexTransId": "436|FX Mexico",
"beneficiaryId": 2018,
"payment": [
{
"beneficiaryId": 2018,
"isIncome": true,
"amount": 5.21
},
{
"beneficiaryId": 2051,
"isIncome": false,
"amount": 100
}
]
}
En caso de ser requerido nos podemos apoyar del show:
https://siglonet.scisa.com.mx/v2/forex_transactions/436
Flujo para poder completar una operación desde la pactada
1. Se registra una forma de liquidación (en caso de ser requerida)
Enviamos, por ejemplo, lo siguiente:
{
"contractCode": "0000000",
"beneficiaryName": null,
"branchBankName": "",
"payeeSettlementType": {
"id": 2018,
"payeeId": 1,
"settlementTypeId": 1,
"settlementTypeDescription": "SPEI",
"currencyID": 1,
"currencyName": "Peso Mexicano",
"settlementTypeStatusCode": 1,
"isActive": true,
"version": "-4752702782736171008",
"paySettTypeInstID": 0,
"treasuryAccountID": 0,
"isSwiftSendMsg300": false,
"swiftCodeBIC": null,
"isWebOperate": false,
"isDefaultIntermediary": false,
"secuencia": 0,
"isUniqueLetter": 0,
"vigencyUniqueLetter": "0001-01-01T00:00:00",
"emailUniqueLetter1": null,
"emailUniqueLetter2": null,
"accountNumber": null,
"bankName": "AFIRME",
"payeeContractSettlementTypeID": 0,
"beneficiaryAccountTypeCode": 0,
"beneficiaryBankID": 0,
"intermediaryBankID": 0
},
"settlementTypeDTO": {
"SettlementTypeId": 1,
"SettlementType": {
"SettlementTypeId": 1,
"Id": 2,
"PayeeSettlementTypeId": 2018,
"BeneficiaryName": "KLU TECH, S.A.P.I. DE C.V.",
"RFC": "COI170804N33",
"AccountCode": "566679009334",
"PaymentConcept": "PAGO",
"SpeiOperationTypeId": 2,
"SpeiAccountTypeId": 2,
"SpeiPaymentTypeId": 5,
"BankSettlementTypeID": 30,
"BranchBankId": 0,
"Version": "-4608587594660315136",
"SecondBeneficiary": null
}
}
}
2. Obtenemos un precio
Supongamos que queremos obtener el precio del par de divisas USD/MXN con un intervalo de 1. En ese caso, el request sería el siguiente:
https://prices.scisa.com.mx/get_price?CurrencyPairId=1&IntervalId=1
Supongamos que queremos realizar una compra con el TermCode 'Today'. En este caso, nos interesa lo siguiente:
En BasePrices, el valor que contenga BuyPriceTODAY. Los campos ExpiresAt y BuyPriceTODAYChecksum, ya que ambos nos servirán para verificar que el precio sea válido al momento de pactar una operación.
3. Al pactar una operación con instrucciones, esta se completa.
Enviamos, por ejemplo, lo siguiente:
{
"contractCode": "0000002",
"tradedCurrency": "USD",
"tradedCurrencyAmount": 100,
"baseCurrency": "MXN",
"tradeRate": 19.2027616826647,
"marketRate": 19.2027616826647,
"executorId": "gerardo",
"beneficiaryId": 2018,
"payment": [
{
"beneficiaryId": 2018,
"isIncome": true,
"amount": 5.21
},
{
"beneficiaryId": 2051,
"isIncome": false,
"amount": 100
}
],
"isIncome": true,
"termCode": "TermToday",
"expiresAt": 1738367523,
"tipoCambioMesaChecksum": "MaPxQjP9Ob/FKR45OGGwqUKoC6jYuLWobQUbvPl3DQElfHIpbWP6symwGP7S5Ek6JlSoR9nHyS6MlHDheCcbLl4rJDPf/cmA/VJFpFlrMd5oN2bEZ6p/64aBHimMhkApAng2iJ2HtgEj4y0OKW4dTN4CYaNMO16zWk5nYZexyKkmBOPKyYl6J5RhMzzDaYwnb4a/xndz5K5PUKSbjyNPPg=="
}
Lo importante a resaltar son los siguientes campos:
- ExpiresAt = ExpiresAt
- TipoCambioMesaChecksum = BuyPriceTODAYChecksum
Estos campos se llenan con la información adicional que obtenemos de la calculadora de precios.
Para completar la operación pactada, es necesario llenar el campo de instrucciones. Si no se llena, solo se pactará la operación. En caso de que las instrucciones estén incompletas o ocurra algún error durante la operación, se realizará un rollback.