andrewalker / p5-business-cpi

Common Payment Interface
6 stars 2 forks source link

Customização do CPI por parte da aplicação #19

Open andrewalker opened 11 years ago

andrewalker commented 11 years ago

Poderia ser possível aplicar um sistema de plugins, ou simplesmente a passagem de referências a sub-rotinas, que permitisse algo como:

# busca da tabela product aquele com product_id = 5436
$cart->add_item(5436);

E também:

$cpi->new_cart({
    ...
    buyer => 'andre@andrewalker.net', # busca da tabela customer
    ...
});

A função que executa essas buscas teria que ser definida pelo usuário na construção do objeto, ou mesmo no momento de se carregar o CPI. Imagine:

use Business::CPI plugins => {
    buyer   => 'MyApp::Role::FetchCustomer',
    product => 'MyApp::Role::GetProduct'
}

Poderíamos pensar em mais áreas de extensão. Removeria boa parte do "boilerplate" de se buscar produtos, e deixaria o código utilizado para as compras muito mais legível.