Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: ProsteMajkl 23. 08. 2021, 15:31:30

Název: Dotaz do bank. účtu na základě VS
Přispěvatel: ProsteMajkl 23. 08. 2021, 15:31:30
Dobrý den,

pro firmu řeším dvě věci. Tou první je SMS brána, kde mnou vyvinutý systém rozesílá SMS našim klientům. Vytáhnu si z databáze údaje co potřebuji, vytvořím z nich zprávu a příjemce a pomocí API odešlu požadavek na odeslání do SMS brány.

Nyní potřebujeme udělat to samé, ale s bankovnictvím. Potřebuji, aby si náš systém uměl sáhnout na firemní bank. účet a pokusil se dohledat platbu na základně hodnoty, kterou mu řeknu, tedy variabilní symbol. Ale to vůbec není sranda, co jsem se tak koukal. Můj šéf má firemní účet u Raiffeisenbank a když jsem se podíval do jejich dokumentace, tak mi z toho jde hlava kolem. Jistě chápete můj problém a chci se Vás zeptat, jestli máte nějaké zkušenosti s programováním něčeho takového. Dokážete mi pomoci? Doporučit? Poslat nějaké zdroje, odkud mohu čerpat (návod) atd.? Nebo neexistují nějaké služb třetích stran, kde jim jen dodáte client ID + secret pro oAout2 autorizaci na dotazování se za nějaký měsíční poplatek atd.? Děkuji Vám
Název: Re:Dotaz do bank. účtu na základě VS
Přispěvatel: Tomáš Rollo 23. 08. 2021, 16:02:16
Co treba tohle: https://bankovni-vypisy.cz/developers/
Název: Re:Dotaz do bank. účtu na základě VS
Přispěvatel: Tomas-T 23. 08. 2021, 18:01:33
Sice jsem to zatím nedělal (když jsem to v minulosti potřeboval, šlo o transparentní účet který má historii veřejně na webu) ale v dokumentaci to nevypadá nepřekonatelně.
Zkus začít tady (premium API umí stáhnout historii 90 dní zpět):
https://rbi-merlin.apiconnect.ibmcloud.com/rbcz/prod15/product
Mají tam i testovací prostředí.

"Description

Before making a call to Premium API, you need to register your app at our Developer portal. You need to get an invitation first. At Developer Portal you obtain ClientID and ClientSecrete that your app must send in the request as X-IBM-Client-Id and X-IBM-Client-Secret respectively. These are your keys that grant your app access to the API. However, this is not enough, for a successful call your app needs to use mTLS. Thus, you not only need https but also a client certificate issued by us. Each bank client/user can issue several certificates. Each certificate can permit different sets of operations (http methods) on different bank accounts. All this must be configured in Internet Banking first by each bank client/user (bank clients need to look under Settings and do not forget to download the certificate at the last step). The certificate is downloaded in PKCS#12 format as *.p12 file and protected by a password chosen by the bank client/user. Yes, your app needs the password as well to get use of the *p12 file for establishing mTLS connection to the bank.

Client certificates issued in Internet Banking for bank clients/users have limited validity (e.g. 5 years). However, each year certificates are automatically blocked and bank client/user must unblock them in Internet Banking. It is possible to do it in advance and prolong the time before the certificate is blocked. Your app should be prepared for these scenarios and it should communicate such cases to your user in advance to provide seamless service and high user-experience of your app.

Note: Be aware, that in certain error situations, API can return different error structure along with broader set of http status codes, than the one defined below"


Example Request:
Kód: [Vybrat]
curl --request GET \
  --url 'https://mtlsapi-rbi-merlin.apiconnect.ibmcloud.com/rbcz/prod15/rbcz/premium/api/accounts/REPLACE_ACCOUNTNUMBER/REPLACE_CURRENCYCODE/transactions?from=REPLACE_THIS_VALUE&to=REPLACE_THIS_VALUE&page=REPLACE_THIS_VALUE' \
  --header 'PSU-IP-Address: REPLACE_THIS_VALUE' \
  --header 'X-IBM-Client-Id: REPLACE_THIS_VALUE' \
  --header 'X-IBM-Client-Secret: REPLACE_THIS_VALUE' \
  --header 'X-Request-Id: REPLACE_THIS_VALUE' \
  --header 'accept: application/json'

