Класс для работы с сбербанк эквайринг rest api php

← разместить еще код

Чтобы подключить онлайн оплату от сбербанка на сайте, достаточно следующего класса. Класс состоит из двух методов: регистрация заказа и получение статуса заказа. Сбербанк предоставляет песочницу для работы, доступы к панели и документацию. Чтобы оформить заказ, необходимо выполнить запрос register.do, передав следующие поля: доступы, номер заказа на сайте, валюту, сумму заказа, ссылку для возврата на сайт после оплаты и часть необязательных полей типа время сессии и др. Метод вернет ссылку на страницу для оплаты заказа клиентов, после успешной оплаты система вернет клиента на страницу, указанную в поле returnUrl. Для подтверждения оплаты необходимо проверять статус заказа, для этого нам потребуется метод getOrderStatus.do. Тут ничего сложного. Удачи.

Расшаренный код:

<?
class CSberbank{
	private static $login = "login";
	private static $username = "user";
	private static $password = "password";


	function getOrderStatus( $orderId ) {
		// https:/server/application_context/rest/getOrderStatus.do? orderId=b8d70aa7-bfb3-4f94-b7bb-aec7273e1fce&language=ru&password=password&userName=userName
		$url = "https://3dsec.sberbank.ru/payment/rest/getOrderStatus.do?orderId=".$orderId."&language=ru&password=".$this::$password."&userName=".$this::$username;
		$ch = curl_init();
		curl_setopt($ch, CURLOPT_URL, $url);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
		$response = curl_exec($ch);
		curl_close($ch);

		if( $response ){

		    $response = json_decode($response, true);

		    if( $response['ErrorMessage'] ){

		    	if( $response['OrderStatus'] == 2 ){
					return "Спасибо, заказ №".$response['OrderNumber']." оплачен.";
		    	} else {
		    		return "Статус заказа: ".$response['ErrorMessage'];
		    	}

		    }

		}
        return false;
	}

	function registerOrder($total, $order, $returnUrl){
        $url = "https://3dsec.sberbank.ru/payment/rest/register.do?amount=".intval($total)."00&currency=643&language=ru&orderNumber=".$order."&password=".$this::$password."&userName=".$this::$username."&returnUrl=".$returnUrl."&returnUrl=".$returnUrl."&pageView=DESKTOP&sessionTimeoutSecs=1200";
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        $response = curl_exec($ch);
        curl_close($ch);

        if( $response ){

            $response = json_decode($response, true);

            if( $response['orderId'] && $response['formUrl'] ){
                return 'redirect:'.$response['formUrl'];
            }

        }
        return false;
	}

}