payment reference

This commit is contained in:
Rainer Gümpelein 2022-02-20 09:10:00 +01:00
parent 32213a7b46
commit 10d3b3d67f
2 changed files with 58 additions and 66 deletions

View file

@ -7,7 +7,7 @@ package Payment;
#Adapted from payone_post.pl
#
#enable for syntax check
#use lib "/var/www/copri-bike/shareedms-primary/src";
use lib "/var/www/copri-bike/shareedms-primary/src";
use strict;
use warnings;
@ -133,16 +133,26 @@ sub preauthorizationSEPA_main {
}
}
my $preauth_amount = 0;
my $reference = "";
#for testing payment-data
if($ctt_rec->{c_id} && $ctt_rec->{c_id} == 1 && $ctt_rec->{reference}){
$ctt = $ctt_rec;
$preauth_amount = $ctt->{int15};#int15 should only used for testing payment-data
$reference = $ctt_rec->{reference};
}else{
$preauth_amount = $ctt->{int01};
$ctt->{reference} = $dbt->{operator}->{$varenv->{dbname}}->{oprefix} . "-S-" . $ctt->{ct_name};
$reference = $dbt->{operator}->{$varenv->{dbname}}->{oprefix} . "-S-" . $ctt->{ct_name};
}
#if reference still set then count
if($ctt->{txt25}){
if($ctt->{txt25} =~ /\d-\d$/){
my ($refbase,$sub) = split(/-/,$ctt->{txt25});
$sub++;
$reference = "$refbase-$sub";
}else{
$reference = "$ctt->{txt25}-1";
}
}
if($ctadr->{c_id} && $ctt->{c_id} && $preauth_amount > 0){
@ -178,7 +188,7 @@ sub preauthorizationSEPA_main {
currency => "$currency",
iban => uc($ctadr->{txt22}),
bic => uc($ctadr->{txt23}),
reference => "$ctt->{reference}"
reference => "$reference"
};
$preauth_request->{ip} = "$ctadr->{txt25}" if($ctadr->{txt25} && $ctadr->{txt25} =~ /\d+\.\d+\.\d+\.\d+/);
my $request = { %$payone_conf, %$preauth_request};
@ -265,14 +275,26 @@ sub preauthorizationCC_main {
}
}
my $preauth_amount = 0;
my $reference = "";
#for testing payment-data
if($ctt_rec->{c_id} && $ctt_rec->{c_id} == 1 && $ctt_rec->{reference}){
$ctt = $ctt_rec;
$preauth_amount = $ctt->{int15};#int15 should only used for testing payment-data
$reference = $ctt_rec->{reference};
}else{
$preauth_amount = $ctt->{int01};
$ctt->{reference} = $dbt->{operator}->{$varenv->{dbname}}->{oprefix} . "-C-" . $ctt->{ct_name};
$reference = $dbt->{operator}->{$varenv->{dbname}}->{oprefix} . "-C-" . $ctt->{ct_name};
}
#if reference still set then count
if($ctt->{txt25}){
if($ctt->{txt25} =~ /\d-\d$/){
my ($refbase,$sub) = split(/-/,$ctt->{txt25});
$sub++;
$reference = "$refbase-$sub";
}else{
$reference = "$ctt->{txt25}-1";
}
}
if($ctadr->{c_id} && $ctt->{c_id} && $preauth_amount > 0){
@ -306,7 +328,7 @@ sub preauthorizationCC_main {
country => "$ctadr->{txt10}",
pseudocardpan => "$ctadr->{ct_name}",
ecommercemode => "internet", # wird zu 3Dscheck,
reference => "$ctt->{reference}"
reference => "$reference"
};
# https://docs.payone.com/display/public/PLATFORM/Special+remarks+-+Recurring+transactions+credit+card
# https://docs.payone.com/display/public/INT/Best+Practices+for+PSD2#tab-3DS+2.0+Best+Case

View file

@ -190,11 +190,13 @@ EOF
print $q->start_table({-class=>'list', -height=>'10em',-border=>'0', -width=>'100%',-align=>'left', -cellpadding=>'0', -cellspacing=>'0'}),"\n";
###Content #Edit Address --> template=Adressenliste
$ctt->{txt01} = $q->unescapeHTML("$ctt->{txt01}");
my $int05 = "";
$int05 = "(manuell)" if($ctt->{int05});
if($users_dms->{u_id} && ($R::trans2edit eq "client" || $R::ct_trans eq "add_transadr")){
my @_anrede = ("","Frau","Herr","Firma");
print $q->hidden(-name=>'c_id4trans', -override=>'1', -value=>"$ctx->{c_id}"),"\n";#c_id from contenttrans
print $q->hidden(-name=>'int10', -override=>'1', -value=>"$c_idadr"),"\n";
#print $q->hidden(-name=>'txt26', -override=>'1', -value=>"$mandat"),"\n";
print $q->hidden(-name=>'c_idadr', -override=>'1', -value=>"$c_idadr"),"\n";
print $q->hidden(-name=>'rel_id', -override=>'1', -value=>"$rel4tpl->{rel_id}"),"\n";
print $q->Tr(),"\n";
@ -218,6 +220,14 @@ EOF
print $q->Tr(),"\n";
print $q->td({-class=>'tdescr'},"eMail"),"\n";
print $q->td({-class=>'tdval',-colspan=>'2'}, $q->textfield(-class=>'etxt',-name=>'txt08', -default=>"$ctt->{txt08}", -size=>'34', maxlength=>'45')),"\n";
print $q->Tr(),"\n";
print $q->td({-class=>'tdescr'},"Telefon"),"\n";
print $q->td({-class=>'tdval',-colspan=>'2'}, $q->textfield(-class=>'etxt',-name=>'txt07', -default=>"$ctt->{txt07}", -size=>'34', maxlength=>'40')),"\n";
print $q->Tr(),"\n";
print $q->td({-class=>'tdescr'},"Leistungsdatum"),"\n";
print $q->td({-class=>'tdval',-colspan=>'2'}, $q->textfield(-class=>'etxt',-name=>'txt20', -default=>"$ctt->{txt20}", -size=>'34', maxlength=>'60'),$but->checkbox("1","int05","$ctt->{int05}"),"manuell"),"\n";
print $q->hidden(-name=>"int05",-override=>1,-value=>"");
}elsif($users_dms->{u_id}){
print $q->Tr(),"\n";
if(!$ctx->{close_time}){
@ -237,7 +247,6 @@ EOF
if($c_idadr && $rel_adr->{rel_id}){
print $q->td({-class=>'tdval'},$q->span({-style=>"background-color:#dcd77f;"},$q->a({-class=>"linknav",-href=>"/DMS/Kunden?node2edit=editpart\&mode=manager\&rel_id=$rel_adr->{rel_id}\&tpl_id=202",-title=>"Kunden Stammdaten öffnen"}," Kunden ID $c_idadr ")), $q->span({-style=>"color:red;"}," $ctadr->{int12}")),"\n";
}
if($ctt->{txt01} || $ctt->{txt02} || $ctt->{txt07} || $ctt->{txt08}){
$ctt->{txt01} = $lb->newline($ctt->{txt01},"","");
print $q->Tr(),"\n"; $line_count1++;
print $q->td({-class=>'tdtxt'}," "),"\n";
@ -251,57 +260,24 @@ EOF
print $q->Tr(),"\n"; $line_count1++;
print $q->td({-class=>'tdtxt'}," "),"\n";
print $q->td({-class=>'tdval',-colspan=>2},"$ctt->{txt08}"),"\n";
}
print $q->Tr(),"\n";
print $q->td({-class=>'tdescr'}," "),"\n";
print $q->td({-class=>'tdval',-colspan=>2},"$ctt->{txt07}"),"\n";
print $q->Tr(),"\n";$line_count1++;
print $q->td({-class=>'tdescr'}," "),"\n";
print $q->td({-class=>'tdval',-colspan=>2},"$ctt->{txt20} $int05"),"\n";
}
print $q->end_table;
print "</td>\n";
my $txt20 = $ctt->{txt20} || $ctf->{txt80};
my $int05 = "";
$int05 = "(manuell)" if($ctt->{int05});
print "<td width='50%' style='font-size:1em;'>\n";
print $q->start_table({-class=>'list', -border=>'0', -width=>'100%',-align=>'left', -cellpadding=>'0', -cellspacing=>'0'}),"\n";
if($users_dms->{u_id} && ($R::trans2edit eq "client" || $R::ct_trans eq "add_transadr")){
print $q->Tr(),"\n";
print $q->td({-class=>'tdescr'},"RFID"),"\n";
print $q->td({-class=>'tdval'}, $q->textfield(-class=>'etxt',-name=>'txt09', -default=>"$ctt->{txt09}", -size=>'25', maxlength=>'40')),"\n";
print $q->Tr(),"\n";
print $q->td({-class=>'tdescr'},"Telefon"),"\n";
print $q->td({-class=>'tdval'}, $q->textfield(-class=>'etxt',-name=>'txt07', -default=>"$ctt->{txt07}", -size=>'25', maxlength=>'40')),"\n";
print $q->Tr(),"\n";
print $q->td({-class=>'tdescr'},"Leistungsdatum"),"\n";
print $q->td({-class=>'tdval'}, $q->textfield(-class=>'etxt',-name=>'txt20', -default=>"$txt20", -size=>'25', maxlength=>'60'),$but->checkbox("1","int05","$ctt->{int05}"),"manuell"),"\n";
print $q->hidden(-name=>"int05",-override=>1,-value=>"");
}else{
if($ctt->{txt09}){
print $q->Tr(),"\n";
print $q->td({-class=>'tdescr'},"RFID"),"\n";
print $q->td({-class=>'tdval'},"$ctt->{txt09}"),"\n";
}
if($ctt->{txt07}){
print $q->Tr(),"\n";
print $q->td({-class=>'tdescr'},"Telefon"),"\n";
print $q->td({-class=>'tdval',-style=>'min-width:20em;'},"$ctt->{txt07}"),"\n";
}
if($txt20){
print $q->Tr(),"\n";$line_count1++;
print $q->td({-class=>'tdescr'},"Leistungsdatum"),"\n";
if($ctt->{txt20}){
print $q->td({-class=>'tdval'},"$ctt->{txt20} $int05"),"\n";
}else{
print $q->td({-class=>'tdval'},"Zur Info: Anhand der Einstellung werden nur Positionen bis Buchungsdatum \"$ctf->{txt80}\" erfasst. Für Buchungen neueren Datums wird nach dem \"buchen\" eine weitere Rechnung generiert."),"\n";
}
}
}
#payone is working?
#keep in mind
#$ctx is primarly contenttrans
#$ctt = $ctx
#$ctt will partly overwritten by contentadr if address changes
my $pay_sequence = " | sequencenr: $ctt->{int18}" if($ctt->{int18});
if($ctt->{int03} && $ctt->{txt16}){
my @_paymentstate = split(/\|/,$varenv{Zahlungsweise});
my $kind_of_payment = "fehlt";
$kind_of_payment = "$_paymentstate[0]" if($ctt->{int03} == 1);
@ -315,12 +291,11 @@ EOF
print $q->Tr(),"\n";
print $q->td({-class=>'tdescr'},"Payone Saldo"),"\n";
print $q->td({-class=>'tdval'},"$ctt->{int16} $pay_sequence"),"\n";
if($ctt->{txt28} =~ /error/i){
print $q->Tr(),"\n";
print $q->td({-class=>'tdescr'},"payone error"),"\n";
print $q->td({-class=>'tdval'},"(transaction) $ctt->{txt28}"),"\n";
}
}else{
print $q->Tr(),"\n";
print $q->td({-class=>'tdescr'},"Payone Reference"),"\n";
print $q->td({-class=>'tdval'},"$ctt->{txt25}"),"\n";
#check payone status
if($ctt->{txt28} =~ /error/i){
print $q->Tr(),"\n";
@ -332,9 +307,6 @@ EOF
print $q->td({-class=>'tdval'},"(address) $ctadr->{txt28}"),"\n";
}
}
print $q->end_table;
print "</td></tr>\n";
@ -363,6 +335,7 @@ EOF
print $q->Tr(),"\n";
print $q->td({-class=>'tdval4',-colspan=>"2"},$q->span({-style=>'font-weight:bold;'},"Internas und Bearbeitungstatus")),"\n";
print $q->td({-class=>'tdval4',-colspan=>"2"},$q->span({-style=>'font-weight:bold;'},"PDF Formular Texte "),$q->span({-style=>'color:silver;font-weight:normal;'}," ( z.T. Definitionen aus Einstellung/Firma )")),"\n";
if($varenv{order_state}){
print $q->Tr(),"\n";
my @_orderstate = split(/\|/,$varenv{order_state});
@ -370,23 +343,21 @@ EOF
}
$ctt->{txt23} = $q->unescapeHTML("$ctt->{txt23}") if($ctt->{txt23});
print $q->Tr(),"\n";
print $q->td({-class=>'tdval4',-colspan=>'2'},$q->textarea(-class=>'etxt',-name=>'txt23', -default=>"$ctt->{txt23}", -rows=>4, -columns=>90)),"\n";
print $q->td({-class=>'tdval4',-colspan=>'2'},$q->textarea(-class=>'etxt',-name=>'txt23', -default=>"$ctt->{txt23}", -rows=>6, -columns=>75)),"\n";
print $q->hidden(-name=>'c_id4trans', -override=>'1', -value=>"$ctx->{c_id}");
print $q->hidden(-name=>'set_main_id', -override=>'1', -value=>"$set_main_id"),"\n";
my $ebutton = "ebutton";
$ebutton = "ebutton4" if($ctx->{ct_name} && $ctx->{ct_name} =~ /\d+/ && !$R::trans2edit && !$ctt->{txt12} && $ctt->{txt21} && $ctt->{txt21} !~ /\,/);
print $q->Tr(),"\n";
print $q->td({-class=>'tdval',-colspan=>2}, $but->singlesubmit7("ct_trans","save_text_internas","$ib{save_text}","","","$ebutton")),"\n" if($ctx->{close_time});
if($ctx->{close_time}){
print $q->Tr(),"\n";
print $q->td({-class=>'tdval',-colspan=>2}, $but->singlesubmit7("ct_trans","save_text_internas","$ib{save_text}","","","$ebutton")),"\n";
print $q->end_form,"\n";
print $q->start_form(),"\n";
}
print $q->Tr(),"\n";
print $q->td({-class=>'tdval4',-colspan=>"2"},$q->span({-style=>'font-weight:bold;'},"PDF Formular Texte "),$q->span({-style=>'color:silver;font-weight:normal;'}," ( z.T. Definitionen aus Einstellung/Firma )")),"\n";
#Zahlungstexte
foreach(@tplf_order){
@ -411,8 +382,7 @@ EOF
$ctt->{txt12} = $q->unescapeHTML($ctt->{txt12}) || "";
print $q->Tr(),"\n";
print $q->td({-class=>'tdval4',-colspan=>'2'},$q->textarea(-class=>'etxt',-name=>'txt12', -default=>"$ctt->{txt12}", -rows=>4, -columns=>90)),"\n";
print $q->td({-class=>'tdval4',-colspan=>'2'},$q->textarea(-class=>'etxt',-name=>'txt12', -default=>"$ctt->{txt12}", -rows=>6, -columns=>75)),"\n";
print $q->Tr(),"\n"; $line_count1++;
my @line_txt12 = split(/\n/,$ctt->{txt12});
@ -447,7 +417,7 @@ EOF
my $ebutton = "ebutton";
$ebutton = "ebutton4" if($ctx->{ct_name} && $ctx->{ct_name} =~ /\d+/ && !$R::trans2edit && !$ctt->{txt12} && $ctt->{txt21} !~ /\,/);
print $q->Tr(),"\n";
print $q->td({-class=>'tdval',-colspan=>2}, $but->singlesubmit7("ct_trans","save_text","$ib{save_text}","","","$ebutton"),"$formular_text"),"\n" if(!$ctx->{close_time});
print $q->td({-class=>'element6',-colspan=>2}, $but->singlesubmit7("ct_trans","save_text","$ib{save_text}","","","$ebutton"),"$formular_text"),"\n" if(!$ctx->{close_time});
print $q->end_table,"\n";
print "</td></tr>\n";