Business-RealEx
view release on metacpan or search on metacpan
lib/Business/RealEx.pm view on Meta::CPAN
$xml .= <<XML;
</payer>
<sha1hash>$sha1hash</sha1hash>
</request>
XML
return $self->__request($xml);
}
sub new_card {
my $self = shift;
my %args = @_ % 2 ? %{$_[0]} : (@_);
my @r = ('ref', 'payerref', 'expdate', 'chname', 'type');
push @r, 'number' unless $args{update_card}; # update card may not need number
foreach my $r (@r) {
$args{$r} or croak "$r is required.";
}
$self->{__timestamp} = __timestamp();
my $sha1hash;
if ($args{update_card}) {
# Timestamp.merchantID.payerref.ref.expirydate.cardnumber
$sha1hash = $self->__sha1hash($args{payerref}, $args{ref}, $args{expdate}, $args{number} || '');
} else {
# timestamp.merchantid.orderid.amount.currency.payerref.chname.(card)number
$sha1hash = $self->__sha1hash($args{orderid} || '', $args{amount} || '', $args{currency} || '', $args{payerref}, $args{chname}, $args{number});
}
# we omit other fields for now
my $action = $args{update_card} ? 'card-update-card' : 'card-new';
my $xml = <<XML;
<request type="$action" timestamp="$self->{__timestamp}">
<merchantid>$self->{merchantid}</merchantid>
XML
$xml .= "<orderid>$args{orderid}</orderid>" if $args{orderid};
$xml .= <<XML;
<card>
<ref>$args{ref}</ref>
<payerref>$args{payerref}</payerref>
<number>$args{number}</number>
<expdate>$args{expdate}</expdate>
<chname>$args{chname}</chname>
<type>$args{type}</type>
XML
$xml .= "<issueno>$args{issueno}</issueno>" if $args{issueno};
$xml .= <<XML;
</card>
<sha1hash>$sha1hash</sha1hash>
</request>
XML
return $self->__request($xml);
}
sub update_card {
my $self = shift;
my %args = @_ % 2 ? %{$_[0]} : (@_);
$args{update_card} = 1;
$self->new_card(%args);
}
sub delete_card {
my $self = shift;
my %args = @_ % 2 ? %{$_[0]} : (@_);
my @r = ('ref', 'payerref');
$self->{__timestamp} = __timestamp();
# Timestamp.merchantID.payerref.pmtref
my $sha1hash = $self->__sha1hash($args{payerref}, $args{ref});
# we omit other fields for now
my $xml = <<XML;
<request type="card-cancel-card" timestamp="$self->{__timestamp}">
<merchantid>$self->{merchantid}</merchantid>
<card>
<ref>$args{ref}</ref>
<payerref>$args{payerref}</payerref>
</card>
<sha1hash>$sha1hash</sha1hash>
</request>
XML
return $self->__request($xml);
}
sub receipt_in {
my $self = shift;
my %args = @_ % 2 ? %{$_[0]} : (@_);
my @r = ('account', 'amount', 'currency', 'payerref', 'paymentmethod');
foreach my $r (@r) {
$args{$r} or croak "$r is required.";
}
$self->{__timestamp} = __timestamp();
# timestamp.merchantid.orderid.amount.currency.payerref
my $sha1hash = $self->__sha1hash($args{orderid} || '', $args{amount} || '', $args{currency} || '', $args{payerref});
$args{autosettle} = 1 unless exists $args{autosettle};
# we omit other fields for now
my $action = 'receipt-in';
my $xml = <<XML;
<request type="$action" timestamp="$self->{__timestamp}">
<merchantid>$self->{merchantid}</merchantid>
<account>$self->{account}</account>
XML
$xml .= "<orderid>$args{orderid}</orderid>" if $args{orderid};
if ($args{cvn}) {
$xml .= <<XML;
<paymentdata>
<cvn>
( run in 1.586 second using v1.01-cache-2.11-cpan-7fcb06a456a )