Пример ответа на платеж PHP Worldpay

Я занимаюсь разработкой сайта для клиента, и одним из требований является интеграция платежей WorldPay для процесса покупки.

После того, как пользователь завершил платеж за продукт, мне нужно предупредить систему лицензирования о завершении платежа. Документация worldpay дает обзор сервиса ответа на платеж, но не дает пример кода.

У меня был клиент, настроивший вариант ответа на оплату в своей тестовой установке, но мне не пришлось бы кодировать мою собственную страницу, чтобы обработать ответ, если кто-то уже сделал это. У кого-нибудь есть ссылка на хороший пример кода (в php)?? У меня был приличный взгляд онлайн и я не появлялся много.

Спасибо!

4 ответа

Решение

Задача решена. В итоге я создал собственный класс для обработки ответа от worldpay. Вот упрощенная версия моей страницы обработчика на случай, если кто-то еще может найти ее полезной.

(Примечание: я не являюсь разработчиком php, поэтому некоторые синтаксис может быть немного хитрым!)

<?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>

Для тех, кто читает это из поиска Google, re: worldpay Платежный ответ.

Март 2015:

Я настраиваю систему онлайн-платежей worldpay для клиента и, черт возьми, это ужасно. Они сделали посредственную систему в 2011 году и не удосужились обновить ее с тех пор. Это утомительно, а примеры кода и документация оставляют желать лучшего.

Worldpay все еще используют MD5() хэширование как "высокозащищенный метод шифрования" и все еще ссылается на различные ресурсы и концепции серверов, которые больше не используются. С практической точки зрения программирования НЕ ИСПОЛЬЗУЙТЕ WORLDPAY.

У них нет документации для обработки динамических платежей, и, тем не менее, я ожидаю, что каждый платеж будет завершен, и я отправлю им .html файл для их отображения, а не для отправки клиента обратно на мой сайт для вывода динамического кода.

Я бы никогда не стал прикасаться к WorldPay после этой работы, но мой клиент уже заплатил им за то, что подписался на них, и поэтому я должен реализовать это для него.:-/

Их обслуживание клиентов (Великобритания) также очень плохое.

Расширение небольшого класса для класса TGuimond - WorldPay_Response:

<?php //Worldpay 

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;

    /* extension */
    public $name = null;
    public $address = null;
    public $town = null;
    public $email = null;
    public $desc = 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'];

        if(isset($_POST['name'])){
            $this->name = $_POST['name'];
        }

        if(isset($_POST['address'])){
            $this->address = $_POST['address'];
        }

        if(isset($_POST['town'])){
            $this->town = $_POST['town'];
        }

        if(isset($_POST['email'])){
            $this->email = $_POST['email'];
        }

        if(isset($_POST['desc'])){
            $this->desc = $_POST['desc'];
        }

        //custom properties
        $this->mc_custom_property = $_POST['MC_custom_property'];

    }
}

Выглядит очень похоже на PayPal. в основном сервер<> серверные вещи. у них есть свои 9 ярдов здесь. http://www.worldpay.com/support/kb/bg/pdf/custa.pdf Вы ищете полноценный сервисный центр покупки? б / с просто получение с простым уведомлением это страница или около того. У Google есть кое-что с открытым исходным кодом. http://code.google.com/p/opencart/source/browse/trunk/upload/catalog/language/english/payment/worldpay.php?spec=svn694&r=694. просто гугл worldpay.php. если вы найдете что-нибудь, дайте нам знать. мы рассматривали предложение WORLDPAY для наших клиентов. Мои, как они изменились за последние 5 лет.

Другие вопросы по тегам