на сайт нужно прикрутить систему оплаты карточку сбербанка, кто-нибудь сталкивался? т.е. Проблема с интеграцией модуля оплаты картами СберБанка Нужно простенький пример, типа вот пользователь купил 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: define('USERNAME', 'orb-api');//Логин магазина, полученный при подключении.??это Api define('PASSWORD', 'or');//Пароль магазина, полученный при подключении.?? define('GATEWAY_URL', 'https://3dsec.sberbank.ru/mportal-uat/index.html');//что это нигде не используется.?? define('RETURN_URL', 'http://mysite.ru'); //возвращается обратно?? class Gateway extends SoapClient { private function generateWSSecurityHeader() { $xml = ' <wsse:Security SOAP-ENV:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> <wsse:UsernameToken> <wsse:Username>' . USERNAME . '</wsse:Username> <wsse:password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">' . PASSWORD . '</wsse:password> <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> </wsse:UsernameToken> </wsse:Security>'; 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); } public function __call($method, $data) { $this->__setSoapHeaders($this->generateWSSecurityHeader()); return parent::__call($method, $data); // Вызов метода SoapClient::__call() } } if ($_SERVER['REQUEST_METHOD'] == 'GET' && !isset($_GET['orderId'])) { echo ' <form method="post" action="/ws.php">';//отправляем опять себе $_POST данные зачем echo'<label>Order number</label><br /> <input type="text" name="orderNumber" value="1" /><br />';//допустим 1 заказ, почему нет в примере названия товара и других необязательных данных echo'<label>Amount</label><br /> <input type="text" name="amount" value="10" /><br />';//допустим 10 рублей, почему в примере нету передаваемого типа денежных средств <button type="submit">Submit</button> </form> '; } //набрали данные переходим в метод пост ничего не меняем кроме урл платежной системы else if ($_SERVER['REQUEST_METHOD'] == 'POST') { $client = new Gateway(WSDL); $data = array('orderParams' => array( 'returnUrl' => RETURN_URL, 'merchantOrderNumber' => urlencode($_POST['orderNumber']), 'amount' => urlencode($_POST['amount']) )); $response = $client->__call('registerOrder', $data); if ($response->errorCode != 0) { // В случае ошибки вывести ее echo 'Ошибка #' . $response->errorCode . ': ' . $response->errorMessage; } else { // В случае успеха перенаправить пользователя на плетжную форму header('Location: ' . $response->formUrl);//какой урл платежной системы??https://3dsec.sberbank.ru/mportal-uat/index.html die(); } } //в эту ветку мы не попадаем вообще else if ($_SERVER['REQUEST_METHOD'] == 'GET' && isset($_GET['orderId'])){ .. }
Программист, пхп для профи, а как код вставить в сообщение нормально, так всё. Извиняюсь за оффтоп. хех, пока писал, @denis01 уже все поправил )