Subversion-Projekte lars-tiefland.php_share

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
3 lars 1
<?php
2
 
3
    /**
4
     * @package   php_share
5
     * @author    Lars Tiefland <tiefland@weban.de>
6
     * @copyright 2010 Webagentur Niewerth
7
     * @license   propietary http://www.weban.de
8
     * @version   $Rev: 760 $
9
     * @filesource
10
     *
11
     */
12
 
13
    /**
14
     *
15
     * @package   php_share
16
     * @author    Lars Tiefland <tiefland@weban.de>
17
     * @copyright 2010 Webagentur Niewerth
18
     */
19
 
20
    // SVN: $Id: saferpay.php 760 2011-10-12 14:04:01Z tiefland $
21
 
22
    require_once "creditcard.interface.php";
23
 
24
    class saferpay implements creditcard
25
    {
26
        protected $ini;
27
 
28
        function __construct()
29
        {
30
            if ( !is_array( $_SESSION["INI"] ) )
31
            {
32
                $this->ini = $GLOBALS["INI"];
33
            }
34
            else
35
            {
36
                $this->ini = $_SESSION["INI"];
37
            }
38
        }
39
        function getCreditcardStatus( $bestellId )
40
        {
41
            $summe = getBasketSumme() * 100;
42
            if ( $_SESSION["brutto"] == true && $this->ini["netto_preise"] ==
43
                1 )
44
            {
45
                $summe = round( getBasketSummeBrutto(), 2 ) * 100;
46
            }
47
            $b_url = $this->ini["absoluteURL"];
48
            $b_url_s = ( $this->ini["ssl_buy"] ) ? str_replace( "http://",
49
                "https://", $b_url ) : $b_url;
50
            $links = "SUCCESSLINK=" . $b_url_s . "/accept_$bestellId.html";
51
            $links .= "&BACKLINK=" . $b_url_s . "/cancel_$bestellId.html";
52
            $links .= "&FAILLINK=" . $b_url_s . "/decline_$bestellId.html";
53
            $orderid = "Bestellung: " . $bestellId; // The length is limited to 12 characters.
54
            $btext = urlencode( htmlentities( "SaferPay Einkauf von " . $_SESSION['Persdata']['Vorname'] .
55
                " " . $_SESSION['Persdata']['Nachname'] ) );
56
            $url =
57
                "https://www.saferpay.com/hosting/CreatePayInit.asp?AMOUNT=" .
58
                $summe . "&ORDERID=$bestellId&CURRENCY=EUR&DESCRIPTION=$btext&ACCOUNTID=" .
59
                $this->ini["kreditkarte"]["zugang"] . "&" . $links;
60
            $c = file_get_contents( $url );
61
            if ( strpos( $c, "DATA" ) !== false )
62
            {
63
                $erg = '
64
                    <form action="' . $c .
65
                    '" method="post" id="zahlung" name="creditcard">
66
                        <input type="submit" value="per Kreditkarte bezahlen" style="cursor:pointer;" />
67
                    </form>
68
                ';
69
            }
70
            else
71
            {
72
                $_SESSION["zahlarten"]["kreditkarte"] = false;
73
                $ret["error"] = true;
74
                $erg = $this->_getMsg( $ret, "init_fehler", $bestellId );
75
            }
76
            return $erg;
77
        }
78
 
79
        function getCreditCardReturnStatus( $bestellId )
80
        {
81
            $table = ( $this->ini["dbConnect"]["order_db"] ) ? $this->ini["dbConnect"]["order_db"] .
82
                "." : "";
83
            $table .= "Bestellung";
84
            $query = "SELECT Bemerkung FROM $table WHERE id=$bestellId";
85
            $res = mysql_query( $query, $GLOBALS["order_dbh"] );
86
            $row = mysql_fetch_assoc( $res );
87
            $bemerkung = $row["Bemerkung"];
88
 
89
            switch ( $_GET["action"] )
90
            {
91
                case "cancel":
92
                    $res = false;
93
                    $bemerkung .=
94
                        "Die Zahlung über saferpay wurde vom Kunden am " .
95
                        date( "d.m.Y" ) . " um " . date( "H:i" ) .
96
                        " Uhr abgebrochen!\n";
97
                    $kk_info["code"] = "";
98
                    $kk_info["status"] = "abgebrochen";
99
                    break;
100
                case "accept":
101
                    $len = strpos( $_SERVER['QUERY_STRING'], "&DATA=" ) + 1;
102
                    $query = substr( $_SERVER['QUERY_STRING'], $len );
103
                    $url =
104
                        "https://www.saferpay.com/hosting/VerifyPayConfirm.asp?$query";
105
                    $c = file_get_contents( $url );
106
                    if ( strpos( $c, "ID" ) !== false )
107
                    {
108
                        $start = strpos( $c, "ID=" );
109
                        $len = strpos( $c, "&TOKEN=" );
110
                        $bemerkung = $row["Bemerkung"];
111
                        $bemerkung .=
112
                            "Die Zahlung wurde von der Kreditkartenorganisation am " .
113
                            date( "d.m.Y" ) . " um " . date( "H:i" ) .
114
                            " Uhr genehmigt!\n";
115
                        $kk_info["code"] = substr( $c, $start, $len - $start );
116
                        $kk_info["status"] = "offen";
117
                        if ( USE_TRANSLATION2 === true )
118
                        {
119
                            $msg = $GLOBALS["langstrings"]["buy"]["cc_accepted"];
120
                        } elseif ( $_SESSION["languageException"] )
121
                        {
122
 
123
                        }
124
                        else
125
                        {
126
                            $msg =
127
                                "Ihre Kreditkartenorganisation hat die erfolgreiche Bezahlung bestätigt!";
128
                        }
129
                    }
130
                    break;
131
                case "decline":
132
                    $res = false;
133
                    $kk_info["code"] = "";
134
                    $kk_info["status"] = "abgelehnt";
135
                    $bemerkung .=
136
                        "Die Zahlung wurde von der Kreditkartenorganisation am " .
137
                        date( "d.m.Y" ) . " um " . date( "H:i" ) .
138
                        " Uhr abgelehnt!\n";
139
                    break;
140
            }
141
            $kk_info_str = serialize( $kk_info );
142
            $query = "
143
                UPDATE
144
                    $table
145
                SET
146
                    Bemerkung='$bemerkung',
147
                    kk_info='$kk_info_str'
148
                WHERE
149
                    id=$bestellId
150
            ";
151
            mysql_query( $query, $GLOBALS["order_dbh"] );
152
            $ret = array( "error" => !$res );
153
            if ( $ret["error"] )
154
            {
155
                $msg = $this->_getMsg( $ret, $kk_info["status"], $bestellId );
156
            }
157
            $ret["meld"] = $msg;
158
            return $ret;
159
        }
160
        function genCheckSum( $src )
161
        {
162
            switch ( $this->ini["kreditkarte"]["sha_algo"] )
163
            {
164
                case "sha512":
165
                    $data = hash( "sha512", $src );
166
                    break;
167
                case "sha256":
168
                    $data = hash( "sha256", $src );
169
                    break;
170
                case "sha1":
171
                default:
172
                    $data = sha1( $src );
173
                    break;
174
            }
175
            return $data;
176
        }
177
        private function _getMsg( $ret, $status, $bestellId )
178
        {
179
            if ( USE_TRANSLATION2 === true )
180
            {
181
                if ( $this->ini["change_order"] )
182
                {
183
                    $abschluss = $GLOBALS["langstrings"]["buy"]["click_button"];
184
                }
185
                else
186
                {
187
                    $abschluss = $GLOBALS["langstrings"]["buy"]["cancel_order"];
188
                }
189
            } elseif ( $_SESSION["languageException"] )
190
            {
191
                if ( $this->ini["change_order"] )
192
                {
193
                    $abschluss =
194
                        "Click on the button to choose an other payment method.";
195
                }
196
                else
197
                {
198
                    $abschluss = "Therefore we will now cancel your order.";
199
                }
200
            }
201
            else
202
            {
203
                if ( $this->ini["change_order"] )
204
                {
205
                    $abschluss =
206
                        "Klicken Sie auf den Button, um eine andere Zahlweise auszuwählen.";
207
                }
208
                else
209
                {
210
                    $abschluss =
211
                        "Deshalb werden wir nun Ihre Bestellung nun stornieren.";
212
                }
213
            }
214
            switch ( $status )
215
            {
216
                case "init_fehler";
217
                    if ( USE_TRANSLATION2 === true )
218
                    {
219
                        $msg = $GLOBALS["langstrings"]["buy"]["saferpay_not_avail"];
220
                    } elseif ( $_SESSION["languageException"] )
221
                    {
222
                        $msg =
223
                            "Unfourtunately the payment via Saferpay is not available at the moment. ";
224
                    }
225
                    else
226
                    {
227
                        $msg =
228
                            "Leider steht die Zahlung über Saferpay zur Zeit nicht zur Verfügung. ";
229
                    }
230
                    break;
231
                case "abgebrochen":
232
                    if ( USE_TRANSLATION2 === true )
233
                    {
234
                        $msg = $GLOBALS["langstrings"]["buy"]["order_canceled"];
235
                    } elseif ( $_SESSION["languageException"] )
236
                    {
237
                        $msg = "You have canceled the payment. ";
238
                    }
239
                    else
240
                    {
241
                        $msg = "Sie haben die Zahlung abgebrochen. ";
242
                    }
243
                    break;
244
                case "abgelehnt":
245
                    if ( USE_TRANSLATION2 === true )
246
                    {
247
                        $msg = $GLOBALS["langstrings"]["buy"]["cc_declined"];
248
                    } elseif ( $_SESSION["languageException"] )
249
                    {
250
                        $msg =
251
                            "Unfortunately your creditcard organization refused the payment. ";
252
                    }
253
                    else
254
                    {
255
                        $msg =
256
                            "Leider hat Ihre Kreditkartenorganisation die Bezahlung verweigert. ";
257
                    }
258
                    break;
259
                case "unklar":
260
                    if ( USE_TRANSLATION2 === true )
261
                    {
262
                        $msg = $GLOBALS["langstrings"]["buy"]["cc_excepted"];
263
                    } elseif ( $_SESSION["languageException"] )
264
                    {
265
                        $msg =
266
                            "The status of the payment was defined as unclear by your credit card organization. ";
267
                    }
268
                    else
269
                    {
270
                        $msg =
271
                            "Der Status der zahlung wurde von der Kreditkartenorganisation als unklar definiert. ";
272
                    }
273
                    break;
274
            }
275
            $msg .= $abschluss;
276
            if ( $ret["error"] && $this->ini["change_order"] )
277
            {
278
                $msg .= '
279
                    <form method="post" action="/">
280
                        <input type="hidden" name="best_id" value="' . $bestellId .
281
                    '">
282
                        <input type="hidden" name="email" value="' . $_SESSION["SHOP"]["buy"]["Persdata"]["email"] .
283
                    '">
284
                        <input type="hidden" name="mode" value="change_order">
285
                        <input type="submit" value="Zahlart / Bestellung &auml;ndern">
286
                    </form>
287
                ';
288
            }
289
            return $msg;
290
        }
291
    }
292
?>