API точка входа: https://wpay.net/merchant/gate

Список обязательных $_GET параметров:
Демонстрационный магазин Войти в Магазин
Логотипы для скачивания:
Подпись мерчанта рассчитывается методом md5(sprintf('%s-%s-%s-%s-%s', $this->_key, $this->_password, $this->_salt, $this->_amount, $this->_wallet)).
Значения Key, Password и Salt вы можете найти в своем профиле.

PHP пример WPAY API EXPRESS для интернет магазина

Содержание

cart.php - пример обработки заказа
success.php - обработка ответа от сервера при успешной оплате
error.php - обработка ответа от сервера при ошибке оплаты
api.php - класс для работы с платежной системой
# Определяем товар который покупает пользователь
switch ($_GET['item'])
{
    case 'duck':
    $data['amount'] = '300';
    $data['description'] = 'Buy a laptop';
    break;
 
    case 'glasses':
    $data['amount'] = '1300';
    $data['description'] = 'Pay glasses';
    break;
 
    default:
    $data['amount'] = '50';
    $data['description'] = 'Pay for services';
    break;
}
 
try
{
# Создаем новый заказ $data
# $db - это Ваша база данных и класс для его работы
# Пример, скорее всего, не будет работать у Вас
$data = $db->createOrder($data);
 
 
# Подключаем апи
require(dirname(__FILE__).'/api.php');
 
# Инициализируем апи
$WPAYApi = new WPAYApi();
 
# Задаем цену товара для покупки
$WPAYApi->setAmount($data['amount']);
 
# Задаем описание товара для отображения в системе оплаты
$WPAYApi->setOrderDescription($data['description']);
 
# Задаем номер заказа, для обработки его после оплаты
$WPAYApi->setOrderNumber($data['order_number']);
 
# Отправляем запрос на сервер оплат
$WPAYApi->doPayment();
}
# Ловим ошибки АПИ
catch (WPAYApiException $e)
{
    $response['error'] = 'Ошибка в скрипте api: (' . $e->getType() . ') ' . $e->getMessage();
}
# Ловим остальные ошибки
catch (Exception $e)
{
    $response['error'] = 'Ошибка в скрипте магазина: ' . $e->getMessage();
}

Файл success.php

Страница для переадресация пользователя после успешной оплаты
# Получаем информацию о номере заказа
$order = intVal($_GET['order_number']);
 
# Выводим пользователю сообщение о том, что заказ успешно оплачен
echo 'Вы успешно оплатили Ваш заказ #' . $order;
 
# Достаем информацию о заказе по $order
# $db - это Ваша база данных и класс для его работы
# Пример, скорее всего, не будет работать у Вас
$order_info = $db->getByOrder($order);
$order_info->status = 'success';
 
# Обновляем статус заказа
# Помечаем его как оплачен
$db->saveOrder($order_info);

Файл error.php

Страница для переадресация пользователя после неуспешной оплаты
# Получаем информацию о номере заказа
$order = intVal($_GET['order_number']);
 
# Выводим пользователю сообщение о том, что заказ не был оплачен
echo 'Ошибка при оплате заказа #' . $order;
 
# Достаем информацию о заказе по $order
# $db - это Ваша база данных и класс для его работы
# Пример, скорее всего, не будет работать у Вас
$order_info = $db->getByOrder($order);
$order_info->status = 'error';
 
# Обновляем статус заказа
# Помечаем его как не оплачен
$db->saveOrder($order_info);

Файл api.php

используется как обработчик данных вашего интернет магазина, формирует запрос и отправляет на систему оплаты
 
/**
* @category   Express API
* @package    WPAYApi
* @copyright  WPAY payment system
* @link       https://wpay.net/merchant/example/
*/
 
/**
* Exception class for WPAY api
*
* @category   Express API
* @package    WPAYApiException
* @copyright  WPAY payment system
* @link       https://wpay.net/merchant/example/
* @uses       Exception
*/
class WPAYApiException extends Exception
{
    private $type;
 
    public function __construct($message, $type, $code = 0, Exception $previous = null) {
        $this->type = $type;
        parent::__construct($message, $code, $previous);
    }
 
