Permalink
Find file
b0b7259 Dec 13, 2016
136 lines (115 sloc) 5.81 KB
<?php
/**
* ... Please MODIFY this file ...
*
*
* User-defined function (IPN) for new payments
* ---------------------------------------------
*
* User-defined function - cryptobox_new_payment($paymentID = 0, $payment_details = array(), $box_status = "").
* Use this function to send confirmation email, update database, update user membership, etc.
*
* This IPN function will automatically appear for each new payment usually two times :
* a) when a new payment is received, with values: $box_status = cryptobox_newrecord, $payment_details[confirmed] = 0
* b) and a second time when existing payment is confirmed (6+ confirmations) with values: $box_status = cryptobox_updated, $payment_details[confirmed] = 1.
*
* But sometimes if the payment notification is delayed for 20-30min, the payment/transaction will already be confirmed and the function will
* appear once with values: $box_status = cryptobox_newrecord, $payment_details[confirmed] = 1
*
* If payment received with correct amount, function receive: $payment_details[status] = 'payment_received' and $payment_details[user] = 11, 12, etc (user_id who has made payment)
* If incorrectly paid amount, the system can not recognize user; function receive: $payment_details[status] = 'payment_received_unrecognised' and $payment_details[user] = ''
*
* Function cryptobox_new_payment($paymentID = 0, $payment_details = array(), $box_status = "")
* gets $paymentID from your table crypto_payments, $box_status = 'cryptobox_newrecord' OR 'cryptobox_updated' (description above)
* and payment details as array -
*
* 1. EXAMPLE - CORRECT PAYMENT -
* -----------------------------------------------------
* $payment_details = Array
* {
* "status":"payment_received"
* "err":""
* "private_key":"1206lO6HX76cw9Bitcoin77DOGED82Y8eyBExZ9kZpX"
* "box":"120"
* "boxtype":"paymentbox"
* "order":"order15620A"
* "user":"user26"
* "usercountry":"USA"
* "amount":"0.0479166"
* "amountusd":"11.5"
* "coinlabel":"BTC"
* "coinname":"bitcoin"
* "addr":"14dt2cSbvwghDcETJDuvFGHe5bCsCPR9jW"
* "tx":"95ed924c215f2945e75acfb5650e28384deac382c9629cf0d3f31d0ec23db08d"
* "confirmed":0
* "timestamp":"1422624765 "
* "date":"30 January 2015"
* "datetime":"2015-01-30 13:32:45"
* }
*
* 2. EXAMPLE - INCORRECT PAYMENT/WRONG AMOUNT -
* -----------------------------------------------------
* $payment_details = Array
* {
* "status":"payment_received_unrecognised"
* "err":"An incorrect bitcoin amount has been received"
* "private_key":"1206lO6HX76cw9Bitcoin77DOGED82Y8eyBExZ9kZpX"
* "box":"120"
* "boxtype":"paymentbox"
* "order":""
* "user":""
* "usercountry":""
* "amount":"12.26"
* "amountusd":"0.05"
* "coinlabel":"BTC"
* "coinname":"bitcoin"
* "addr":"14dt2cSbvwghDcETJDuvFGHe5bCsCPR9jW"
* "tx":"6f1c6f34189a27446d18e25b9c79db78be55b0bb775b1768b5aa4520f27d71a8"
* "confirmed":0
* "timestamp":"1422623712"
* "date":"30 January 2015"
* "datetime":"2015-01-30 13:15:12"
* }
*
* Read more - https://gourl.io/api-php.html#ipn
*/
function cryptobox_new_payment($paymentID = 0, $payment_details = array(), $box_status = "")
{
/** .............
.............
PLACE YOUR CODE HERE
Update database with new payment, send email to user, etc
Please note, all received payments store in your table `crypto_payments` also
See - https://gourl.io/api-php.html#payment_history
.............
.............
For example, you have own table `user_orders`...
You can use function run_sql() from cryptobox.class.php ( https://gourl.io/api-php.html#run_sql )
.............
// Save new Bitcoin payment in database table `user_orders`
$recordExists = run_sql("select paymentID as nme FROM `user_orders` WHERE paymentID = ".intval($paymentID));
if (!$recordExists) run_sql("INSERT INTO `user_orders` VALUES(".intval($paymentID).",'".$payment_details["user"]."','".$payment_details["order"]."',".floatval($payment_details["amount"]).",".floatval($payment_details["amountusd"]).",'".$payment_details["coinlabel"]."',".intval($payment_details["confirmed"]).",'".$payment_details["status"]."')");
.............
// Received second IPN notification (optional) - Bitcoin payment confirmed (6+ transaction confirmations)
if ($recordExists && $box_status == "cryptobox_updated") run_sql("UPDATE `user_orders` SET txconfirmed = ".intval($payment_details["confirmed"])." WHERE paymentID = ".intval($paymentID));
.............
.............
// Onetime action when payment confirmed (6+ transaction confirmations)
$processed = run_sql("select processed as nme FROM `crypto_payments` WHERE paymentID = ".intval($paymentID)." LIMIT 1");
if (!$processed && $payment_details["confirmed"])
{
// ... Your code ...
// ... and update status in default table where all payments are stored - https://github.com/cryptoapi/Payment-Gateway#mysql-table
$sql = "UPDATE crypto_payments SET processed = 1, processedDate = '".gmdate("Y-m-d H:i:s")."' WHERE paymentID = ".intval($paymentID)." LIMIT 1";
run_sql($sql);
}
.............
Debug - new payment email notification for webmaster
Uncomment lines below and make any test payment
--------------------------------------------
$email = "....your email address....";
mail($email, "Payment - " . $paymentID . " - " . $box_status, " \n Payment ID: " . $paymentID . " \n\n Status: " . $box_status . " \n\n Details: " . print_r($payment_details, true));
*/
return true;
}
?>