payment payone_reset transaction

This commit is contained in:
Rainer Gümpelein 2022-02-22 08:31:35 +01:00
parent 10d3b3d67f
commit 3423fd453d
8 changed files with 83 additions and 103 deletions

View file

@ -268,11 +268,9 @@ div#Oline {
background-color: #e6edf2;
}
.element6 {
margin:0.5em;
font-size:0.91em;
height: 1.7em;
padding:0.3em 0 0 0;
text-align:left;
font-size:0.81em;
padding:0.5em 1em;
text-align:right;
border:0px;
}
.elementwhite {

View file

@ -611,7 +611,7 @@ sub singlesubmit7(){
$b_img = "Delete" if("$b_name" =~ /delete_media/);
$b_img = "Save" if("$b_name" =~ /save|service_done|_contenttverpos/);
$a_key = "y" if("$b_name" =~ /save/);
$b_img = "Save Texts" if("$b_name" =~ /save_text/);
$b_img = "Text Save" if("$b_name" =~ /save_text/);
$b_img = "Delete All" if("$b_name" =~ /delete_all/);
$b_img = "Search" if("$b_name" =~ /search/);
$b_img = "New" if("$b_name" =~ /^new/);
@ -655,7 +655,7 @@ sub singlesubmit17(){
$b_img = "Delete" if("$b_name" =~ /delete_media/);
$b_img = "Save" if("$b_name" =~ /save/);
$a_key = "y" if("$b_name" =~ /save/);
$b_img = "Save Texts" if("$b_name" =~ /save_text/);
$b_img = "Text Save" if("$b_name" =~ /save_text/);
$b_img = "Delete All" if("$b_name" =~ /delete_all/);
$b_img = "Search" if("$b_name" =~ /search/);
$b_img = "New" if("$b_name" =~ /^new/);

View file

@ -452,7 +452,7 @@ sub handler {
int15 => 1,#preauth amount
txt16 => "",
reference => "$users_sharee->{c_id}_$epoche",
renewed => ''
payone_reset => ''
};
my $payone_txid = "";

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;
@ -76,7 +76,7 @@ sub managemandate_main {
$ctadr->{txt22} =~ s/\s//g;
my $bcountry = uc($1) if($ctadr->{txt22} && $ctadr->{txt22} =~ /^(\w{2})/);
my $currency = "EUR";
$currency = "CHF" if($bcountry eq "CH");
#$currency = "CHF" if($bcountry eq "CH");
$ctadr->{txt23} =~ s/\s//g;
my $preauth_request = {
request => 'managemandate',
@ -123,7 +123,7 @@ sub preauthorizationSEPA_main {
my $ctt = { c_id => 0 };
$ctt = $dbt->fetch_record($dbh,$pref);
if($ctt_rec->{renewed}){
if($ctt_rec->{payone_reset}){
if($ctt->{ct_name} =~ /\d+-\d+/){
my ($ct_name,$subname) = split(/-/,$ctt->{ct_name});
$subname++;
@ -227,7 +227,7 @@ sub captureSEPA_main {
if($ctt->{c_id} && (!$ctt->{state} || $ctt->{int14})){
my $amount = 0;
$amount = $ctt->{int01} * 100 if($ctt->{int01} != 0);
$amount = $ctt->{int01} * 100 if(looks_like_number($ctt->{int01}));
my $currency = "EUR";
my $preauth_request = {
@ -265,7 +265,7 @@ sub preauthorizationCC_main {
my $ctt = { c_id => 0 };
$ctt = $dbt->fetch_record($dbh,$pref);
if($ctt_rec->{renewed}){
if($ctt_rec->{payone_reset}){
if($ctt->{ct_name} =~ /\d+-\d+/){
my ($ct_name,$subname) = split(/-/,$ctt->{ct_name});
$subname++;
@ -364,9 +364,9 @@ sub captureCC_main {
my $sequence = 1;
$sequence = $ctt_rec->{sequence} if($ctt_rec->{sequence});
if($ctt->{c_id} && (!$ctt->{state} || $ctt->{int14} || $ctt->{txt28})){
if($ctt->{c_id} && (!$ctt->{state} || $ctt->{int14})){
my $amount = 0;
$amount = $ctt->{int01} * 100 if($ctt->{int01} != 0);
$amount = $ctt->{int01} * 100 if(looks_like_number($ctt->{int01}));
my $preauth_request = {
request => 'capture',
amount => "$amount",
@ -523,7 +523,7 @@ sub rpc {
$update_ctt->{int03} = $ctadr->{int03};
$update_ctt->{int17} = $useridval if($useridval);
$update_ctt->{txt16} = $txidval;
$update_ctt->{txt22} = $ctt->{renewed} if($ctt->{renewed});
$update_ctt->{txt22} = $ctt->{payone_reset} if($ctt->{payone_reset});
$update_ctt->{txt26} = $ctadr->{ct_name};#Mandat/pseudocp
$update_ctt->{txt28} = "";
$update_adr->{int12} = 0;
@ -558,7 +558,7 @@ sub rpc {
}else{#not APPROVED
print FILE "NOT APPROVED $now_dt\n $todo: ctt.c_id=$ctt->{c_id} && ctadr.c_id=$ctadr->{c_id}" . $res->content . "\n" if($debug);
$update_ctt->{int14} = 1 if($ctt->{state} && $ctt->{state} !~ /Zahlungseingang/);;#OPOS
$update_ctt->{int14} = 1 if($ctt->{state});#OPOS
#errormessage=Reference number already exists --> disabled
#errormessage=Amount no longer available --> disabled
@ -675,10 +675,16 @@ sub payone_capture(){
}
}
$db->update_content4change("contenttrans",$ctt->{c_id},"","$sum_paid","int01");
$db->update_content4change("contenttrans",$ctt->{c_id},"",$state,"state");
$db->update_content4change("contenttrans",$ctt->{c_id},"",$owner,"owner");
$db->updater("contenttrans","c_id",$ctt->{c_id},"int14","2","","","","","");#must be to capture
my $update_ctt = {
table => "contenttrans",
mtime => "now()",
owner => $owner,
int01 => $sum_paid,
int14 => 2,
state => "$state",
};
$dbt->update_record($dbh,$update_ctt,$ctt);
#in cron we set OPOS anyway. If payone captured, it will be set int14=null
if(!$state || $state !~ /payone/){
#$db->updater("contenttrans","c_id",$ctt->{c_id},"txt22","cronjob fail","","","","","");

View file

@ -774,40 +774,6 @@ sub preinit(){
$db->update_content4change($table,$c_id,$c_id,$c_id,"barcode") ;
}
#Payone managemandate (txt16=txid means payment process ID)
#2022-02-19, disabled Formular trigger at all because trying payone sequence numbering
my $subset_state = $R::set_state || $ctt->{state};
if(1==2 && $R::c_idadr && $subset_state =~ /payone/){
my $ctadr = $db->get_content1("contentadr",$R::c_idadr);
#SEPA
if($ctadr->{int03} == 1 && (!$ctt->{txt16} || $ctt->{int03} != 1 || $ctadr->{ct_name} !~ /\w{2}-\d+/ || $ctt->{txt28} =~ /errorcode=/)){
if($ctadr->{ct_name} !~ /\w{2}-\d+/){
$payone->managemandate_main(\%varenv,$ctadr,"",$users_dms->{u_id});
sleep 3;
$ctadr = $db->get_content1("contentadr",$R::c_idadr);
}
#preauthorizationSEPA sets new Rechnungsnummer
if($ctadr->{txt27} =~ /active|pending/ || !$ctt->{txt16} || $ctt->{txt28} =~ /errorcode=80|errorcode=907|errorcode=911|errorcode=950|errorcode=902|errorcode=1077/){
my $renewed="";
$renewed = "txid auto renewd" if($ctt->{txt28} =~ /errorcode=80|errorcode=907|errorcode=911|errorcode=950|errorcode=902|errorcode=1077/);
$ctt->{renewed} = $renewed;
$payone->preauthorizationSEPA_main(\%varenv,$ctadr,$ctt,$users_dms->{u_id});
}
}
#CC
#preauthorizationCC sets new Rechnungsnummer
if($ctadr->{int03} == 2 && (!$ctt->{txt16} || $ctt->{txt28} =~ /errorcode=80|errorcode=907|errorcode=911|errorcode=950|errorcode=902|errorcode=33|errorcode=908|errorcode=4|errorcode=5|errorcode=1077/ || $ctt->{int03} != 2 || length($ctadr->{ct_name}) < 19)){#CC
my $renewed="";
$renewed = "txid auto renewd" if($ctt->{txt28} =~ /errorcode=80|errorcode=907|errorcode=911|errorcode=950|errorcode=902|errorcode=33|errorcode=908|errorcode=4|errorcode=5|errorcode=1077/);
$ctt->{renewed} = $renewed;
$payone->preauthorizationCC_main(\%varenv,$ctadr,$ctt,$users_dms->{u_id});
}
}
#Change Formular Type -----------------------------------------------
#if("$R::set_main_id" != "$rel->{main_id}"){
if(($R::ct_trans =~ /print_pdf|print/i) || ("$R::set_main_id" != "$rel->{main_id}")){
@ -823,49 +789,64 @@ sub preinit(){
#SET state alias Zahlung buchen
if($R::set_state && !$R::close_time){
my $state = "no";
$state = $R::state if($R::state);
my $state = $R::state || "";
my $sum_paid = "null";
my $sum_kaution = "null";
if($state ne "no"){
if($R::set_state eq "buchen" && $R::sum_paid){
$sum_paid = $R::sum_paid;
$sum_kaution = $R::sum_kaution;
$sum_paid =~ s/,/\./;
$sum_kaution =~ s/,/\./;
}
my $update_ctt = {
table => "contenttrans",
mtime => "now()",
owner => $users_dms->{u_id},
int01 => $sum_paid,
state => "$state",
};
$ctt->{int14} = 2 if($state =~ /payone/);#set OPOS
$dbt->update_record($dbh,$update_ctt,$ctt);
$u_rows += $db->update_content4change($table,$c_id,"","$sum_paid","int01");
$db->update_content4change($table,$c_id,"",$state,"state");
$db->update_content4change($table,$c_id,"","now()","mtime");
$db->update_content4change($table,$c_id,"",$users_dms->{u_id},"owner");
#2020-02-05, do it only if payone (without payone Zahlunseingang)
if($state =~ /payone/){
$db->updater($table,"c_id","$c_id","int14","1","","","","","");
#preauth
my $ctadr = $db->get_content1("contentadr",$ctt->{int10});
if($ctadr->{int03} == 1 && $ctadr->{ct_name} =~ /\w{2}-\d+/ && ($ctt->{txt16} !~ /\d+/ || $ctt->{int03} != 1)){
$ctt->{payone_reset} = 0;
if($R::payone_reset){
#after delete preauth after 0€ capture sets new TXID and increment reference
$ctt->{payone_reset} = $R::payone_reset;
$ctt->{int01} = 0;
if($ctt->{int03} == 1 && $ctt->{txt16} && $R::state =~ /SEPA/){#SEPA 0
my $payoneret = $payone->captureSEPA_main(\%varenv,$ctadr,$ctt,$users_dms->{u_id});
}
if($ctt->{int03} == 2 && $ctt->{txt16} && $R::state =~ /Kreditkarte/){#CC 0
my $payoneret = $payone->captureCC_main(\%varenv,$ctadr,$ctt,$users_dms->{u_id});
}
}
if($ctadr->{int03} == 1 && $ctadr->{ct_name} =~ /\w{2}-\d+/){
my $payoneret = $payone->preauthorizationSEPA_main(\%varenv,$ctadr,$ctt,$users_dms->{u_id});
sleep 2;
}elsif($ctadr->{int03} == 2 && length($ctadr->{ct_name}) >= 19 && ($ctt->{txt16} !~ /\d+/ || $ctt->{int03} != 2)){
}elsif($ctadr->{int03} == 2 && length($ctadr->{ct_name}) >= 19){
my $payoneret = $payone->preauthorizationCC_main(\%varenv,$ctadr,$ctt,$users_dms->{u_id});
sleep 2;
}
$ctt = $db->get_content1("contenttrans",$c_id);
$ctt = $db->get_content1("contenttrans",$ctt->{c_id});
$ctt->{sequence} = $R::payone_sequence || 1;
#SEPA capture
if($ctt->{int03} == 1 && $ctt->{txt16} && $R::state =~ /SEPA/ && $state !~ /Zahlungseingang/){#SEPA
#only if int14 = OPOS (set by preauthorization)
if($ctt->{int14}){
#SEPA capture
if($ctt->{int03} == 1 && $ctt->{txt16} && $R::state =~ /SEPA/){#SEPA
my $payoneret = $payone->captureSEPA_main(\%varenv,$ctadr,$ctt,$users_dms->{u_id});
}
#CC capture
if($ctt->{int03} == 2 && $ctt->{txt16} && $R::state =~ /Kreditkarte/ && $state !~ /Zahlungseingang/){#CC
}
#CC capture
if($ctt->{int03} == 2 && $ctt->{txt16} && $R::state =~ /Kreditkarte/){#CC
my $payoneret = $payone->captureCC_main(\%varenv,$ctadr,$ctt,$users_dms->{u_id});
}
}else{
return "failure::Payone Geldeinzug nicht ausgeführt. Hat der Einzug bereits stattgefunden?";
}
}else{
$db->updater($table,"c_id","$c_id","int14","null","","","","","");
$db->updater($table,"c_id",$ctt->{c_id},"int14","null","","","","","");
}
}
@ -981,24 +962,14 @@ sub preinit(){
$u_rows += $db->update_tagesabschluss($table,$c_id4kasse,$journal_id,$journal_tpl,$tpl_vk,$parent_trans->{parent_id},"$main_ids","$s_owner_id","$opos");
if("$R::kind_of_trans" eq "Verkauf"){
$path =~ s/$R::kind_of_trans.*/$R::kind_of_trans\/Verkaufsjournal/;
}
if("$R::kind_of_trans" eq "Einkauf"){
$path =~ s/$R::kind_of_trans.*/$R::kind_of_trans\/Einkaufsjournal/;
}
if($R::kind_of_trans =~ /Faktur|Verleih/){
$path =~ s/$R::kind_of_trans.*/$R::kind_of_trans\/Verleihjournal/;
}
#calculate and set counts
my @mainis = split(/,/,$main_ids);
foreach(@mainis){
my $rows = $db->count_content($table,"$_","$tpl_vk");
$db->updater("nodes","main_id",$_,"int10",$rows) if($_ > 300000 && $rows =~ /\d/);
}
print $q->div({-class=>'elementwhite'},"1... redirecting to ... or CLICK ", $q->a({href=>"$varenv{wwwhost}$script$path"},"$varenv{wwwhost}$script$path"));
print redirect("$varenv{wwwhost}$script$path?redirected=1\&return=0-0-0|$i_rows-$u_rows-$d_rows");
print $q->div({-class=>'elementwhite'},"1... redirecting to ... or CLICK ", $q->a({href=>"$varenv{wwwhost}/DMS/Faktura/Verleihjournal"},"$varenv{wwwhost}/DMS/Faktura/Verleihjournal"));
print redirect("$varenv{wwwhost}/DMS/Faktura/Verleihjournal?redirected=1\&return=0-0-0|$i_rows-$u_rows-$d_rows");
exit 0;
}
}

View file

@ -233,7 +233,7 @@ sub save_account(){
$u_rows = $dbt->update_one($dbh,$update_primary,"txt17='@operators'");
}
#Web-Login|Rabatt|Vde|payone cron-intervall|Ilockit-Admin
#elsif($_ =~ /int05|int07|int12|int16|int19/){
#elsif($_ =~ /int05|int07|int16|int19/){
elsif($_ =~ /int05|int07|int16|int19/){
$u_rows = $dbt->update_one("",$update_primary,"$_=$valxx");
}
@ -424,7 +424,7 @@ sub save_account(){
$u_rows = $dbt->update_one($dbh,$update_primary,"$_='$valxx'");
}
}elsif($_ eq "int12"){
if($varenv{dbname} eq "sharee_primary" && $ctadr->{int12} == 2){
if($varenv{dbname} eq "sharee_primary"){
$u_rows = $dbt->update_one($dbh,$update_primary,"$_=2");
}else{
$u_rows = $dbt->update_one($dbh,$update_primary,"$_=$valxx");
@ -496,7 +496,7 @@ sub save_account(){
int15 => 1,
txt16 => "",
reference => "$ctadr->{c_id}_$epoche",
renewed => ''
payone_reset => ''
};
my $payone_txid = "";

View file

@ -343,7 +343,7 @@ 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=>6, -columns=>75)),"\n";
print $q->td({-class=>'tdval4',-colspan=>'2'},$q->textarea(-class=>'etxt',-name=>'txt23', -default=>"$ctt->{txt23}", -rows=>6, -columns=>65)),"\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";
@ -382,7 +382,7 @@ EOF
$ctt->{txt12} = $q->unescapeHTML($ctt->{txt12}) || "";
print $q->td({-class=>'tdval4',-colspan=>'2'},$q->textarea(-class=>'etxt',-name=>'txt12', -default=>"$ctt->{txt12}", -rows=>6, -columns=>75)),"\n";
print $q->td({-class=>'tdval4',-colspan=>'2'},$q->textarea(-class=>'etxt',-name=>'txt12', -default=>"$ctt->{txt12}", -rows=>6, -columns=>65)),"\n";
print $q->Tr(),"\n"; $line_count1++;
my @line_txt12 = split(/\n/,$ctt->{txt12});
@ -417,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=>'element6',-colspan=>2}, $but->singlesubmit7("ct_trans","save_text","$ib{save_text}","","","$ebutton"),"$formular_text"),"\n" if(!$ctx->{close_time});
print $q->td({-style=>'font-size:0.81em;padding:0.3em 0em;border:0px;',-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";

View file

@ -425,7 +425,7 @@ EOF
my $m= 1 + $k - $n;
$m++;
print "<tr>\n";
print "<td colspan='$m'><div class='element6'>$payment_text</div></td>\n";
print "<td colspan='$m'><div style='font-size:0.81em;padding:0.3em 0em;border:0px;'>$payment_text</div></td>\n";
print "<td style='font-size:1em;' colspan='$n'>\n";
print $q->start_table({-class=>'list',-style=>'border-top:1px;border-style:solid;border-color:black;', -border=>'0', -width=>'100%',-align=>'center', -cellpadding=>'3', -cellspacing=>'0'}),"\n";
@ -491,10 +491,6 @@ EOF
}
$kind_of_payment = "$ctt->{state}" if($ctt->{state});
#further payone capture are only allowed if OPOS && sequence && TXID is set
if($ctt->{int14} && $ctt->{int18} && $ctt->{txt16}){
print $q->div({-class=>'element6',-style=>'float:right;'},"seq", $q->textfield(-class=>'etxt',-name=>"payone_sequence",-default=>"", -override=>'1',-size=>"1",-maxlength=>1)),"\n";
}
my $send_invoice_checkbox = 1;
$send_invoice_checkbox = 0 if($ctt->{txt30});
@ -504,6 +500,15 @@ EOF
$but->singlesubmit1("set_state","buchen"),
$but->selector("state","250px",$kind_of_payment,@_paymentstate)),"\n";
}
#further payone capture are only allowed if OPOS && sequence && TXID is set
if($ctt->{int14} && $ctt->{int18} && $ctt->{txt16}){
print $q->div({-class=>'element6',-style=>'clear:both;'},"Weitere Payone Einzüge über die vorhandene TXID $ctt->{txt16} (vorautorisiert Summe beachten) durch manuelle inkrement der Sequencenr mit +1", $q->textfield(-class=>'etxt',-name=>"payone_sequence",-default=>"$ctt->{int18}", -override=>'1',-size=>"1",-maxlength=>1)),"\n";
}
#Payone reset if OPOS and TXID
if($ctt->{int14} && $ctt->{txt16}){
print $q->div({-class=>'element6',-style=>'clear:both;'},"Payone reset löscht den Vorgang mit der TXID $ctt->{txt16} und versucht einen erneuten Einzug", $but->checkbox("1","payone_reset","0","Payone reset","")),"\n";
}
}
print $q->end_form;