From b2dce25de83a25631e2b8ebf9e6c21abd250fe13 Mon Sep 17 00:00:00 2001 From: ragu Date: Tue, 30 Jan 2024 07:06:09 +0100 Subject: [PATCH] checking payment data after changing the payment typ --- copri4/main/src/Mod/APIjsonserver.pm | 2 +- copri4/main/src/Mod/APIpayone.pm | 30 +++++- copri4/main/src/Mod/Basework.pm | 17 ++-- copri4/main/src/Mod/Buttons.pm | 2 +- copri4/main/src/Mod/DBtank.pm | 12 ++- copri4/main/src/Mod/Indexsharee.pm | 30 +----- copri4/main/src/Mod/Payment.pm | 38 +++---- copri4/main/src/Mod/Prelib.pm | 11 +- copri4/main/src/Mod/Shareework.pm | 43 ++------ copri4/main/src/Tpl/BaseEdit.pm | 6 +- copri4/main/src/scripts/Ilockit_cloud.pl | 1 - copri4/main/src/scripts/payment_ack.pl | 94 ++++++++++++++++++ .../src/Tpl/PayoneCCclient.pm | 6 +- .../shareeapp-operator/src/Tpl/PayoneSEPA.pm | 7 +- .../shareeapp-operator/src/Tpl/RentalData.pm | 8 +- copri4/shareeconf/examples/apikeys.cfg | 17 +++- copri4/shareeconf/examples/global.cfg | 8 ++ .../examples/sharee_operator.sql.gz | Bin 33198 -> 35925 bytes 18 files changed, 209 insertions(+), 123 deletions(-) create mode 100755 copri4/main/src/scripts/payment_ack.pl diff --git a/copri4/main/src/Mod/APIjsonserver.pm b/copri4/main/src/Mod/APIjsonserver.pm index 2497f65..df82dd0 100755 --- a/copri4/main/src/Mod/APIjsonserver.pm +++ b/copri4/main/src/Mod/APIjsonserver.pm @@ -71,7 +71,7 @@ my $response = { apiserver => "$apiserver", response => "$respreq", uri_primary => "$dbt->{primary}->{sharee_primary}->{primaryApp}", - copri_version => "4.1.23.24", + copri_version => "4.1.23.26", user_id => "", authcookie => "", new_authcoo => "0", diff --git a/copri4/main/src/Mod/APIpayone.pm b/copri4/main/src/Mod/APIpayone.pm index 7a12d32..f320ec2 100755 --- a/copri4/main/src/Mod/APIpayone.pm +++ b/copri4/main/src/Mod/APIpayone.pm @@ -77,7 +77,7 @@ sub handler { #primary payonelink prepaid transaction-status - #TODO live tests if aid matches + #payone subaccount aid:55218 if($q->param('aid') eq "55218"){ print FILE "TeilRad payonelink transaction on $dbt->{primary}->{sharee_primary}->{database}->{dbname}\n"; @@ -132,6 +132,7 @@ sub handler { }; my $operator_prefix = ""; + my $ctadr_refid = 0; foreach(@keywords){ my $val = $q->param($_); @@ -142,8 +143,9 @@ sub handler { $receivable = $val if($_ eq "receivable"); $txid = $val if($_ eq "txid"); if($_ eq "reference"){ - $update_ctt->{txt25} = $val; + #oprefix-C/S-invoicenr reference for preauth/capture if($val =~ /^(\w+)-/){ + $update_ctt->{txt25} = $val; $operator_prefix = $1; if($operator_prefix ne $oprefix){ my $operator_conf = $dbt->get_operator_conf($operator_prefix); @@ -153,6 +155,10 @@ sub handler { } } } + #userid_epoche reference for payment_ack + elsif($val =~ /^(\d+)_\d+/){ + $ctadr_refid = $1; + } } $update_ctt->{int16} = $val if($_ eq "balance"); $update_ctt->{int18} = $val if($_ eq "sequencenumber"); @@ -162,8 +168,24 @@ sub handler { $update_adr->{int24} = $val if($_ eq "cardexpiredate"); } - #do updates on invoice by payone transaction data on matching TXID - if($txid && looks_like_number($update_ctt->{int19}) && looks_like_number($update_ctt->{int16})){ + #update on contentadr called payment_ack + if($ctadr_refid > 0){ + my $fetch_ctadr = { + table => "contentadr", + fetch => "one", + c_id => $ctadr_refid, + }; + my $ctadr = { c_id => 0 }; + $ctadr = $dbt->fetch_tablerecord($dbh,$fetch_ctadr); + if($ctadr->{c_id}){ + $update_adr->{int18} = $txid || 0;#in payment_ack contentadr context int18=txid + $dbt->update_record($dbh,$update_adr,$ctadr); + $dbt->update_operatorsloop($varenv{dbname},$ctadr->{c_id},"update"); + print FILE "payment_ack ctadr_refid:$ctadr_refid \n" . Dumper($update_adr) . "\n"; + } + } + #updates on contentttrans invoice by payone transaction data on matching TXID + elsif($txid && looks_like_number($update_ctt->{int19}) && looks_like_number($update_ctt->{int16})){ my $ctt = { c_id => 0 }; my $ctadr = { c_id => 0 }; my $fetch_ctt = { diff --git a/copri4/main/src/Mod/Basework.pm b/copri4/main/src/Mod/Basework.pm index 16d3130..58db0d3 100755 --- a/copri4/main/src/Mod/Basework.pm +++ b/copri4/main/src/Mod/Basework.pm @@ -122,21 +122,22 @@ sub battery_percent { } #payable_check and rentable_check -#int03==1 if sepa, 2 if CC, 3 if prepaid -#int04==1 if email Ack -#int13==1 if sms Ack -#int12==1|2|3|4 then Vde +#int03==1 if SEPA, 2 if CC, 3 if Prepaid +#int04==1 if emailAck +#int13==1 if smsAck +#int12==1|2|3|4 than Vde #int14==1 if AGB +#int18>=1 if payAck (must be only set on SEPA and CC) sub isuser_rentable { my $self = shift; my $auth = shift; my $varenv = shift || ""; my $rentable_check=0; - if($auth->{int03} && $auth->{ct_name} && ($auth->{int03} == 1 && $auth->{ct_name} =~ /^\w{2}-\d+/) || ($auth->{int03} == 2 && length($auth->{ct_name}) >= 19) || ($auth->{int03} == 3 && $auth->{ct_name} =~ /Prepaid-\d+/i)){ - $rentable_check=1; - if($auth->{txt08} && $auth->{int04} == 1 && $auth->{int13} == 1 && !$auth->{int12} && $auth->{int14}){ - $rentable_check=2;#if 2 then everything should be alright. rental is enabled + if($auth->{int03} && $auth->{ct_name} && ($auth->{int18} && (($auth->{int03} == 1 && $auth->{ct_name} =~ /^\w{2}-\w+/) || ($auth->{int03} == 2 && length($auth->{ct_name}) >= 19))) || ($auth->{int03} == 3 && $auth->{ct_name} =~ /Prepaid-\d+/i)){ + $rentable_check=1;#Account is payable + if(!$auth->{int12} && $auth->{txt08} && $auth->{int04} == 1 && $auth->{int13} == 1 && $auth->{int14}){ + $rentable_check=2;#Account is rentalable, with all Ack's and Vde=0 } } return $rentable_check; diff --git a/copri4/main/src/Mod/Buttons.pm b/copri4/main/src/Mod/Buttons.pm index db56b13..3657c5d 100755 --- a/copri4/main/src/Mod/Buttons.pm +++ b/copri4/main/src/Mod/Buttons.pm @@ -367,7 +367,7 @@ sub radiobox2(){ my $b_checked = ""; my $c_checked = ""; $a_checked = "checked" if(!$val); - $b_checked = "checked" if($val==1); + $b_checked = "checked" if($val==1 || length($val) > 8);#8 for payAck txid $c_checked = "checked" if($val==2); my $checkb = ""; $checkb .= " $a_name " if($a_name); diff --git a/copri4/main/src/Mod/DBtank.pm b/copri4/main/src/Mod/DBtank.pm index 5b0356f..36f8a32 100755 --- a/copri4/main/src/Mod/DBtank.pm +++ b/copri4/main/src/Mod/DBtank.pm @@ -683,7 +683,7 @@ sub collect_post(){ } }elsif($key =~ /ct\.close_time|ct\.state|ct\.int04|ct\.int14/ && $value){#used to get open invoices if($key =~ /ct\.state/ && $value eq "null"){ - $ct_where .= " and (ct.int04 is $value OR ct.int14 >= 1)";#all un-booked or opos + $ct_where .= " and (ct.int04 is null OR ct.int04=0 OR ct.int14 >= 1)";#all un-booked or opos }else{ $ct_where .= " and $key $op $value"; } @@ -747,6 +747,7 @@ sub fetch_cms { $langfield = "txt01" if($lang eq "de"); $langfield = "txt02" if($lang eq "en"); $langfield = "txt03" if($lang eq "fr"); + $langfield = "txt04" if($lang eq "es"); my $wand = ""; $wand = "and ct_name like '$fetch->{ct_name}%'" if($fetch->{ct_name}); @@ -782,7 +783,7 @@ sub fetch_record(){ $where .= " and rel.$key $op $value" if($key =~ /^(parent_id|main_id|template_id|rel_id)$/ && $value); if($key =~ /^(ct_name$|txt\d+|uri\d+|state)$/ && $value){ if($key eq "state" && $value eq "payment_fault"){ - $where .= " and (ct.int14 >= 1 || ct.int14 == 7)";#OPOS or Zahlungsausfall + $where .= " and (ct.int14 >= 1 OR ct.int14 = 7)";#OPOS or Zahlungsausfall }elsif($value =~ /length/){ $where .= " and $value"; }elsif($value eq "null"){ @@ -904,7 +905,7 @@ sub fetch_tablerecord(){ my $rc = $sth->execute(); #debug $fetch->{table} eq "contenttranspos" on Failure 758 - $bw->log("DBtank fetch_tablerecord source-dbname $source:",$sql,"") if($debug && $fetch->{table} eq "contenttranspos"); + #$bw->log("DBtank fetch_tablerecord source-dbname $source:",$sql,"") if($debug && $fetch->{table} eq "contenttranspos"); my $record = { c_id => 0 }; if($fetch->{fetch} eq "all" && $fetch->{keyfield}){ @@ -1622,8 +1623,9 @@ sub insert_contenttrans(){ $doc_name = "Tagesabschluss" if($tpl_id == 209); $doc_name = "Prepaid Account" if($tpl_id == 219); $owner="0" if(!$owner); - my $paymenttype = $ctadr->{int03} || 0; - #keep in mind int10 will be mainly used by Prelogic and Printpreview, thats because we save it also + my $paymenttype = 0; + $paymenttype = $ctadr->{int03} if($ctadr->{int03} =~ /^\d+$/); + my $sth = $dbh->prepare("INSERT INTO contenttrans (ct_name,txt00,int10,int03,txt02,txt01,txt03,txt06,txt07,txt08,txt10,txt11,owner,itime) VALUES('$invoice_nr','$doc_name','$ctadr->{c_id}','$paymenttype','$ctadr->{txt02}','$ctadr->{txt01}','$ctadr->{txt03}','$ctadr->{txt06}','$ctadr->{txt07}','$ctadr->{txt08}','$ctadr->{txt10}','$ctadr->{txt11}','$owner','now()') RETURNING c_id"); my $rows = $sth->execute(); diff --git a/copri4/main/src/Mod/Indexsharee.pm b/copri4/main/src/Mod/Indexsharee.pm index 08ed32b..5751558 100755 --- a/copri4/main/src/Mod/Indexsharee.pm +++ b/copri4/main/src/Mod/Indexsharee.pm @@ -600,10 +600,9 @@ sub handler { }; my $vde_on_fail = $users_sharee->{int12} || 1;#keep last or set 1 - #SEPA, done in payone Payment + #SEPA, done by Shareework managemandate #CC if($R::pseudocardpan && length($R::pseudocardpan) >= 19){#done by payone AJAX return - #if($R::status eq "APPROVED") $now_dt = strftime "%Y-%m-%d %H:%M:%S", localtime; $update_adr->{txt22} = ""; $update_adr->{txt23} = ""; @@ -615,31 +614,15 @@ sub handler { $update_adr->{int24} = "null";#cpdate reset $dbt->update_record($dbh,$update_adr,$users_sharee) if($users_sharee->{c_id} > 0); ($api_return,$users_sharee) = $apif->auth_verify($q,$coo,""); + + #payment_ack + system("$dbt->{copri_conf}->{basedir}/$varenv{syshost}/src/scripts/payment_ack.pl '$varenv{syshost}' 'payment_ackCC' '$users_sharee->{c_id}' '$aowner'"); - #define fictiv invoice to get 1 € test - my $epoche = time(); - my $ctt = { - c_id => 1, - int01 => 0,#capture amount - int15 => 1,#preauth amount - txt16 => "", - reference => "$users_sharee->{c_id}_$epoche", - payone_reset => '' - }; - - my $payone_txid = ""; - ##preauthorization and/or capture needs to much time, must be done async! - #$payone_txid = $payone->preauthorizationCC_main(\%varenv,$users_sharee,$ctt,$aowner); - #if($payone_txid) - if(1==1){ + if(1==1){ open(FILE,">>$varenv{logdir}/confirm.log") if($debug); print FILE "\n\n*--> $now_dt done by $0\n" if($debug); print FILE "trigger confirm-code request by pseudocardpan\n" if($debug); - #$ctt->{txt16} = "$payone_txid"; - #$payone_txid = $payone->captureCC_main(\%varenv,$users_sharee,$ctt,$aowner); - #int12=0 should be set after capture success in payment module - if(($users_sharee->{int04} != 1) && ($users_sharee->{txt08} =~ /\w\@\w/)){ $shwo->emailack(\%varenv,$users_sharee->{c_id}); } @@ -647,10 +630,7 @@ sub handler { $shwo->smsack($users_sharee); } close(FILE) if($debug); - }else{ - $dbt->update_one($dbh,$update_adr,"int12=$vde_on_fail");#Vde } - $dbt->update_operatorsloop($varenv{dbname},$users_sharee->{c_id},"update"); print redirect("$varenv{wwwhost}/$varenv{mandant}/Account/$varenv{accounting_3}?$returnwww$session_and"); diff --git a/copri4/main/src/Mod/Payment.pm b/copri4/main/src/Mod/Payment.pm index df99057..5e42f05 100755 --- a/copri4/main/src/Mod/Payment.pm +++ b/copri4/main/src/Mod/Payment.pm @@ -111,7 +111,6 @@ sub book_payment { my $sum_operatorcredit = "null"; my $sumgeb_teil = "null"; my $sumgeb_bank = "null"; - my $sum_prepaid = "null"; $update_ctt->{int04} = $R::int04 if(looks_like_number($R::int04));#set payment-type by "buchen" $update_ctt->{int14} = 2;#set OPOS @@ -141,12 +140,6 @@ sub book_payment { $sumgeb_teil =~ s/,/\./; $update_ctt->{int08} = $sumgeb_teil; } - #maybe, we don't need it - if($R::sum_prepaid){ - $sum_prepaid = $R::sum_prepaid; - $sum_prepaid =~ s/,/\./; - #$update_ctt->{int09} = $sum_prepaid; - } $feedb->{u_rows} = $dbt->update_record($dbh,$update_ctt,$ctt); @@ -193,7 +186,7 @@ sub book_payment { $feedb->{message} = "failure::Fehler, OPOS Automatik konnte nicht ausgeführt werden."; } if($update_ctt->{int04} == 7){ - $update_adr->{int12} = 2;#vde + $update_adr->{int12} = 2;#vde on payment fault $dbt->update_record($dbh,$update_adr,$ctadr); my $dbh_primary = $dbt->dbconnect_extern($dbt->{primary}->{sharee_primary}->{database}->{dbname}); $dbt->update_record($dbh_primary,$update_adr,$ctadr); @@ -526,7 +519,7 @@ sub preauthorizationSEPA_main { #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 + $preauth_amount = $ctt_rec->{int15};#int15 should only used for testing payment-data $reference = $ctt_rec->{reference}; }else{ $preauth_amount = $ctt->{int01}; @@ -665,7 +658,7 @@ sub preauthorizationCC_main { #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 + $preauth_amount = $ctt_rec->{int15};#int15 should only used for testing payment-data $reference = $ctt_rec->{reference}; }else{ $preauth_amount = $ctt->{int01}; @@ -746,8 +739,13 @@ sub captureCC_main { my $sequence = 1; $sequence = $ctt_rec->{sequence} if($ctt_rec->{sequence}); + #for 1€ preauth_amount capture 0€ + if($ctt_rec->{c_id} && $ctt_rec->{c_id} == 1 && $ctt_rec->{reference}){ + $ctt = $ctt_rec; + } + if($ctt->{c_id} && (!$ctt->{int04} || $ctt->{int14} || $ctt_rec->{payone_reset})){ - my $amount = 0;#if payone_reset capture 0 + my $amount = 0;#yes capture 0 will delete preauth amount $amount = $ctt->{int01} * 100 if(looks_like_number($ctt->{int01}) && !$ctt_rec->{payone_reset}); my $preauth_request = { request => 'capture', @@ -823,7 +821,6 @@ sub rpc { $ua->agent("sharee payone POST API"); #payone API URL - my $payoneLive = 1; my $httpReqServer = "https://api.pay1.de/post-gateway/"; my $req = HTTP::Request->new(POST => "$httpReqServer"); @@ -914,9 +911,11 @@ sub rpc { $update_ctt->{txt26} = $ctadr->{ct_name};#Mandat/pseudocp $update_adr->{int12} = 0; $update_adr->{int17} = $useridval if($useridval); + $update_adr->{int18} = $txidval;#set payment_ack }elsif($ctadr->{c_id}){ $update_ctt->{int14} = 1;#OPOS $update_adr->{int12} = $vde_on_fail;#Vde + $update_adr->{int18} = 0;#delete payment_ack } #2022-12-15 save log for any $update_ctt->{txt28} = $now_dt . " $todo\n" . $res->content . "\n" . $update_ctt->{txt28}; @@ -929,7 +928,6 @@ sub rpc { print FILE "payone CAPTURE $now_dt\n $todo: txid=$txidval && ctt.c_id=$ctt->{c_id} && ctadr.c_id=$ctadr->{c_id}\n" if($debug); if($txidval && $ctt->{c_id} && $ctadr->{c_id} && $res->content =~ /settleaccount=/){ - #int01 and state will be set by "buchen" via Prelogic or via payone_cron/Payment payone_capture $update_ctt->{int14} = "null"; $update_adr->{int12} = 0; }else{#because of Prelogic logic set it empty if no capture @@ -944,20 +942,17 @@ sub rpc { 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->{int04});#OPOS - #errormessage=Reference number already exists --> disabled - #errormessage=Amount no longer available --> disabled if($res->content !~ /errorcode=911/){ - - if($payoneLive == 1 && $ctadr->{c_id}){ + if($ctadr->{c_id}){ $update_ctt->{txt28} = $now_dt . " $todo\n" . $res->content . "\nVde.\n" . $update_ctt->{txt28}; $update_adr->{txt28} = $now_dt . " $todo\n" . $res->content . "\nVde.\n" . $update_adr->{txt28}; - #never delete on state=occupied, in this case ist must delete it on available + $update_adr->{int18} = 0;#delete payment_ack if($res->content !~ /errorcode=80/){ - $update_adr->{int12} = $vde_on_fail;#Vde + $update_adr->{int12} = $vde_on_fail;#Vde } } }else{ - if($payoneLive == 1 && $ctt->{c_id}){ + if($ctt->{c_id}){ $update_ctt->{txt28} = $now_dt . " $todo\n" . $res->content . "\n" . $update_ctt->{txt28}; $update_adr->{txt28} = $now_dt . " $todo\n" . $res->content . "\n" . $update_adr->{txt28}; } @@ -977,9 +972,6 @@ sub rpc { if($ctadr->{c_id} > 0){ $dbt->update_record($dbh,$update_adr,$ctadr); print FILE Dumper($update_adr) . "\n" if($debug); - #2023-04-11 set it global by update adr also on primary - #disabled, because isuser_rentable will be only used by operator rental - #2024-01-08 enabled again, also done in APIpayone after payone feedback my $dbh_primary = $dbt->dbconnect_extern($dbt->{primary}->{sharee_primary}->{database}->{dbname}); $dbt->update_record($dbh_primary,$update_adr,$ctadr); } diff --git a/copri4/main/src/Mod/Prelib.pm b/copri4/main/src/Mod/Prelib.pm index 5c89b63..a9f0c3f 100755 --- a/copri4/main/src/Mod/Prelib.pm +++ b/copri4/main/src/Mod/Prelib.pm @@ -77,12 +77,13 @@ sub prepaid_request { $pref_ctt->{c_id} = $ct_id; $ctt_prepaid = $dbt->fetch_record($dbh,$pref_ctt) if($pref_ctt->{c_id}); my $update_adr = { - table => "contentadr", - mtime => "now()", - owner => "$owner", - c_id => "$ctadr->{c_id}", + table => "contentadr", + mtime => "now()", + owner => $owner, + int18 => 3,#pay_ack + ct_name => "Prepaid-$ctt_prepaid->{c_id}", }; - $dbt->update_one($dbh,$update_adr,"ct_name='Prepaid-$ctt_prepaid->{c_id}'"); + $feedb->{u_rows} = $dbt->update_record($dbh,$update_adr,$ctadr); } my $pos_id = 0; diff --git a/copri4/main/src/Mod/Shareework.pm b/copri4/main/src/Mod/Shareework.pm index ece25e8..681b39c 100755 --- a/copri4/main/src/Mod/Shareework.pm +++ b/copri4/main/src/Mod/Shareework.pm @@ -539,15 +539,10 @@ sub save_account(){ $ctadr = $dbt->fetch_record($dbh,$authref); } - #payone only if SEPA Mandat checked - #Testbuchhung mit 1 € preauthorization and 0 € capture - #print FILE "+++ $R::request && $ctadr->{int03} == 1 && $ctadr->{ct_name} eq $ctadr->{c_id} \n" if($debug); - #if($R::request eq "managemandate" && $ctadr->{int03} == 1 && $ctadr->{ct_name} eq $ctadr->{c_id}) - #fraud workaround my $iban = $ctadr->{txt22} || ""; $iban =~ s/\s//g; my $iban_reject = 0; - $iban_reject = 1 if($iban =~ /DE33700202700000091600/i); + $iban_reject = 1 if($iban =~ /DE33700202700000091600/i);#fraud if($R::request eq "managemandate" && $ctadr->{int03} == 1 && !$iban_reject){ my $vde_on_fail = $ctadr->{int12} || 3;#keep last or set 3 @@ -569,43 +564,19 @@ sub save_account(){ }else{ my $payone_mival = $payone->managemandate_main(\%varenv,$ctadr,"",$owner); - if($payone_mival && $payone_mival =~ /\w{2}-\d+/){ - #define fictiv invoice to get 1 € test - my $epoche = time(); - my $ctt = { - c_id => 1, - int01 => 0, - int15 => 1, - txt16 => "", - reference => "$ctadr->{c_id}_$epoche", - payone_reset => '' - }; + if($payone_mival && $payone_mival =~ /\w{2}-\w+/){ - my $payone_txid = ""; - ##preauthorization and/or capture needs to much time, must be done async! - #$payone_txid = $payone->preauthorizationSEPA_main(\%varenv,$ctadr,$ctt,$owner); - #if($payone_txid) - if(1==1){ + #payment_ack + system("$dbt->{copri_conf}->{basedir}/$varenv{syshost}/src/scripts/payment_ack.pl '$varenv{syshost}' 'payment_ackSEPA' '$ctadr->{c_id}' '$owner'"); - $ctt->{txt16} = "$payone_txid"; $vde_on_fail = 0 if($vde_on_fail != 2); $u_rows = $dbt->update_one($dbh,$update_adr,"int12=$vde_on_fail");#Vde - #$payone_txid = $payone->captureSEPA_main(\%varenv,$ctadr,$ctt,$owner); - #int12=0 should be set after capture success in payment module - - }else{ - $u_rows = $dbt->update_one($dbh,$update_adr,"int12=$vde_on_fail");#Vde - } - }else{ - $u_rows = $dbt->update_one($dbh,$update_adr,"int12=$vde_on_fail");#Vde - } + }else{ + $u_rows = $dbt->update_one($dbh,$update_adr,"int12=$vde_on_fail");#Vde + } } } - #prepaid, will be requested in PayoneLink.pm - #elsif($ctadr->{int03} == 3){ - # $feedb = $pl->prepaid_request($dbh,$ctadr,$owner); - #} if($R::txt04 && $R::confirm_txt04 && $R::txt04 ne $R::confirm_txt04){ $ret = "failure::confirm_txt04#top"; diff --git a/copri4/main/src/Tpl/BaseEdit.pm b/copri4/main/src/Tpl/BaseEdit.pm index bee6401..e02547d 100755 --- a/copri4/main/src/Tpl/BaseEdit.pm +++ b/copri4/main/src/Tpl/BaseEdit.pm @@ -524,21 +524,21 @@ EOF print $q->td({-class=>'left_italic_cms'},"$des"),"\n"; print $q->td({-class=>'content1_cms',-nowrap=>"1"},"$gesamt €"); }elsif($key eq "txt24"){ - if($cttpos->{$key} && $users_dms->{int03} > 1){ + if($cttpos->{$key} && $users_dms->{int03} >= 1){ $cttpos->{$key} = $q->unescapeHTML("$cttpos->{$key}"); $cttpos->{$key} = $lb->newline($cttpos->{$key},"",""); print $q->Tr(),"\n"; print $q->td({-class=>'content1_cms',-colspan=>2},"appapi-log
$cttpos->{$key}"),"\n"; } }elsif($key eq "txt25"){ - if($cttpos->{$key} && $users_dms->{int03} > 1){ + if($cttpos->{$key} && $users_dms->{int03} >= 1){ $cttpos->{$key} = $q->unescapeHTML("$cttpos->{$key}"); $cttpos->{$key} = $lb->newline($cttpos->{$key},"",""); print $q->Tr(),"\n"; print $q->td({-class=>'content1_cms',-colspan=>2},"sigapi-log
$cttpos->{$key}"),"\n"; } }elsif($key eq "txt29"){ - if($cttpos->{$key} && $users_dms->{int03} > 1){ + if($cttpos->{$key} && $users_dms->{int03} >= 1){ $cttpos->{$key} = $q->unescapeHTML("$cttpos->{$key}"); $cttpos->{$key} = $lb->newline($cttpos->{$key},"",""); print $q->Tr(),"\n"; diff --git a/copri4/main/src/scripts/Ilockit_cloud.pl b/copri4/main/src/scripts/Ilockit_cloud.pl index 80ff26b..83bf9f1 100755 --- a/copri4/main/src/scripts/Ilockit_cloud.pl +++ b/copri4/main/src/scripts/Ilockit_cloud.pl @@ -412,7 +412,6 @@ sub get_positions { int03 => "$theftmove_count", int07 => "$resp->{speed}", int08 => "$resp->{attributes}->{distance}", - int09 => "$resp->{attributes}->{totalDistance}", int05 => "8",#gps position marker int13 => "$resp->{deviceId}", int10 => "$record_cc->{$id}->{int10}", diff --git a/copri4/main/src/scripts/payment_ack.pl b/copri4/main/src/scripts/payment_ack.pl new file mode 100755 index 0000000..4f554c5 --- /dev/null +++ b/copri4/main/src/scripts/payment_ack.pl @@ -0,0 +1,94 @@ +#!/usr/bin/perl +# +# +# SPDX-License-Identifier: AGPL-3.0-or-later +# Copyright (c) Rainer Gümpelein, TeilRad GmbH +# + +use vars qw($syshost); + +BEGIN { + $syshost = $ARGV[0] || exit 1; +} + +use lib "/var/www/copri-bike/$syshost/src"; +use strict; +use warnings; +use POSIX; +use Scalar::Util qw(looks_like_number); +use Lib::Config; +use Mod::DBtank; +use Mod::Payment; +use Data::Dumper; + +my $cf = new Config; +my %varenv = $cf->envonline(); +my $dbt = new DBtank; +my $pay = new Payment; +my $now_dt = strftime("%Y-%m-%d %H:%M:%S",localtime(time)); + +my $todo = $ARGV[1] || ""; +my $adrc_id = $ARGV[2] || ""; +my $aowner = $ARGV[3] || "196"; + + +open(FILE,">>$varenv{logdir}/payment_ack.log"); +print FILE "\n*** $now_dt todo:$todo|adrc_id:$adrc_id|aowner:$aowner \n"; + +my $dbh = $dbt->dbconnect(); +my $authref = { + table => "contentadr", + fetch => "one", + template_id => "202", + c_id => "$adrc_id", +}; +my $ctadr = { c_id => 0 }; +$ctadr = $dbt->fetch_record($dbh,$authref) if($adrc_id); + + +#preauthorization 1€ and after success async capture 0 for deletion +#define fictiv invoice to get 1 € test +my $epoche = time(); +if($ctadr->{c_id}){ + my $ctt = { + c_id => 1, + int01 => 0,#will delete preauth_amount by capture 0€ + int04 => 0, + int15 => 1,#preauth_amount + txt16 => "", + reference => "$ctadr->{c_id}_$epoche", + payone_reset => '' + }; + + print FILE "fictiv invoice ctt:" . Dumper($ctt) . "\n"; + + my $payone_txid = ""; + if($todo eq "payment_ackCC"){ + $payone_txid = $pay->preauthorizationCC_main(\%varenv,$ctadr,$ctt,$aowner); + print FILE "preauthorizationCC_main txid:$payone_txid\n"; + + $ctt->{txt16} = $payone_txid; + if($ctt->{txt16}){ + sleep 2; + my $payone_txid_captured = $pay->captureCC_main(\%varenv,$ctadr,$ctt,$aowner); + print FILE "captureCC_main returns txid:$payone_txid_captured\n"; + }else{ + print FILE "Failure, No preauthorizationCC_main txid!\n"; + } + }elsif($todo eq "payment_ackSEPA"){ + $payone_txid = $pay->preauthorizationSEPA_main(\%varenv,$ctadr,$ctt,$aowner); + print FILE "preauthorizationSEPA_main txid:$payone_txid\n"; + + $ctt->{txt16} = $payone_txid; + if($ctt->{txt16}){ + sleep 2; + my $payone_txid_captured = $pay->captureSEPA_main(\%varenv,$ctadr,$ctt,$aowner); + print FILE "captureSEPA_main returns txid:$payone_txid_captured\n"; + }else{ + print FILE "Failure, No preauthorizationSEPA_main txid!\n"; + } + } +} + +close(FILE); + diff --git a/copri4/shareeapp-operator/src/Tpl/PayoneCCclient.pm b/copri4/shareeapp-operator/src/Tpl/PayoneCCclient.pm index 44f6344..394d9da 100755 --- a/copri4/shareeapp-operator/src/Tpl/PayoneCCclient.pm +++ b/copri4/shareeapp-operator/src/Tpl/PayoneCCclient.pm @@ -42,12 +42,16 @@ sub tpl(){ $bgcolor1 = $dbt->{website}->{$varenv->{syshost}}->{bgcolor1} if($dbt->{website}->{$varenv->{syshost}}->{bgcolor1}); $bgcolor1 = $dbt->{merchant_ids}->{$varenv->{merchant_id}}->{bgcolor1} if($dbt->{merchant_ids}->{$varenv->{merchant_id}}->{bgcolor1}); + my $red = "#c83434"; print "
\n"; print $q->div({-class=>'content_title3'},"$varenv->{cms}->{'iframe-credit-card-data'}->{txt}"),"\n"; - print $q->div({-class=>'content2'},"$varenv->{cms}->{'iframe-creditcard-data-info'}->{txt}"),"\n"; + if($users_sharee->{int03} == 2 && length($users_sharee->{ct_name}) >= 19 && !$users_sharee->{int18}){ + print $q->div({-class=>'content2',-style=>"color:$red"}, "$varenv->{cms}->{'iframe-payAck-failure'}->{txt}"),"\n"; + } + if($users_sharee->{int03} && $users_sharee->{int03} == 2 && length($users_sharee->{ct_name}) >= 19 && $users_sharee->{txt28} && $users_sharee->{txt28} =~ /pseudocardpan=\d{19}/ && $users_sharee->{txt28} =~ /(\d{4}-\d{2}-\d{2}\s\d{2}:\d{2})/){ my $cc_datetime = $1 || ""; $cc_datetime = $lb->time4de($cc_datetime,"1") if($cc_datetime); diff --git a/copri4/shareeapp-operator/src/Tpl/PayoneSEPA.pm b/copri4/shareeapp-operator/src/Tpl/PayoneSEPA.pm index a215a7c..be232b6 100755 --- a/copri4/shareeapp-operator/src/Tpl/PayoneSEPA.pm +++ b/copri4/shareeapp-operator/src/Tpl/PayoneSEPA.pm @@ -41,6 +41,7 @@ sub tpl(){ my $bgcolor1 = "009899";#sharee $bgcolor1 = $dbt->{website}->{$varenv->{syshost}}->{bgcolor1} if($dbt->{website}->{$varenv->{syshost}}->{bgcolor1}); $bgcolor1 = $dbt->{merchant_ids}->{$varenv->{merchant_id}}->{bgcolor1} if($dbt->{merchant_ids}->{$varenv->{merchant_id}}->{bgcolor1}); + my $red = "#c83434"; my $coo = $q->cookie(-name=>'domcookie') || $R::sessionid; my $ctadr = $users_sharee if(ref($users_sharee) eq "HASH" && $users_sharee->{c_id}); @@ -58,14 +59,16 @@ sub tpl(){ print $q->div({-class=>'content_title3'},"$varenv->{cms}->{'iframe-bank-account'}->{txt}"),"\n"; print $q->div({-class=>'content2'}, "$varenv->{cms}->{'iframe-sepa-mandat-prolog'}->{txt}"),"\n"; - #print $q->div({-class=>'content2'}, "Zur Validierung Ihrer Zahlungsdaten wird eine 1,- € Testbuchung vorgenommen. Wir werden nach erfolgreicher Abbuchung den Betrag als Mietgutschrift in Ihrem Account hinterlegen."),"\n"; + if($ctadr->{int03} == 1 && $ctadr->{ct_name} =~ /^\w{2}-\w+/ && !$ctadr->{int18}){ + print $q->div({-class=>'content2',-style=>"color:$red"}, "$varenv->{cms}->{'iframe-payAck-failure'}->{txt}"),"\n"; + } foreach (@tpl_order){ my ($key,$des,$size) = split /=/,$_; $ctadr->{$key} = $q->unescapeHTML("$ctadr->{$key}"); my $label_des=""; - my $red = "#c83434"; + $red = "#c83434"; my $required="required"; if($key eq "txt22"){ if($R::IBAN){ diff --git a/copri4/shareeapp-operator/src/Tpl/RentalData.pm b/copri4/shareeapp-operator/src/Tpl/RentalData.pm index 44b9830..c92faeb 100755 --- a/copri4/shareeapp-operator/src/Tpl/RentalData.pm +++ b/copri4/shareeapp-operator/src/Tpl/RentalData.pm @@ -101,9 +101,6 @@ sub tpl { my $bonus_ak = "$varenv->{cms}->{'iframe-bonusnumber-accepted'}->{txt}"; $bonus_ak = "$varenv->{cms}->{'iframe-activation-code-info'}->{txt}" if($project eq "Freiburg"); - my $payable_check=0; - $payable_check = $bw->isuser_rentable($ctadr,$varenv); - print "
\n"; #subMenue-------- @@ -167,6 +164,11 @@ sub tpl { }#end confirm code manage else{ + my $payable_check=0; + $payable_check = $bw->isuser_rentable($ctadr,$varenv); + if($payable_check <= 1){ + print $q->div({-class=>'content2',-style=>"color:$red"}, "$varenv->{cms}->{'iframe-payAck-failure'}->{txt}"),"\n"; + } print $q->start_form(-name=>'accountscreen', -action=>"/$varenv->{mandant}/Account/$varenv->{accounting_3}$session"),"\n"; print $q->hidden(-name=>"sessionid",-override=>1,-value=>"$R::sessionid"); diff --git a/copri4/shareeconf/examples/apikeys.cfg b/copri4/shareeconf/examples/apikeys.cfg index df14c50..6dd8ec5 100755 --- a/copri4/shareeconf/examples/apikeys.cfg +++ b/copri4/shareeconf/examples/apikeys.cfg @@ -1,11 +1,18 @@ + + username = "xxxxxxxxxx" + passwd = "xxxxxxxx" + + - gtx_key = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + gtx_key = "xxxxxxxxxxxxxxxxxxxxxxxxx" - pkey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + pkey = "xxxxxxxxxxxxxxxxxxxxxxxx" - - xxxkey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx - + + endpoint = "https://shareedms-operator.example.tld/APIshareeio" + sharee_api_key = "xxxxxxxxxxxxxxxxxxxxxxx" + + diff --git a/copri4/shareeconf/examples/global.cfg b/copri4/shareeconf/examples/global.cfg index 48dec0e..591edfd 100755 --- a/copri4/shareeconf/examples/global.cfg +++ b/copri4/shareeconf/examples/global.cfg @@ -254,6 +254,14 @@ speed = 1 meter = 50 + + 0 = "" + 1 = "Aufwand TeilRad Fibu Gebühr" + 2 = "Payone Gebühr" + 3 = "Zahlungseingang Teilzahlung" + 4 = "Zahlungseingang Prepaid/Vorkasse" + 5 = "Operator Prepaid Abbuchung" + jsscript = "js/mobile_script.js" style_bootstrap_icons = "external/bootstrap-icons-1.10.2/bootstrap-icons.css" diff --git a/copri4/shareeconf/examples/sharee_operator.sql.gz b/copri4/shareeconf/examples/sharee_operator.sql.gz index 248c2d5fae7fc359749c6d1760660bc0dcc2713c..5481a073e53c4c59d448252a16109458ce5d788d 100755 GIT binary patch literal 35925 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
    YRrC&maXUHvIa0EJ!~ooXSj48UhcD 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