Ik heb dit stukje code:
Codeblok (1024b.php):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
include(../config.php);
// STEP 1: read POST data
// Reading POSTed data directly from $_POST causes serialization issues with array data in the POST.
// Instead, read raw POST data from the input stream.
$raw_post_data = file_get_contents(php://input);
$raw_post_array = explode(&, $raw_post_data);
$myPost = array();
foreach ($raw_post_array as $keyval) {
$keyval = explode (=, $keyval);
if (count($keyval) == 2)
$myPost[$keyval[0]] = urldecode($keyval[1]);
}
// read the IPN message sent from PayPal and prepend cmd=_notify-validate
$req = cmd=_notify-validate;
if(function_exists(get_magic_quotes_gpc)) {
$get_magic_quotes_exists = true;
}
foreach ($myPost as $key => $value) {
if($get_magic_quotes_exists == true && get_magic_quotes_gpc() == 1) {
$value = urlencode(stripslashes($value));
} else {
$value = urlencode($value);
}
$req .= "&$key=$value";
}
// STEP 2: POST IPN data back to PayPal to validate
$ch = curl_init(https://www.paypal.com/cgi-bin/webscr);
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $req);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_FORBID_REUSE, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(Connection: Close));
// In wamp-like environments that do not come bundled with root authority certificates,
// please download cacert.pem from "http://curl.haxx.se/docs/caextract.html" and set
// the directory path of the certificate as shown below:
// curl_setopt($ch, CURLOPT_CAINFO, dirname(__FILE__) . /cacert.pem);
if( !($res = curl_exec($ch)) ) {
// error_log("Got " . curl_error($ch) . " when processing IPN data");
curl_close($ch);
exit;
}
curl_close($ch);
// STEP 3: Inspect IPN validation result and act accordingly
if (strcmp ($res, "VERIFIED") == 0) {
// The IPN is verified, process it:
// check whether the payment_status is Completed
// check that txn_id has not been previously processed
// check that receiver_email is your Primary PayPal email
// check that payment_amount/payment_currency are correct
// process the notification
// assign posted variables to local variables
$item_name = $_POST[item_name];
$item_number = $_POST[item_number];
$payment_status = $_POST[payment_status];
$payment_amount = $_POST[mc_gross];
$payment_currency = $_POST[mc_currency];
$txn_id = $_POST[txn_id];
$receiver_email = $_POST[receiver_email];
$payer_email = $_POST[payer_email];
// IPN message values depend upon the type of notification sent.
// To loop through the &_POST array and print the NV pairs to the screen:
$username = jespar;
$apicode = xT;
$testmode = true;
$admin_mail = jesper0100@live.nl;
$jouw_domein = ;
$return = file_get_contents(http://www.one2xs.com/api/bestel/handle?user=.$username.&key=.sha1($apicode).&product=mc&type=1024&whitelabel=2&testmode=.($testmode == true ? 1 : 0).&whitelabel_server=.$jouw_domein);
$return = new SimpleXMLElement($return);
if(isset($return->error))
{
$mysql->query("INSERT INTO paylog(ip, pakket, datum, status) VALUES(".$_SERVER[REMOTE_ADDR].", 1024, ".date("Y-m-d H:i:s").", niet gelukt)");
mail($admin_mail, Fout in de API, Een bezoeker met IP .$_SERVER[REMOTE_ADDR]. probeerde op .date(d-m-Y H:i:s). een server te bestellen, maar de API gaf dit terug: .$return->error);
}
else
{
$mysql->query("INSERT INTO paylog(ip, pakket, datum, status) VALUES(".$_SERVER[REMOTE_ADDR].", 1024, ".date("Y-m-d H:i:s").", gelukt)");
$mysql->query("INSERT INTO buys(locatie, user, pass, email) VALUES(".$return->channel->panel_location.", ".$return->channel->panel_user.", ".$return->channel->panel_pass.", ".$mysql->real_escape_string($_POST[os0]).")");
}
} else if (strcmp ($res, "INVALID") == 0) {
// IPN invalid, log for manual investigation
echo "The response from IPN was: " .$res ."";
} else {
echo Onbekende error;
}
?>
Wanneer de betaling gelukt is word er een server aangemaakt, maar na een aantal seconden gebeurt dit weer en nog een keer. Ik weet niet waar het aanligt misschien dat paypal vaker VERIFIED terug stuurt?
Codeblok (1024b.php):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
include(../config.php);
// STEP 1: read POST data
// Reading POSTed data directly from $_POST causes serialization issues with array data in the POST.
// Instead, read raw POST data from the input stream.
$raw_post_data = file_get_contents(php://input);
$raw_post_array = explode(&, $raw_post_data);
$myPost = array();
foreach ($raw_post_array as $keyval) {
$keyval = explode (=, $keyval);
if (count($keyval) == 2)
$myPost[$keyval[0]] = urldecode($keyval[1]);
}
// read the IPN message sent from PayPal and prepend cmd=_notify-validate
$req = cmd=_notify-validate;
if(function_exists(get_magic_quotes_gpc)) {
$get_magic_quotes_exists = true;
}
foreach ($myPost as $key => $value) {
if($get_magic_quotes_exists == true && get_magic_quotes_gpc() == 1) {
$value = urlencode(stripslashes($value));
} else {
$value = urlencode($value);
}
$req .= "&$key=$value";
}
// STEP 2: POST IPN data back to PayPal to validate
$ch = curl_init(https://www.paypal.com/cgi-bin/webscr);
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $req);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_FORBID_REUSE, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(Connection: Close));
// In wamp-like environments that do not come bundled with root authority certificates,
// please download cacert.pem from "http://curl.haxx.se/docs/caextract.html" and set
// the directory path of the certificate as shown below:
// curl_setopt($ch, CURLOPT_CAINFO, dirname(__FILE__) . /cacert.pem);
if( !($res = curl_exec($ch)) ) {
// error_log("Got " . curl_error($ch) . " when processing IPN data");
curl_close($ch);
exit;
}
curl_close($ch);
// STEP 3: Inspect IPN validation result and act accordingly
if (strcmp ($res, "VERIFIED") == 0) {
// The IPN is verified, process it:
// check whether the payment_status is Completed
// check that txn_id has not been previously processed
// check that receiver_email is your Primary PayPal email
// check that payment_amount/payment_currency are correct
// process the notification
// assign posted variables to local variables
$item_name = $_POST[item_name];
$item_number = $_POST[item_number];
$payment_status = $_POST[payment_status];
$payment_amount = $_POST[mc_gross];
$payment_currency = $_POST[mc_currency];
$txn_id = $_POST[txn_id];
$receiver_email = $_POST[receiver_email];
$payer_email = $_POST[payer_email];
// IPN message values depend upon the type of notification sent.
// To loop through the &_POST array and print the NV pairs to the screen:
$username = jespar;
$apicode = xT;
$testmode = true;
$admin_mail = jesper0100@live.nl;
$jouw_domein = ;
$return = file_get_contents(http://www.one2xs.com/api/bestel/handle?user=.$username.&key=.sha1($apicode).&product=mc&type=1024&whitelabel=2&testmode=.($testmode == true ? 1 : 0).&whitelabel_server=.$jouw_domein);
$return = new SimpleXMLElement($return);
if(isset($return->error))
{
$mysql->query("INSERT INTO paylog(ip, pakket, datum, status) VALUES(".$_SERVER[REMOTE_ADDR].", 1024, ".date("Y-m-d H:i:s").", niet gelukt)");
mail($admin_mail, Fout in de API, Een bezoeker met IP .$_SERVER[REMOTE_ADDR]. probeerde op .date(d-m-Y H:i:s). een server te bestellen, maar de API gaf dit terug: .$return->error);
}
else
{
$mysql->query("INSERT INTO paylog(ip, pakket, datum, status) VALUES(".$_SERVER[REMOTE_ADDR].", 1024, ".date("Y-m-d H:i:s").", gelukt)");
$mysql->query("INSERT INTO buys(locatie, user, pass, email) VALUES(".$return->channel->panel_location.", ".$return->channel->panel_user.", ".$return->channel->panel_pass.", ".$mysql->real_escape_string($_POST[os0]).")");
}
} else if (strcmp ($res, "INVALID") == 0) {
// IPN invalid, log for manual investigation
echo "The response from IPN was: " .$res ."";
} else {
echo Onbekende error;
}
?>
Wanneer de betaling gelukt is word er een server aangemaakt, maar na een aantal seconden gebeurt dit weer en nog een keer. Ik weet niet waar het aanligt misschien dat paypal vaker VERIFIED terug stuurt?