Example Response:
Kód: [Vybrat]
Definition
GET https://mtlsapi-rbi-merlin.apiconnect.ibmcloud.com/rbcz/prod15/rbcz/premium/api/accounts/{accountNumber}/{currencyCode}/transactions
Response
{
  "lastPage": true,
  "transactions": {
    "transaction": [
      {
        "entryReference": 3887196517,
        "amount": {
          "value": -1668.59,
          "currency": "CZK"
        },
        "creditDebitIndication": "DBIT",
        "bookingDate": "2007-10-28T13:12:29.568Z",
        "valueDate": "2021-07-22T13:51:43.968Z",
        "bankTransactionCode": {
          "code": "10000401000"
        },
        "entryDetails": {
          "transactionDetails": {
            "references": {
              "endToEndIdentification": "EBGTF015477198"
            },
            "instructedAmount": {
              "value": 61,
              "currency": "EUR",
              "exchangeRate": 0.03656
            },
            "chargeBearer": "SHAR",
            "paymentCardNumber": "547872XXXXXX9475",
            "relatedParties": {
              "counterParty": {
                "name": "Firma Ltd.",
                "postalAddress": {
                  "street": "Na dlouhém lánu 35",
                  "city": "Praha 6",
                  "country": "CZ"
                },
                "organisationIdentification": {
                  "name": "Firma Ltd.",
                  "bicOrBei": "KOMBCZPP",
                  "bankCode": "0100",
                  "postalAddress": "ERROR_MAXDEPTH"
                },
                "account": {
                  "iban": "CZ0801000000192000145399",
                  "accountNumberPrefix": "000019",
                  "accountNumber": "2000145399"
                }
              },
              "intermediaryInstitution": {
                "name": "Komerční banka, a.s.",
                "bicOrBei": "KOMBCZPP",
                "bankCode": "0100",
                "postalAddress": {
                  "street": "Na příkopě 969/33",
                  "city": "Praha 1",
                  "shortAddress": "Na příkopě 969/33, Praha, CZ",
                  "country": "CZ"
                }
              },
              "ultimateCounterParty": {
                "name": "CZ0801000000192000145399",
                "postalAddress": {
                  "street": "Na dlouhém lánu 35",
                  "city": "Praha 6",
                  "country": "CZ"
                }
              }
            },
            "remittanceInformation": {
              "unstructured": "61 EUR;FIRMA LTD;12345678 RADEK DVA RADEK TRI RADEK CTYRI",
              "creditorReferenceInformation": {
                "variable": "1234567890",
                "constant": "558",
                "specific": "1234567890"
              },
              "originatorMessage": "naše platba"
            }
          }
        }
      },
      {
        "entryReference": 3887196517,
        "amount": {
          "value": -1668.59,
          "currency": "CZK"
        },
        "creditDebitIndication": "DBIT",
        "bookingDate": "2006-11-16T16:08:48.355Z",
        "valueDate": "2002-11-03T15:29:49.155Z",
        "bankTransactionCode": {
          "code": "10000401000"
        },
        "entryDetails": {
          "transactionDetails": {
            "references": {
              "endToEndIdentification": "EBGTF015477198"
            },
            "instructedAmount": {
              "value": 61,
              "currency": "EUR",
              "exchangeRate": 0.03656
            },
            "chargeBearer": "SHAR",
            "paymentCardNumber": "547872XXXXXX9475",
            "relatedParties": {
              "counterParty": {
                "name": "Firma Ltd.",
                "postalAddress": {
                  "street": "Na dlouhém lánu 35",
                  "city": "Praha 6",
                  "country": "CZ"
                },
                "organisationIdentification": {
                  "name": "Firma Ltd.",
                  "bicOrBei": "KOMBCZPP",
                  "bankCode": "0100",
                  "postalAddress": "ERROR_MAXDEPTH"
                },
                "account": {
                  "iban": "CZ0801000000192000145399",
                  "accountNumberPrefix": "000019",
                  "accountNumber": "2000145399"
                }
              },
              "intermediaryInstitution": {
                "name": "Komerční banka, a.s.",
                "bicOrBei": "KOMBCZPP",
                "bankCode": "0100",
                "postalAddress": {
                  "street": "Na příkopě 969/33",
                  "city": "Praha 1",
                  "shortAddress": "Na příkopě 969/33, Praha, CZ",
                  "country": "CZ"
                }
              },
              "ultimateCounterParty": {
                "name": "CZ0801000000192000145399",
                "postalAddress": {
                  "street": "Na dlouhém lánu 35",
                  "city": "Praha 6",
                  "country": "CZ"
                }
              }
            },
            "remittanceInformation": {
              "unstructured": "61 EUR;FIRMA LTD;12345678 RADEK DVA RADEK TRI RADEK CTYRI",
              "creditorReferenceInformation": {
                "variable": "1234567890",
                "constant": "558",
                "specific": "1234567890"
              },
              "originatorMessage": "naše platba"
            }
          }
        }
      },
      {
        "entryReference": 3887196517,
        "amount": {
          "value": -1668.59,
          "currency": "CZK"
        },
        "creditDebitIndication": "DBIT",
        "bookingDate": "2006-06-09T11:27:33.914Z",
        "valueDate": "2013-01-07T18:51:07.983Z",
        "bankTransactionCode": {
          "code": "10000401000"
        },
        "entryDetails": {
          "transactionDetails": {
            "references": {
              "endToEndIdentification": "EBGTF015477198"
            },
            "instructedAmount": {
              "value": 61,
              "currency": "EUR",
              "exchangeRate": 0.03656
            },
            "chargeBearer": "SHAR",
            "paymentCardNumber": "547872XXXXXX9475",
            "relatedParties": {
              "counterParty": {
                "name": "Firma Ltd.",
                "postalAddress": {
                  "street": "Na dlouhém lánu 35",
                  "city": "Praha 6",
                  "country": "CZ"
                },
                "organisationIdentification": {
                  "name": "Firma Ltd.",
                  "bicOrBei": "KOMBCZPP",
                  "bankCode": "0100",
                  "postalAddress": "ERROR_MAXDEPTH"
                },
                "account": {
                  "iban": "CZ0801000000192000145399",
                  "accountNumberPrefix": "000019",
                  "accountNumber": "2000145399"
                }
              },
              "intermediaryInstitution": {
                "name": "Komerční banka, a.s.",
                "bicOrBei": "KOMBCZPP",
                "bankCode": "0100",
                "postalAddress": {
                  "street": "Na příkopě 969/33",
                  "city": "Praha 1",
                  "shortAddress": "Na příkopě 969/33, Praha, CZ",
                  "country": "CZ"
                }
              },
              "ultimateCounterParty": {
                "name": "CZ0801000000192000145399",
                "postalAddress": {
                  "street": "Na dlouhém lánu 35",
                  "city": "Praha 6",
                  "country": "CZ"
                }
              }
            },
            "remittanceInformation": {
              "unstructured": "61 EUR;FIRMA LTD;12345678 RADEK DVA RADEK TRI RADEK CTYRI",
              "creditorReferenceInformation": {
                "variable": "1234567890",
                "constant": "558",
                "specific": "1234567890"
              },
              "originatorMessage": "naše platba"
            }
          }
        }
      }
    ]
  }
}
Název: Re:Dotaz do bank. účtu na základě VS
Přispěvatel: _Jenda 23. 08. 2021, 22:13:27
Jistě chápete můj problém a chci se Vás zeptat, jestli máte nějaké zkušenosti s programováním něčeho takového.
Já programoval vyčítání účtu z Fio a Fio ti normálně dá URL (stáhneš wgetem) kde je CSV.
Název: Re:Dotaz do bank. účtu na základě VS
Přispěvatel: Ondrej Nemecek 24. 08. 2021, 00:16:53
Pokud to má pracovat s více bankama tak bych se klonil k využití hotové službě, ušetří to práci. Taky lze pohledat, zda banka nebo někdo jiný neposkytuje hotové knihovny. Ono pro tu jednu banku to taky jde, ale chce to trpělivost - se studiem dokumentace, čekáním na smlouvy, se zřízením testovacího prostředí, komunikací s podporou... apod.
Název: Re:Dotaz do bank. účtu na základě VS
Přispěvatel: RDa 24. 08. 2021, 03:36:52
Taky jsem delal FIO a bylo to jednoduchy - se me to samo sype kazdou hodinu do DB.

Ale jako poor-man-solution by slo udelat to, ze si nastavite emailove notifikace od obratu na uctu na nejaky specificky mail, ktery pak zpracujete z maildir-u nebo pruchozim filtrem. A pak budete platby dohledavat jiz ve sve DB.

Btw, pokud je to firemni ucet - nemate to napojeny do ucetnictvi a pak bys mohl taky hledat lokalne - nezavisle od banky.
Název: Re:Dotaz do bank. účtu na základě VS
Přispěvatel: tecka 24. 08. 2021, 03:40:50
Na jakou dokumentaci jsi koukal? API RB je dementně jednoduché.
Název: Re:Dotaz do bank. účtu na základě VS
Přispěvatel: ProsteMajkl 28. 08. 2021, 01:17:13
Všem děkuji za rady. Zatím zvažuji dvě možnosti. O FIO jsem slyšel. Mají ji úžasně jednoduchou a už jsem o tom slyšel. Takže přemýšlím, že nadřízeným budu argumentovat, proč si založit FIO účet. Druhá možnost, kouknu se po něčem, jako je zde doporučované https://bankovni-vypisy.cz/developers/ :)