Business-GoCardless
view release on metacpan - search on metacpan
view release on metacpan or search on metacpan
lib/Business/GoCardless/Client.pm view on Meta::CPAN
$type,
$self->normalize_params( $params )
);
}
sub _new_redirect_flow_url {
my ( $self,$params ) = @_;
my $data = $self->api_post(
'/redirect_flows',
{ redirect_flows => { %{ $params } } },
);
my $RedirectFlow = Business::GoCardless::RedirectFlow->new(
client => $self,
%{ $data->{redirect_flows} }
);
return $RedirectFlow->redirect_url;
}
sub _confirm_redirect_flow {
my ( $self,$redirect_flow_id ) = @_;
# first find the original session token
my $RedirectFlow = Business::GoCardless::RedirectFlow->new(
client => $self,
id => $redirect_flow_id,
);
$RedirectFlow->find_with_client( 'redirect_flows' );
# now confirm the redirect flow
my $data = $self->api_post(
"/redirect_flows/$redirect_flow_id/actions/complete",
{ data => { session_token => $RedirectFlow->session_token } },
);
$RedirectFlow = Business::GoCardless::RedirectFlow->new(
client => $self,
%{ $data->{redirect_flows} }
);
return $RedirectFlow;
}
sub _confirm_resource {
my ( $self,$params ) = @_;
if ( ! $self->signature_valid( $params,$self->app_secret ) ) {
Business::GoCardless::Exception->throw({
message => "Invalid signature for confirm_resource"
});
}
my $data = {
resource_id => $params->{resource_id},
resource_type => $params->{resource_type},
};
my $credentials = encode_base64( $self->app_id . ':' . $self->app_secret );
$credentials =~ s/\s//g;
my $ua = LWP::UserAgent->new;
$ua->agent( $self->user_agent );
my $req = HTTP::Request->new(
POST => join( '/',$self->base_url . $self->api_path,'confirm' )
);
$req->header( 'Authorization' => "Basic $credentials" );
$req->header( 'Accept' => 'application/json' );
$req->content_type( 'application/x-www-form-urlencoded' );
$req->content( $self->normalize_params( $data ) );
my $res = $ua->request( $req );
if ( $res->is_success ) {
my $class_suffix = ucfirst( $params->{resource_type} );
$class_suffix =~ s/_([A-z])/uc($1)/ge;
my $class = "Business::GoCardless::$class_suffix";
my $obj = $class->new(
client => $self,
id => $params->{resource_id}
);
return $obj->find_with_client;
}
else {
Business::GoCardless::Exception->throw({
message => $res->content,
code => $res->code,
response => $res->status_line,
});
}
}
=head1 METHODS
api_get
api_post
api_put
Make a request to the gocardless API:
my $data = $Client->api_get( '/merchants/123ABCD/bills',\%params );
In list context returns the links and pagination headers:
my ( $data,$links,$info ) = $Client->api_get( ... );
=cut
sub api_get {
my ( $self,$path,$params ) = @_;
return $self->_api_request( 'GET',$path,$params );
}
sub api_post {
my ( $self,$path,$params ) = @_;
return $self->_api_request( 'POST',$path,$params );
}
sub api_put {
my ( $self,$path,$params ) = @_;
return $self->_api_request( 'PUT',$path,$params );
}
sub _api_request {
my ( $self,$method,$path,$params ) = @_;
view all matches for this distributionview release on metacpan - search on metacpan
( run in 1.571 second using v1.00-cache-2.02-grep-82fe00e-cpan-f73e49a70403 )