Subversion-Projekte lars-tiefland.php_share

Revision

Blame | Letzte Änderung | Log anzeigen | RSS feed

<?php

    /**
     * @package   php_share
     * @author    Lars Tiefland <tiefland@weban.de>
     * @copyright 2010 Webagentur Niewerth
     * @license   propietary http://www.weban.de
     * @version   $Rev: 643 $
     * @filesource
     * 
     */

    /**
     * 
     * @package   php_share
     * @author    Lars Tiefland <tiefland@weban.de>
     * @copyright 2010 Webagentur Niewerth
     */

    // SVN: $Id: ideal.php 643 2011-08-29 08:27:14Z tiefland $

    require_once "creditcard.interface.php";

    class ideal implements creditcard
    {
        protected $ini;

        function __construct()
        {
            if ( !is_array( $_SESSION["INI"] ) )
            {
                $this->ini = $GLOBALS["INI"];
            }
            else
            {
                $this->ini = $_SESSION["INI"];
            }
        }
        function getCreditcardStatus( $bestellId )
        {
            $sha_arr = array();
            $sha = "";
            define( "ZUGANG", $this->ini["ideal"]["zugang"] );
            define( "SECRET", $this->ini["ideal"]["secret"] );
            $srv = "ideal";
            if ( $this->ini["ideal"]["test"] == 1 )
            {
                $srv = "idealtest";
            }
            $srv .= '.rabobank.nl';
            $url = 'https://' . $srv . '/ideal/mpiPayInitRabo.do';
            $title = "Bestelling : " . $bestellId;
            $title = htmlentities( $title );
            $name = $_SESSION["SHOP"]["buy"]["Persdata"]["Vorname"] . " " .
                $_SESSION["SHOP"]["buy"]["Persdata"]["Nachname"];
            $b_url = $this->ini["absoluteURL"];
            $b_url_s = ( $this->ini["ssl_buy"] ) ? str_replace( "http://",
                "https://", $b_url ) : $b_url;
            $cancelurl = $b_url_s . "/cancel_" . $bestellId . "_ideal.html";
            $accepturl = $b_url_s . "/accept_" . $bestellId . "_ideal.html";
            $exceptionurl = $b_url_s . "/except_" . $bestellId .
                "_ideal.html";
            $email = $_SESSION["SHOP"]["buy"]["Persdata"]["email"];
            $summe = round( getBasketSumme(), 2 ) * 100;
            if ( $_SESSION["brutto"] == true && $this->ini["netto_preise"] ==
                1 )
            {
                $summe = round( getBasketSummeBrutto(), 2 ) * 100;
            }
            $until = date( "Y-m-d\TH:i:s\Z", strtotime( "+10 minutes" ) );
            $sha_arr[] = SECRET;
            $sha_arr[] = ZUGANG;
            $sha_arr[] = 0;
            $sha_arr[] = $summe;
            $sha_arr[] = $bestellId;
            $sha_arr[] = "ideal";
            $sha_arr[] = $until;
            $sha_arr[] = 1;
            $sha_arr[] = $title;
            $sha_arr[] = 1;
            $sha_arr[] = $summe;
            //SHA-String bauen
            $sha = implode( "", $sha_arr );
            $clean_shaString = HTML_entity_decode( $sha );
            $not_allowed = array( "\t", "\n", "\r", " " );
            $clean_shaString = str_replace( $not_allowed, "", $clean_shaString );
            $shaSign = $this->genCheckSum( $clean_shaString );
            $erg = '
                <form method="post" action="' . $url .
                '" id="zahlung" name="ideal">
                    <input type="hidden" name="merchantID" value="' . ZUGANG .
                '"> 
                    <input type="hidden" name="subID" value="0"> 
                    <input type="hidden" name="amount" value="' . $summe .
                '" > 
                    <input type="hidden" name="purchaseID" value="' . $bestellId .
                '"> 
                    <input type="hidden" name="language" value="nl"> 
                    <input type="hidden" name="currency" value="EUR"> 
                    <input type="hidden" name="description" value="' . $title .
                '"> 
                    <input type="hidden" name="hash" value="' . $shaSign .
                '">  
                    <input type="hidden" name="paymentType" value="ideal"> 
                    <input type="hidden" name="validUntil" value="' . $until .
                '">
                    <input type="hidden" name="itemNumber1" value="1"> 
                    <input type="hidden" name="itemDescription1" value="' .
                $title . '"> 
                    <input type="hidden" name="itemQuantity1" value="1"> 
                    <input type="hidden" name="itemPrice1" value="' . $summe .
                '"> 
                    <input type="hidden" name="urlCancel" value="' . $cancelurl .
                '"> 
                    <input type="hidden" name="urlSuccess" value="' . $accepturl .
                '"> 
                    <input type="hidden" name="urlError" value="' . $exceptionurl .
                '"> 
                    <input type="submit" value="Bevestig bestelling" id=submit2 name=submit2>
                 </form>
            ';
            return $erg;
        }

        function getCreditcardReturnStatus( $bestellId )
        {
            $table = ( $this->ini["dbConnect"]["order_db"] ) ? $this->ini["dbConnect"]["order_db"] .
                "." : "";
            $table .= "Bestellung";
            if ( $_GET["action"] )
            {
                $query = "SELECT Bemerkung FROM $table WHERE id=$bestellId";
                $res = mysql_query( $query );
                $row = mysql_fetch_assoc( $res );
                $bemerkung = $row["Bemerkung"];
            }
            switch ( $_GET["action"] )
            {
                case "cancel":
                    // Kreditkartenzahlung
                    $bemerkung .= "Die Zahlung wurde vom Kunden am " . date( "d.m.Y" ) .
                        " um " . date( "H:i" ) . " Uhr abgebrochen!\n";
                    $query = "UPDATE $table SET Bemerkung='$bemerkung' WHERE id=$bestellId";
                    $res = mysql_query( $query );

                    if ( $_SESSION["languageException"] )
                    {
                        $msg =
                            "You have canceled the payment. Therefore we will now cancel your order.";
                    }
                    else
                    {
                        $msg =
                            "Leider haben Sie die Zahlung abgebrochen. Daher werden wir Ihre Bestellung nun stornieren.";
                    }
                    break;
                case "accept":
                    // Kreditkartenzahlung
                    $bemerkung .=
                        "Die Zahlung wurde von der Kreditkartenorganisation am " .
                        date( "d.m.Y" ) . " um " . date( "H:i" ) .
                        " Uhr genehmigt!\n";
                    $kk_info["code"] = "";
                    $kk_info["status"] = "offen";
                    $kk_info = serialize( $kk_info );
                    $query = "UPDATE $table SET Bemerkung='$bemerkung', kk_info='$kk_info' WHERE id=$bestellId";
                    $res = mysql_query( $query );
                    if ( $_SESSION["languageException"] )
                    {
                        $msg =
                            "Your credit card organization confirmed the successful payment";
                    }
                    else
                    {
                        $msg =
                            "Ihre Kreditkartenorganisation hat die erfolgreiche Bezahlung bestätigt!";
                    }
                    break;
                case "decline":
                    $bemerkung .=
                        "Die Zahlung wurde von der Kreditkartenorganisation am " .
                        date( "d.m.Y" ) . " um " . date( "H:i" ) .
                        " Uhr abgelehnt!\n";
                    $query = "UPDATE $table SET Bemerkung='$bemerkung' WHERE id=$bestellId";
                    $res = mysql_query( $query );
                    if ( $_SESSION["languageException"] )
                    {
                        $msg =
                            "Unfortunately your credit card organization refused the payment. Therefore we will now cancel your order.";
                    }
                    else
                    {
                        $msg =
                            "Leider hat Ihre Kreditkartenorganisation die Bezahlung verweigert. Daher werden wir Ihre Bestellung nun stornieren.";
                    }
                    break;
                case "except":
                    $bemerkung .=
                        "Der Status der Zahlung wurde von der Kreditkartenorganisation am " .
                        date( "d.m.Y" ) . " um " . date( "H:i" ) .
                        " Uhr als unklar definiert!\n";
                    $query = "UPDATE $table SET Bemerkung='$bemerkung' WHERE id=$bestellId";
                    $res = mysql_query( $query );
                    if ( $_SESSION["languageException"] )
                    {
                        $msg =
                            "The status of the payment was defined as unclear by your credit card organization. Therefore we will cancel your order in 7 days.";
                    }
                    else
                    {
                        $msg =
                            "Der Status der zahlung wurde von der Kreditkartenorganisation als unklar definiert. Daher werden wir Ihre Bestellung in 7 Tagen stornieren.";
                    }
                    break;
            }
            return array( "error" => !$res, "meld" => $msg );
        }
        function genCheckSum( $src )
        {
            switch ( $this->ini["ideal"]["sha_algo"] )
            {
                case "sha512":
                    $data = hash( "sha512", $src );
                    break;
                case "sha256":
                    $data = hash( "sha256", $src );
                    break;
                case "sha1":
                default:
                    $data = sha1( $src );
                    break;
            }
            return $data;
        }
    }
?>