mirror of
https://gitlab.com/t6353/sharee.bike.git
synced 2025-02-22 19:56:29 +01:00
checking payment data after changing the payment typ
This commit is contained in:
parent
5044e9bfe8
commit
b2dce25de8
18 changed files with 209 additions and 123 deletions
|
@ -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",
|
||||
|
|
|
@ -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 = {
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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} = "";
|
||||
|
@ -616,30 +615,14 @@ sub handler {
|
|||
$dbt->update_record($dbh,$update_adr,$users_sharee) if($users_sharee->{c_id} > 0);
|
||||
($api_return,$users_sharee) = $apif->auth_verify($q,$coo,"");
|
||||
|
||||
#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 => ''
|
||||
};
|
||||
#payment_ack
|
||||
system("$dbt->{copri_conf}->{basedir}/$varenv{syshost}/src/scripts/payment_ack.pl '$varenv{syshost}' 'payment_ackCC' '$users_sharee->{c_id}' '$aowner'");
|
||||
|
||||
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");
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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}",
|
||||
|
|
94
copri4/main/src/scripts/payment_ack.pl
Executable file
94
copri4/main/src/scripts/payment_ack.pl
Executable 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);
|
||||
|
|
@ -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);
|
||||
|
|
|
@ -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){
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
|
Binary file not shown.
Loading…
Add table
Reference in a new issue