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 )