За последние 24 часа нас посетили 22279 программистов и 994 робота. Сейчас ищут 588 программистов ...

Прикрутить систему на карточку сбербанка

Тема в разделе "PHP для новичков", создана пользователем АлексейЗверевПрограммист, 25 авг 2016.

  1. АлексейЗверевПрограммист

    С нами с:
    25 авг 2016
    Сообщения:
    1
    Симпатии:
    0
    на сайт нужно прикрутить систему оплаты карточку сбербанка, кто-нибудь сталкивался? т.е.
    Проблема с интеграцией модуля оплаты картами СберБанка
    Нужно простенький пример, типа вот пользователь купил 1 яблоко, код заказа 1, цена заказа 10, валюта рубль.
    Какие $_POST данные нужно отправить и куда, где нужно https://3dsec.sberbank.ru/mportal-uat/index.html здесь прописать url на который будет приходить ответ. Как обработать этот ответ есть ли скрипт. Мне прислали документацию от сбербанка и скрипт для примера, который не хрена не работает. Вот что прислали. Документация не хрена непонятно и файл типо рабочий который не фига не работает
    На тестовой среде https://3dsec.sberbank.ru/mportal-uat/index.html
    Создан мерчант orb
    API: orb-api
    Оператор: orb-op
    Пароль на оба логина: or


    Ваши страницы доступны по адресам:
    страница оплаты https://3dsec.sberbank.ru/payment/merchants/orbyta/payment_ru.html
    страница ошибок https://3dsec.sberbank.ru/payment/merchants/orbyta/errors_ru.html
    сам файл ws.php, с моими комментариями
    PHP:
    1. define('USERNAME', 'orb-api');//Логин магазина, полученный при подключении.??это Api
    2. define('PASSWORD', 'or');//Пароль магазина, полученный при подключении.??
    3. define('GATEWAY_URL', 'https://3dsec.sberbank.ru/mportal-uat/index.html');//что это нигде не используется.??
    4. define('RETURN_URL', 'http://mysite.ru'); //возвращается обратно??
    5. class Gateway extends SoapClient {
    6.  
    7.     private function generateWSSecurityHeader() {
    8.         $xml = '
    9.            <wsse:Security SOAP-ENV:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
    10.                <wsse:UsernameToken>
    11.                    <wsse:Username>' . USERNAME . '</wsse:Username>
    12.                    <wsse:password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">' . PASSWORD . '</wsse:password>
    13.                    <wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">' . sha1(mt_rand()) . '</wsse:Nonce>
    14.                </wsse:UsernameToken>
    15.            </wsse:Security>';
    16.    
    17.         return new SoapHeader('http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd', 'Security', new SoapVar($xml, XSD_ANYXML), true);
    18.     }
    19.  
    20.     public function __call($method, $data) {
    21.         $this->__setSoapHeaders($this->generateWSSecurityHeader());
    22.         return parent::__call($method, $data); // Вызов метода SoapClient::__call()
    23.     }
    24. }
    25.  
    26. if ($_SERVER['REQUEST_METHOD'] == 'GET' && !isset($_GET['orderId'])) {
    27. echo '
    28. <form method="post" action="/ws.php">';//отправляем опять себе $_POST данные зачем
    29. echo'<label>Order number</label><br />
    30. <input type="text" name="orderNumber" value="1" /><br />';//допустим 1 заказ, почему нет в примере названия товара и других необязательных данных
    31. echo'<label>Amount</label><br />
    32. <input type="text" name="amount" value="10" /><br />';//допустим 10 рублей, почему в примере нету передаваемого типа денежных средств
    33. <button type="submit">Submit</button>
    34. </form>
    35. ';
    36. }
    37. //набрали данные переходим в метод пост ничего не меняем кроме урл платежной системы
    38. else if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    39. $client = new Gateway(WSDL);
    40. $data = array('orderParams' => array(
    41. 'returnUrl' => RETURN_URL,
    42. 'merchantOrderNumber' => urlencode($_POST['orderNumber']),
    43. 'amount' => urlencode($_POST['amount'])
    44. ));
    45. $response = $client->__call('registerOrder', $data);
    46. if ($response->errorCode != 0) { // В случае ошибки вывести ее
    47. echo 'Ошибка #' . $response->errorCode . ': ' . $response->errorMessage;
    48. } else { // В случае успеха перенаправить пользователя на плетжную форму
    49. header('Location: ' . $response->formUrl);//какой урл платежной системы??https://3dsec.sberbank.ru/mportal-uat/index.html
    50. die();
    51. }
    52. }
    53. //в эту ветку мы не попадаем вообще
    54. else if ($_SERVER['REQUEST_METHOD'] == 'GET' && isset($_GET['orderId'])){
    55. ..
    56. }
     

    Вложения:

    • Mportal.pdf
      Размер файла:
      973,9 КБ
      Просмотров:
      4
    • SBRF-manual.pdf
      Размер файла:
      750,4 КБ
      Просмотров:
      5
    #1 АлексейЗверевПрограммист, 25 авг 2016
    Последнее редактирование модератором: 26 авг 2016
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    Отладка что говорит? Где сообщения об ошибки или поведение противоречащее документации?
     
  3. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Программист, пхп для профи, а как код вставить в сообщение нормально, так всё. Извиняюсь за оффтоп.

    хех, пока писал, @denis01 уже все поправил )
     
    denis01 нравится это.