    public function getType() {
        return $this->type;
    }
}
/**
* API class
*
* @category   Express API
* @package    WPAYApi
* @copyright  WPAY payment system
* @link       https://wpay.net/merchant/example/
*/
class WPAYApi
{
private
/**
* Ключ для Merchant API
* Получить его можно в личном кабинете
* Внимание - не передавайте третьим лицам данный ключ
*
* @link     https://wpay.net/user/merchant
* @var     string $_key
* @access  private
*/
$_key = '00000000000000000000000000000000000000000001',
 
/**
* Пароль Merchant API
* Получить его можно в личном кабинете
* Внимание - не передавайте третьим лицам данный пароль
*
* @link     https://wpay.net/user/merchant
* @var     string $_password
* @access  private
*/
$_password = '00000000000001',
 
/**
* Хеш код (соль) для Merchant API
* Получить его можно в личном кабинете
* Внимание - не передавайте третьим лицам данный хеш код
*
* @link     https://wpay.net/user/merchant
* @var     string $_salt
* @access  private
*/
$_salt = '0000000001',
 
/**
* Номер кошелька, на который будут пр ниматься средства
* Система берет валюту данного кошелька для оплат
*
* @link     https://wpay.net/user/
* @var     string $_wallet
* @access  private
*/
$_wallet = 'WE0000000',
 
/**
* URL на который после оплаты система перебросит пользователя в случае успешной транзакции
*
* @var     string $_success_url
* @access  private
*/
$_success_url = 'http://yoursite.com/success.php',
 
/**
* URL на который после оплаты система перебросит пользователя в случае ошибки оплаты
*
* @var     string $_error_url
* @access  private
*/
$_error_url = 'http://yoursite.com/error.php';
 
private
/**
* Сумма к оплате
* Задается вызовом функции $this->setAmount($amount)
*
* @var     float $_amount
* @access  private
*/
$_amount,
 
/**
* Сумма к оплате
* Задается вызовом функции $this->setOrderDescription($description)
*
* @var     float $_description
* @access  private
*/
$_description,
 
/**
* Номер заказа
* Задается вызовом функции $this->setOrderNumber($order_number)
*
* @var     float $_order_number
* @access  private
*/
$_order_number;
 
 
/**
* Установка суммы оплаты
*
* @param     float $amount
* @return  void
* @access  public
*/
public function setAmount($amount)
{
    $this->_amount = floatVal($amount);
}
 
/**
* Установка описания заказа [ опционально ]
*
* @param     string $description
* @return  void
* @access  public
*/
public function setOrderDescription($description)
{
    $this->_description = strVal($description);
}
 
/**
* Установка номера заказа
*
* @param     int $order_number
* @return  void
* @access  public
*/
public function setOrderNumber($order_number)
{
    $this->_order_number = intVal($order_number);
}
 
/**
* Отправка запроса пользователя для оплаты
*
* @return  void
* @access  public
*/
public function doPayment()
{
    $this->_send();
}
 
/**
* Проверка формата номера кошелька
*
* @param $wid
* @return  string, boolean
* @access  public
*/
private function _test_wid_format($wid)
{
    if( $wid == null || strlen($wid) == 0 ){
        return 'WID is empty';
    }
    if( strlen($wid) != 9 ){
        return 'Wrong WID format. AAXXXXXXX expected.';
    }
    $wallet_type = substr($wid, 0, 2);
    $acceptable_types = array('WE', 'WB', 'WD');
    if( !in_array($wallet_type, $acceptable_types) ){
        return 'Wrong WID type "'.$wallet_type.'". Acceptable types are ' . join(',', $acceptable_types);
    }
    $wallet_number = substr($wid, 2);
    if($wallet_number < 1000000 || $wallet_number > 9999999){
        return 'Wrong WID number "'.$wid.'"';
    }
    return false;
}
 
/**
* Генерация хеша для верификации системой оплаты
* Внимание - не передавайте третьим лицам данные о мерчанте
*
* @return  void
* @access  public
*/
private function _get_hash()
{
    return md5(sprintf('%s-%s-%s-%s-%s', $this->_key, $this->_password, $this->_salt, $this->_amount, $this->_wallet));
}
 
/**
* Формирование и отправка запроса на сервер оплат
* Обработка входящих данных перед отправкой
*
* @return  void
* @access  public
*/
private function _send()
{
    if ($errMsg =  $this->_test_wid_format($this->_wallet)) {
        throw new WPAYApiException($errMsg, "ERR_WID_FORMAT");
    }
 
    if (empty($this->_key)) {
        throw new WPAYApiException("Empty merchant key", "ERR_REQUIRED_FIELD");
    }
 
    if (empty($this->_wallet)) {
        throw new WPAYApiException("Empty merchant wallet", "ERR_REQUIRED_FIELD");
    }
 
    if (empty($this->_success_url)) {
        throw new WPAYApiException("Empty success url", "ERR_REQUIRED_FIELD");
    }
 
    if (empty($this->_error_url)) {
        throw new WPAYApiException("Empty error url", "ERR_REQUIRED_FIELD");
    }
 
    if (empty($this->_amount)) {
        throw new WPAYApiException("Empty amount", "ERR_REQUIRED_FIELD");
    }
 
    $data['key'] = $this->_key;
    $data['merchant_sign'] = $this->_get_hash();
    $data['amount'] = $this->_amount;
    $data['order_number'] = $this->_order_number;
    $data['wid'] = $this->_wallet;
    $data['success_url'] = $this->_success_url.'?order_number='.$this->_order_number;
    $data['error_url'] = $this->_error_url.'?order_number='.$this->_order_number;
 
    $url = http_build_query($data);
    header('Location: https://wpay.net/merchant/gate?'.$url);
}
}