diff options
author | Christian Grothoff <christian@grothoff.org> | 2019-06-08 19:55:18 +0200 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2019-06-08 19:55:18 +0200 |
commit | 4f846eab966e2366c860c8708d3c47c18397d346 (patch) | |
tree | 935d88530cc09a9c1fe935c7205ede29356bbbce /src/include/taler_wire_lib.h | |
parent | 8800110b72d539e6e9a57ca9e6a66a9ad427f528 (diff) | |
download | exchange-4f846eab966e2366c860c8708d3c47c18397d346.tar.xz |
fix #5756, also change sepa->iban as per payto:// spec
Diffstat (limited to 'src/include/taler_wire_lib.h')
-rw-r--r-- | src/include/taler_wire_lib.h | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/src/include/taler_wire_lib.h b/src/include/taler_wire_lib.h index aef61f61c..835ea7ca5 100644 --- a/src/include/taler_wire_lib.h +++ b/src/include/taler_wire_lib.h @@ -24,6 +24,103 @@ #include <gnunet/gnunet_util_lib.h> #include "taler_wire_plugin.h" +/** + * Different account types supported by payto://. + */ +enum TALER_PaytoAccountType + { + + /** + * Used to indicate an uninitialized struct. + */ + TALER_PAC_NONE = 0, + + /** + * Account type of a bank running the x-taler-bank protocol. + */ + TALER_PAC_X_TALER_BANK, + + /** + * Account identified by IBAN number. + */ + TALER_PAC_IBAN + }; + +/** + * Information about an account extracted from a payto://-URL. + */ +struct TALER_Account +{ + + /** + * How this the account represented. + */ + enum TALER_PaytoAccountType type; + + /** + * Internals depending on @e type. + */ + union { + + /** + * Taler bank address from x-taler-bank. Set if + * @e type is #TALER_AC_X_TALER_BANK. + */ + struct { + + /** + * Hostname of the bank (possibly including port). + */ + char *hostname; + + /** + * Bank account number. + */ + unsigned long long no; + + /** + * Base URL of the bank hosting the account above. + */ + char *bank_base_url; + } x_taler_bank; + + /** + * Taler bank address from iban. Set if + * @e type is #TALER_AC_IBAN. + */ + struct { + + /** + * IBAN number. + */ + char *number; + + } iban; + + } details; +}; + + +/** + * Release memory allocated in @a acc. + * + * @param acc account to free, the pointer itself is NOT free'd. + */ +void +TALER_WIRE_account_free (struct TALER_Account *acc); + + +/** + * Parse @a payto_url and store the result in @a acc + * + * @param payto_url URL to parse + * @param acc[in,out] account to initialize, free using #TALER_WIRE_account_free() later + * @return #TALER_EC_NONE if @a payto_url is well-formed + */ +enum TALER_ErrorCode +TALER_WIRE_payto_to_account (const char *payto_url, + struct TALER_Account *acc); + /** * Obtain the payment method from a @a payto_url |