This service is used to approve several operations within the system. POST: `URL_BASE + /ws/firma.py/firmar` ## Receives: All the parameters that the service receives must be indicated in the body of the request. ## Returns: Depending on the result of the operation, this service can return two different JSON: ### Answer JSON OK: ```javascript { "status" :{' '} true , "signed" : , "invoice" : , "currency_data" :{' '} { "abbreviation" : , "suffix" : , "format" : , "symbol" : , "prefix" : , "decimals" : , "id" : } , "elapsed" : , "raw_amount" : , "currency" : , "commission_user_card" : , "codtran" : , "user_commission" : , "amount" : } ``` ## Where: * `status:` Shows if the call has been successful (true) or not (false). * `signed:` Shows if the signature has been successfully processed (true) or not (false). * `invoice:` Invoice number associated to the operation. * `currency_data:` Contains the different details of the currency used in the operation. * `abbreviation:` The abbreviated name of the currency (EUR, MXN). * `suffix:` Indicates the suffix that is applied in the currency format (pesos, euros). * `format:` The full format that is applied to the currency, it includes the suffix and the prefix. * `symbol:` The symbol associated to the currency (€, ¢, $). * `prefix:` The prefix that is applied in the format of the currency. * `decimals:` The maximum number of decimal places to be included in the currency format. * `id:` Currency identifier in BBDD. * `elapsed:` Execution operation time. * `raw_amount:` Amount of the operation in negative without applying the format. * `currency:` Short name of the currency used in the operation, it matches the abbreviation. * `commission_user_card:` Commission that would be applied if the payment is made by card. * `codtran:` Transaction code that identifies the executed operation. * `user_commission:` Commission to be charged to the user. * `amount:` Negative transaction amount with the applied format. ### Answer JSON KO: ```javascript { "status" :{' '} false , "level" : , "message" : , "error" : } ``` ## Where: * `status:` Shows if the call has been successful (true) or not (false). * `level:` Error importance level. * `message:` Error message. * `error:` Sole error coge. ## Example requests: ### Python - Requests: ```javascript import requests url ={' '} "URL_BASE/ws/firma.py/firmar" payload ={' '} { 'otp' :{' '} '1234' , 'phone' :{' '} '7229063245' , 'country_code' :{' '} 'MX' } files ={' '} [ ] headers={' '} { } response = requests .request ( "POST" , url , headers =headers , data{' '} = payload , files{' '} = files ) print (response .text .encode ( 'utf8' ) ) ``` ### NodeJs - Request: ```javascript var request = require('request'); var options = { 'method': 'POST', 'url': 'URL_BASE/ws/firma.py/firmar', 'headers': {}, formData: { 'otp': '1234', 'phone_dst': '7229063245', 'country_code': 'MX' } }; request(options, function (error, response) {{' '} if (error) throw new Error(error); console.log(response.body); }); ``` ### JavaScript - Fetch: ```javascript var formdata = new FormData(); formdata.append("otp", "1234"); formdata.append("phone_dst", "7229063245"); formdata.append("country_code", "MX"); var requestOptions = { method: 'POST', body: formdata, redirect: 'follow' }; fetch("URL_BASE/ws/firma.py/firmar", requestOptions) .then(response => response.text()) .then(result => console.log(result)) .catch(error => console.log('error', error)); ``` ### CURL: ```javascript curl --location --request POST{' '} 'URL_BASE/ws/firma.py/firmar'{' '} \ --form 'otp=1234'{' '} \ --form{' '} 'phone_dst=7229063245'{' '} \ --form 'country_code=MX' ``` ## Business logic: This service searches for the operations pending signing that the entered phone has, and, among the results, accepts the operation through the OTP.