Wire-plugin interface.

Add methods signatures to register merchants at banking institutions.
This commit is contained in:
Marcello Stanisci 2018-07-23 14:32:20 +02:00
parent 9942032ae9
commit 6df3227c24
No known key found for this signature in database
GPG Key ID: 8D526861953F4C0F
3 changed files with 51 additions and 7 deletions

View File

@ -716,13 +716,17 @@ typedef int
* Callback used to process data of a merchant under KYC monitoring.
*
* @param cls closure
* @param payto_url payto URL of this particular merchant (bank account)
* @param general_id general identificator valid at the KYC-caring institution
* @param kyc_checked status of KYC check: if GNUNET_OK, the merchant was
* checked at least once, never otherwise.
* @param merchant_serial_id serial ID identifying this merchant (bank
* account) into the database system; it helps making more efficient
* queries instead of the payto URL.
* @param payto_url payto URL of this particular
* merchant (bank account)
* @param general_id general identificator valid
* at the KYC-caring institution
* @param kyc_checked status of KYC check:
* if GNUNET_OK, the merchant was checked at least once,
* never otherwise.
* @param merchant_serial_id serial ID identifying
* this merchant (bank account) into the database system;
* it helps making more efficient queries than the payto
* URL.
*/
typedef void
(*TALER_EXCHANGEDB_KycStatusCallback)(void *cls,

View File

@ -40,6 +40,17 @@ typedef void
size_t buf_size);
/**
* Callback to process a merchant registration outcome.
*
* @param cls closure
* @param status GNUNET_OK if the registration succeeded,
* GNUNET_NO otherwise.
*/
typedef void
(*TALER_WIRE_MerchantRegisterCallback) (void *cls,
unsigned int status);
/**
* Details about a valid wire transfer to the exchange.
* It is the plugin's responsibility to filter and undo
@ -356,6 +367,34 @@ struct TALER_WIRE_Plugin
struct TALER_WIRE_RejectHandle *rh);
/**
* Ask the plugin which data is needed to register the merchant
* into the banking institution.
*
* @param enc[out] where to store the JSON formatted list of
* needed values. The merchant will use this list to
* show a HTML form to the business in order to collect that data.
* This value will have to be freed by the caller.
* @return GNUNET_OK upon successful `enc' allocation and definition,
* GNUNET_NO if _no_ data is needed at all, GNUNET_SYSERR
* for all the other cases.
*/
int
(*merchant_data)(void);
/**
* Send data to the banking institution in order to get the
* merchant registered.
*
* @param cls closure
* @param body subset of information to be sent to the bank.
* The plugin implementation is free to modify this value.
* @param mrcb Callback to process the outcome.
*/
struct TALER_WIRE_MerchantRegisterHandle *
(*merchant_register)(void *cls,
const char *body,
TALER_WIRE_MerchantRegisterCallback mrcb);
};

View File

@ -712,6 +712,7 @@ taler_bank_execute_wire_transfer (void *cls,
origin_account_url = &buf[sizeof (struct BufFormatP)];
left = buf_size - sizeof (struct BufFormatP);
slen = strlen (origin_account_url) + 1;
/* make sure there's enough space to accomodate what's been taken now */
GNUNET_assert (left >= slen);
left -= slen;
if (0 == left)