NAME
Catalyst::Model::CPI - Business::CPI models for Catalyst
VERSION
version 0.03
SYNOPSIS
In the config:
<model Payments>
<gateway PayPal>
api_username ...
api_password ...
signature ...
receiver_email seller
@test
.com
sandbox 1
</gateway>
<gateway X> ... </gateway>
<gateway Y> ... </gateway>
</model>
In the controller:
# It should be configured in PayPal's IPN, for example, the notify_url as:
# Other gateways are similar.
sub
gtw_notification : Chained(
'/api/store'
) PathPart(
'notification'
) Args(1) {
my
(
$self
,
$ctx
,
$gateway_name
) =
@_
;
my
$model
=
$ctx
->model(
'Payments'
);
if
( !
$model
->
exists
(
$gateway_name
) ) {
my
$gtw_list
=
join
", "
,
$model
->available_gateways;
die
"$gateway_name is not available.\n"
.
"Available gateways are: $gtw_list."
;
}
my
$notification
=
$model
->get(
$gateway_name
)->notify;
my
$purchase
=
$ctx
->model(
'DB::Purchase'
)->find(
$notification
->{payment_id} );
$purchase
->update({
payment_status
=>
$notification
->{status} });
...
}
sub
checkout : Chained(
'/website/cart'
) PathPart Args(0) {
my
(
$self
,
$ctx
) =
@_
;
my
$model
=
$ctx
->model(
'Payments'
);
my
$cart
=
$ctx
->session->{cart};
# create a form for each available gateway
my
@forms
=
map
{
$model
->get(
$_
)->new_cart(
$cart
)->get_form_to_pay(
"${_}_form"
)
}
$model
->available_gateways;
$ctx
->stash->{checkout_forms} = \
@forms
;
}
DESCRIPTION
This module connects CPI gateways to a Catalyst application. It automatically loads the configuration from Catalyst and uses it to instantiate the gateways when requested through this model.
METHODS
available_gateways
List all the class names for the installed CPI gateways.
my
@gateways
=
$ctx
->model(
'Payments'
)->available_gateways;
get
Returns a new instance of the gateway, with all the configuration passed as arguments to the constructor.
my
$cart
=
$ctx
->model(
'Payments'
)->get(
'PayPal'
)->new_cart(...);
exists
Check whether the provided gateway is really installed.
if
(
$model
->
exists
(
$gateway
)) {
...
}
ACCEPT_CONTEXT
Saves the request, so that $gateway->notify
can receive it automatically. See the Catalyst docs for details.
CONFIGURATION
<model Payments>
<gateway PayPal>
api_username ...
api_password ...
signature ...
receiver_email seller
@test
.com
sandbox 1
</gateway>
<gateway PagSeguro>
receiver_email seller
@test
.com
...
</gateway>
<gateway Custom>
foo bar
</gateway>
</model>
AUTHOR
André Walker <andre@andrewalker.net>
COPYRIGHT AND LICENSE
This software is copyright (c) 2013 by André Walker.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.