First pass at adding key files
This commit is contained in:
@ -0,0 +1,122 @@
|
||||
# ==================================================================
|
||||
# Gossamer Links - enhanced directory management system
|
||||
#
|
||||
# Website : http://gossamer-threads.com/
|
||||
# Support : http://gossamer-threads.com/scripts/support/
|
||||
# CVS Info : 087,071,086,086,085
|
||||
# Revision : $Id: 2CheckOut.pm,v 1.13 2006/08/22 23:07:53 brewt Exp $
|
||||
#
|
||||
# Copyright (c) 2003 Gossamer Threads Inc. All Rights Reserved.
|
||||
# Redistribution in part or in whole strictly prohibited. Please
|
||||
# see LICENSE file for full details.
|
||||
# ==================================================================
|
||||
#
|
||||
# Glue between Gossamer Links and 2CheckOut payment interface
|
||||
|
||||
package Links::Payment::Remote::2CheckOut;
|
||||
use strict;
|
||||
|
||||
# Make sure the payment module is available
|
||||
use GT::Payment::Remote::2CheckOut;
|
||||
use Links qw/:objects/;
|
||||
use Links::Payment qw/:status :log/;
|
||||
use Links::SiteHTML;
|
||||
use vars qw/%INVALID %EMPTY/;
|
||||
|
||||
sub required {
|
||||
# -----------------------------------------------------------------------------
|
||||
# Returns a list of required field names. Each field name will be looked for
|
||||
# in the language file, prefixed with 'PAYMENT_REMOTE_2CheckOut_', for the
|
||||
# title of the field, and 'PAYMENT_REMOTE_DESC_2CheckOut_' for a description of
|
||||
# the field's contents.
|
||||
# Note that these are just required SETUP fields, so things like credit card
|
||||
# number, billing name, etc. are NOT included.
|
||||
|
||||
return
|
||||
seller_id => { type => 'TEXT', valid => '^\d{1,10}$' },
|
||||
secret_word => { type => 'TEXT', valid => '^(?!tango$).+$' };
|
||||
}
|
||||
|
||||
sub optional {
|
||||
# -----------------------------------------------------------------------------
|
||||
return
|
||||
demo => { type => 'YESNO' };
|
||||
}
|
||||
|
||||
sub payment_info {
|
||||
# -----------------------------------------------------------------------------
|
||||
# Returns a hashref of payment hints
|
||||
#
|
||||
my @fields = qw/seller_id secret_word demo/;
|
||||
my $ret = {
|
||||
fields => \@fields
|
||||
};
|
||||
if (my $info = $CFG->{payment}->{remote}->{used}->{'2CheckOut'}) {
|
||||
for (@fields) {
|
||||
$ret->{$_} = $info->{$_};
|
||||
}
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
|
||||
sub verify {
|
||||
# -----------------------------------------------------------------------------
|
||||
# Checks that $IN, combined with the saved admin settings, makes up all of the
|
||||
# required information. Returns 1 on success, or an array ref of invalid keys
|
||||
# on failure. For Remote payment methods, this has no real effect.
|
||||
return 1;
|
||||
}
|
||||
|
||||
sub postback {
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
my $pay = $DB->table('Payments');
|
||||
my $log = $DB->table('PaymentLogs');
|
||||
|
||||
my $unique = $IN->param('cart_order_id');
|
||||
my $payment = $pay->select({ payments_id => $unique })->fetchrow_hashref
|
||||
or return; # Whatever it is, we didn't create it.
|
||||
|
||||
GT::Payment::Remote::2CheckOut::process(
|
||||
param => $IN,
|
||||
sellerid => $CFG->{payment}->{remote}->{used}->{'2CheckOut'}->{seller_id},
|
||||
password => $CFG->{payment}->{remote}->{used}->{'2CheckOut'}->{secret_word},
|
||||
demo => $CFG->{payment}->{remote}->{used}->{'2CheckOut'}->{demo},
|
||||
on_valid => sub {
|
||||
return unless $IN->param('total') >= $payment->{payments_amount};
|
||||
|
||||
return if $payment->{payments_status} == COMPLETED;
|
||||
|
||||
my $cond = GT::SQL::Condition->new();
|
||||
$cond->add(paylogs_payments_id => '=' => $unique);
|
||||
$cond->add(paylogs_type => '=' => LOG_ACCEPTED);
|
||||
$cond->add(paylogs_text => LIKE => "%\n2CheckOut order number: " . $IN->param('order_number') . "%\n");
|
||||
my $found = $log->count($cond);
|
||||
return if $found;
|
||||
|
||||
$pay->update(
|
||||
{ payments_status => COMPLETED, payments_last => time },
|
||||
{ payments_id => $payment->{payments_id} }
|
||||
);
|
||||
|
||||
$log->insert({
|
||||
paylogs_payments_id => $payment->{payments_id},
|
||||
paylogs_type => LOG_ACCEPTED,
|
||||
paylogs_time => time,
|
||||
paylogs_text => (
|
||||
sprintf(Links::language('PAYMENT_REMOTE_APPROVED') => '2CheckOut') . "\n" .
|
||||
"2CheckOut order number: " . $IN->param('order_number') . "\n" .
|
||||
"Amount: $payment->{payments_amount}\n"
|
||||
)
|
||||
});
|
||||
|
||||
Links::Payment::process_payment($payment->{payments_linkid}, $payment->{payments_term});
|
||||
}
|
||||
);
|
||||
|
||||
print $IN->header;
|
||||
print Links::SiteHTML::display('payment_success');
|
||||
1;
|
||||
}
|
||||
|
||||
1;
|
Reference in New Issue
Block a user