I am developing a site for a client and one of the requirements is to integrate worldpay payments for the purchasing process.
Once the user has completed payment for a product I need to alert a licencing system to the completed payment. The worldpay documentation gives an overview of the payment response service but does not give a code example.
I have had the client set up the payment response option in their test installation but would rather not have to go about coding my own page to handle the response if someone else has already done it. Does anyone have a link to a good code example (in php)?? I have had a decent look online and have not turned up much.
Thanks!
Problem solved. I ended up creating a custom class to handle the response from worldpay. Here is a simplified version of my handler page in case anyone else might find it useful.
(Note: I am not really a php developer so some syntax might be a bit dodgy!)
<?php //Worldpay
// class definition
class WorldPay_Response {
// define properties
public $transaction_id = null;
public $transaction_status = null;
public $transaction_time = null;
public $authorisation_amount = null;
public $authorisation_currency = null;
public $authorisation_amount_string = null;
public $raw_auth_message = null;
public $raw_auth_code = null;
public $callback_password = null;
public $card_type = null;
public $authentication = null;
public $ip_address = null;
public $character_encoding = null;
public $future_payment_id = null;
public $future_payment_status_change = null;
//custom properties not included by worldpay
public $mc_custom_property = null;
// constructor
public function __construct() {
$this->transaction_id = $_POST['transId'];
$this->transaction_status = $_POST['transStatus']; //should be either Y (successful) or C (cancelled)
$this->transaction_time = $_POST['transTime'];
$this->authorisation_amount = $_POST['authAmount'];
$this->authorisation_currency = $_POST['authCurrency'];
$this->authorisation_amount_string = $_POST['authAmountString'];
$this->raw_auth_message = $_POST['rawAuthMessage'];
$this->raw_auth_code = $_POST['rawAuthCode'];
$this->callback_password = $_POST['callbackPW'];
$this->card_type = $_POST['cardType'];
$this->country_match = $_POST['countryMatch']; //Y - Match, N - Mismatch, B - Not Available, I - Country not supplied, S - Issue Country not available
$this->waf_merchant_message = $_POST['wafMerchMessage'];
$this->authentication = $_POST['authentication'];
$this->ip_address = $_POST['ipAddress'];
$this->character_encoding = $_POST['charenc'];
$this->future_payment_id = $_POST['futurePayId'];
$this->future_payment_status_change = $_POST['futurePayStatusChange'];
//custom properties
$this->mc_custom_property = $_POST['MC_custom_property'];
}
}
?>
<html>
<head><title>Thank you for your payment</title></head>
<WPDISPLAY FILE="header.html">
<?php
//Response from Worldpay
$wp_response = new WorldPay_Response();
if($wp_response->transaction_status == "Y"){ ?>
<strong>Transaction Details</strong><br />
<?php
echo "Worldpay Transaction id: " . $wp_response->transaction_id . "<br />";
echo "Payment Status: " . $wp_response->transaction_status . "<br />";
echo "Transaction Time: " . $wp_response->transaction_time . "<br />";
echo "Amount: " . $wp_response->authorisation_amount_string . "<br />";
echo "IP Address: " . $wp_response->ip_address . "<br /><br />";
}else if($wp_response->transaction_status == "C") { ?>
<strong>Transaction Cancelled</strong>
<?php } else { ?>
Your transaction was unsuccessful.
<?php } ?>
<WPDISPLAY ITEM="banner">
<WPDISPLAY FILE="footer.html">
</html>