checking payment data after changing the payment typ

This commit is contained in:
ragu 2024-01-30 07:06:09 +01:00
parent 5044e9bfe8
commit b2dce25de8
18 changed files with 209 additions and 123 deletions

View file

@ -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",

View file

@ -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 = {

View file

@ -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;

View file

@ -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 <input type='radio' name='$key' value='0' $a_checked>" if($a_name);

View file

@ -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();

View file

@ -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");

View file

@ -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);
}

View file

@ -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;

View file

@ -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";

View file

@ -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<br />$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<br />$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";

View file

@ -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}",

View file

@ -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);

View file

@ -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 "<div class='form-group' style='clear:both;'>\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);

View file

@ -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){

View file

@ -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 "<div id='Contentapp'>\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");

View file

@ -1,11 +1,18 @@
<Ilockitcloud>
username = "xxxxxxxxxx"
passwd = "xxxxxxxx"
</Ilockitcloud>
<smsgtx>
gtx_key = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
gtx_key = "xxxxxxxxxxxxxxxxxxxxxxxxx"
</smsgtx>
<pdfprinter>
pkey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
pkey = "xxxxxxxxxxxxxxxxxxxxxxxx"
</pdfprinter>
<furtherkeys>
xxxkey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
</furtherkeys>
<shareeio>
endpoint = "https://shareedms-operator.example.tld/APIshareeio"
sharee_api_key = "xxxxxxxxxxxxxxxxxxxxxxx"
</shareeio>

View file

@ -254,6 +254,14 @@
speed = 1
meter = 50
</theftalarm>
<fee_type>
0 = ""
1 = "Aufwand TeilRad Fibu Gebühr"
2 = "Payone Gebühr"
3 = "Zahlungseingang Teilzahlung"
4 = "Zahlungseingang Prepaid/Vorkasse"
5 = "Operator Prepaid Abbuchung"
</fee_type>
jsscript = "js/mobile_script.js"
style_bootstrap_icons = "external/bootstrap-icons-1.10.2/bootstrap-icons.css"
</copri_conf>