MySQL database and pingback problems

Hello
I’m trying to set up a pingback service for an online virtual currency (via paymentwall). I’ve attached the example code given by paymentwall with my codes in there to update the users credit balance. I am however having a few problems:

  1. whenever i run the code it always adds the new currency to ‘2’ (not the existing balance). I have absolutely no idea where 2 comes from!!! its supposed to add cumulatively so will retrieve all past credits earned when it gets the existing balance.
  2. the code is supposed to return a signature but I have absolutely no idea what to do (I think its in the last bit of the code?). I have uploaded the default help guide to help with this: http://m.gam3s.co.uk/wp-content/uploads/2012/07/paymentwall-api.pdf
    If anyone has the time to mess around with this it would be greatly appreciated!
    Matt

[CODE]

<?php define('SECRET', 'APPLICATION_KEY'); define('CHARGEBACK', 2); $ipsWhitelist = array( '174.36.92.186', '174.36.96.66', '174.36.92.187', '174.36.92.192', '174.37.14.28' ); $userId = isset($_GET['uid']) ? $_GET['uid'] : null; $credits = isset($_GET['currency']) ? $_GET['currency'] : null; $type = isset($_GET['type']) ? $_GET['type'] : null; $signature = isset($_GET['sig']) ? $_GET['sig'] : null; $refId = isset($_GET['ref']) ? $_GET['ref'] : null; $result = false; if (!empty($userId) && !empty($credits) && isset($type) && !empty($refId) && !empty($signature)) { $signatureParams = array( 'uid' => $userId, 'currency' => $credits, 'type' => $type, 'ref' => $refId ); $signatureCalculated = generateSignature($signatureParams, SECRET); // check if IP is in whitelist and if signature matches if (in_array($_SERVER['REMOTE_ADDR'], $ipsWhitelist) && ($signature == $signatureCalculated)) { $result = true; if ($type == 'CHARGEBACK') { // Deduct credits from user, NOTE: $credits will be (-x) $con = mysql_connect("localhost","USER","PASSWORD"); mysql_select_db("DATABASE", $con); $sql2 = "SELECT `Credits` FROM `wp_users` WHERE `ID`=$userId"; $existing2= mysql_query($sql2,$con); $newbalance2= $existing2 + $credits; $sql3 = "UPDATE `wp_users` SET `Credits`=$newbalance2 WHERE `ID`=$userId"; mysql_query($sql3,$con); mysql_close($con); } else { // Give credits to user $con = mysql_connect("localhost","USER","PASSWORD"); mysql_select_db("DATABASE", $con); $sql = "SELECT `Credits` FROM `wp_users` WHERE `ID`=$userId"; $existing= mysql_query($sql,$con); $newbalance= $existing + $credits; $sql1 = "UPDATE `wp_users` SET `Credits`=$newbalance WHERE `ID`=$userId"; mysql_query($sql1,$con); mysql_close($con); } } } if ($result) { echo 'OK'; } function generateSignature($params, $secret) { $str = ''; foreach ($params as $k=>$v) { $str .= "$k=$v"; } $str .= $secret; return md5($str); } ?>[/CODE]

You’re not calculating the math right.

$existing2= mysql_query($sql2,$con);
$newbalance2= $existing2 + $credits;

should be

$existing2= mysql_query($sql2,$con);
$row = mysql_fetch_assoc($existing2);
$newbalance2= $row[‘Credits’] - $credits;

All you were doing is adding the new credits to letters, if you were to echo $existing2, you’d get array. Also, the chargeback area is for the refunds. you wouldn’t add the credits.

Look at the top of the code you gave, you’ll see where its getting 2.

Sponsor our Newsletter | Privacy Policy | Terms of Service