Пример ответа на платеж PHP Worldpay - PullRequest
0 голосов
/ 28 декабря 2011

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

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

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

Спасибо!

Ответы [ 4 ]

4 голосов
/ 29 декабря 2011

Проблема решена. В итоге я создал собственный класс для обработки ответа от 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>
1 голос
/ 27 марта 2015

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

Март 2015:

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

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

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

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

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

0 голосов
/ 24 мая 2017

расширение малого класса до класса 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'];

    }
}
0 голосов
/ 28 декабря 2011

очень похоже на 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. просто Google worldpay.php.если вы найдете что-то, ДАЙТЕ НАМ ЗНАТЬ .мы рассматривали предложение WORLDPAY для наших клиентов.Как они изменились за последние 5 лет.

...