VEEBIARENDAJALE

Otsid abi aga ei leidnud? Kirjuta meile ja lisame näiteid juurde.

Pangalingid (HTML ja PHP MySQL-i)


PANGALINGI MOODULIT SAAB ERALDI SISSE OSTA NING TOIMIB JÄRGNEVATES PANKADES...
----------------------------------------------------------
Swedbank | SEB U-Net | LHV Pank | COOP Pank | Luminor Pank | POCOPAY

Teenusena valmistame ja/või paigaldame pangalingid vastavalt tellimusele.


<?php
/* Võtame panga info andmebaasist : Näiteks id=1 on Swedbank */
$result $sqli->query("SELECT * FROM tabelinimi WHERE id=1");
$result_row $result->fetch_array();

/* Alustame pangalingi makset */
$bankFields = Array(
    
"VK_SERVICE"    => "1012",
    
"VK_VERSION"    => "008",
    
"VK_SND_ID"     => $result_row['snd_id'],
    
"VK_STAMP"      => "1234",
    
"VK_AMOUNT"     => "10.00",
    
"VK_CURR"       => "EUR",
    
"VK_REF"        => "12345",
    
"VK_MSG"        => "Pangalingi makse",
    
"VK_RETURN"     => "http://sinuveebiaadress.ee/return",
    
"VK_CANCEL"     => "http://sinuveebiaadress.ee/cancel",
    
"VK_DATETIME"    => date('Y-m-d').'T'.date('H:i:sO'),
);

/* Privaatvõti */
$bankKey openssl_pkey_get_private($result_row['private_key'], $result_row['private_pass']);

/* Allkirjastamine */
if(!openssl_sign(generateMACString($bankFields), $bankSignature$bankKey)) 
{
    
/* Allkirjastamine ebaõnnestus */
    
echo 'VIGA: Allkirjastamine ebaõnnestus!';
}
else
{
    
/* Lisame väljadele juurde VK_MAC allkirja */
    
$bankFields["VK_MAC"] = base64_encode($bankSignature);
    
    
/* Kuvame makse alustamise vormi */
    
echo '<form action="'.$result_row['banklink_url'].'" method="post">';
    foreach (
$bankFields as $k => $v
    {
        echo 
'<input type="hidden" name="'.$k.'" value="'.htmlspecialchars($v).'" />'."\r\n";
    }
    echo 
'<input type="submit" value="Alusta maksmist"/>';
    echo 
'</form>';
}
?>

----------------------------------------------------
    Pangast tagasi suunamine
----------------------------------------------------

<?php
/* Võtame panga info andmebaasist : Näiteks id=1 on Swedbank */
$result $sqli->query("SELECT * FROM tabelinimi WHERE id=1");
$result_row $result->fetch_array();

$bankParams $_REQUEST;
$bankFields = Array();

foreach((array)
$bankParams as $f => $v
{
    if(
substr($f03) == 'VK_'
    {
        
$bankFields[$f] = $v;
    }
}

/* Avalikvõti */
$bankKey openssl_pkey_get_public($result_row['public_key']);

/* Allkirjastamine */
if(!openssl_verify(generateMACString($bankFields), base64_decode($bankFields['VK_MAC']), $bankKey))

    
/* Allkirjastamine ebaõnnestus */
    
echo 'VIGA: Allkirjastamine ebaõnnestus!';
}
else
{
    if(
$bankParams['VK_SERVICE'] == '1111')
    {
        
/* Maksmine õnnestus */
        
Siia lisada kood mis muudab kasutataval platvormil makseinfo teostatuks.
    }
    else if(
$bankParams['VK_SERVICE'] == '1911')
    {
        
/* Maksmine katkestatud */
        
Siia lisada kood mis muudab kasutataval platvormil makseinfo katkestatuks.
    }
    else
    {
        
/* Maksmine tühistatud */
        
Siia lisada kood mis muudab kasutataval platvormil makseinfo tühistatuks.
    }
}
?>

----------------------------------------------------
    VK_MAC Genereerimine VK_VERSION baasil
----------------------------------------------------

<?php
function generateMACString($bankFields
{
    
$VK_order = Array(
        
1012 => Array(
            
'VK_SERVICE','VK_VERSION','VK_SND_ID','VK_STAMP','VK_AMOUNT','VK_CURR',
            
'VK_REF','VK_MSG','VK_RETURN','VK_CANCEL','VK_DATETIME'
        
),
        
1111 => Array(
            
'VK_SERVICE','VK_VERSION','VK_SND_ID','VK_REC_ID','VK_STAMP','VK_T_NO',
            
'VK_AMOUNT','VK_CURR','VK_REC_ACC','VK_REC_NAME','VK_SND_ACC','VK_SND_NAME',
            
'VK_REF','VK_MSG','VK_T_DATETIME'
        
),
        
1911 => Array(
            
'VK_SERVICE','VK_VERSION','VK_SND_ID','VK_REC_ID','VK_STAMP','VK_REF','VK_MSG'
        
),
    );

    
$VK_num $bankFields['VK_SERVICE'];
    
$VK_data '';

    foreach((array)
$VK_order[$VK_num] as $VK_key
    {
        
$VK_var $macFields[$VK_key];
        
$VK_data .= str_pad (mb_strlen ($VK_var), 3'0'STR_PAD_LEFT) . $VK_var;
    }

    return 
$VK_data;
}
?>