my
$meta
= __PACKAGE__->meta;
sub
BUILD {
my
(
$self
,
$attributes
) =
@_
;
my
$sub_objects
= {
'disputes'
=>
'Net::Braintree::Dispute'
};
$meta
->add_attribute(
'subscription'
,
is
=>
'rw'
);
$self
->subscription(Net::Braintree::Subscription->new(
$attributes
->{subscription}))
if
ref
(
$attributes
->{subscription}) eq
'HASH'
;
delete
(
$attributes
->{subscription});
$meta
->add_attribute(
'disbursement_details'
,
is
=>
'rw'
);
$self
->disbursement_details(Net::Braintree::DisbursementDetails->new(
$attributes
->{disbursement_details}))
if
ref
(
$attributes
->{disbursement_details}) eq
'HASH'
;
delete
(
$attributes
->{disbursement_details});
$meta
->add_attribute(
'paypal_details'
,
is
=>
'rw'
);
$self
->paypal_details(Net::Braintree::PayPalDetails->new(
$attributes
->{paypal}))
if
ref
(
$attributes
->{paypal}) eq
'HASH'
;
delete
(
$attributes
->{paypal});
$self
->setup_sub_objects(
$self
,
$attributes
,
$sub_objects
);
$self
->set_attributes_from_hash(
$self
,
$attributes
);
}
sub
sale {
my
(
$class
,
$params
) =
@_
;
$class
->create(
$params
,
'sale'
);
}
sub
credit {
my
(
$class
,
$params
) =
@_
;
$class
->create(
$params
,
'credit'
);
}
sub
submit_for_settlement {
my
(
$class
,
$id
) =
@_
;
$class
->gateway->transaction->submit_for_settlement(
$id
);
}
sub
void {
my
(
$class
,
$id
) =
@_
;
$class
->gateway->transaction->void(
$id
);
}
sub
refund {
my
(
$class
,
$id
,
$amount
) =
@_
;
my
$params
= {};
$params
->{
'amount'
} =
$amount
if
$amount
;
$class
->gateway->transaction->refund(
$id
,
$params
);
}
sub
create {
my
(
$class
,
$params
,
$type
) =
@_
;
$params
->{
'type'
} =
$type
;
$class
->gateway->transaction->create(
$params
);
}
sub
find {
my
(
$class
,
$id
) =
@_
;
$class
->gateway->transaction->find(
$id
);
}
sub
search {
my
(
$class
,
$block
) =
@_
;
$class
->gateway->transaction->search(
$block
);
}
sub
hold_in_escrow {
my
(
$class
,
$id
) =
@_
;
$class
->gateway->transaction->hold_in_escrow(
$id
);
}
sub
release_from_escrow {
my
(
$class
,
$id
) =
@_
;
$class
->gateway->transaction->release_from_escrow(
$id
);
}
sub
cancel_release {
my
(
$class
,
$id
) =
@_
;
$class
->gateway->transaction->cancel_release(
$id
);
}
sub
all {
my
$class
=
shift
;
$class
->gateway->transaction->all;
}
sub
clone_transaction {
my
(
$class
,
$id
,
$params
) =
@_
;
$class
->gateway->transaction->clone_transaction(
$id
,
$params
);
}
sub
gateway {
Net::Braintree->configuration->gateway;
}
sub
is_disbursed {
my
$self
=
shift
;
$self
->disbursement_details->is_valid();
};
1;