Я пишу PHP-скрипт для приема данных кредитной карты и клиента на моем сайте, незаметной отправки этих данных на сервер Worldpay для обработки и последующего действия на основе ответа (оплачено, не удалось и т.д.).
Моя проблема в том, что я не могу аутентифицироваться в Worldpay при отправке XML - я заменил MYMERCHANTCODE
на правильный код продавца. Вот код, который я использую - он основан на примере Worldpay:
require_once 'HTTP/Request.php';
$xml='
20 Tulip Bulbs from MYMERCHANT Webshops
4444333322221111
J. Shopper
123
47A Queensbridge Rd
CB94BQ
GB
jshopper@myprovider.int
[This example uses firefox 3.5.5 to demonstrate]
text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729)
';
$dest='https://secure-test.wp3.rbsworldpay.com/jsp/merchant/xml/paymentService.jsp'; //for sandbox
//$dest='https://secure.wp3.rbsworldpay.com/jsp/merchant/xml/paymentService.jsp' //for production
$req =& new HTTP_Request($dest);
$req->setMethod(HTTP_REQUEST_METHOD_POST);
$req->addHeader('Connection', 'keep-alive');
$req->addRawPostData($xml);
$req->sendRequest();
$req->getResponseBody();
echo nl2br(htmlentities($req->getResponseBody()));
Когда я запускаю это, вот что выходит:
401 Authorization Required
Authorization Required
This server could not verify that you
are authorized to access the document
requested. Either you supplied the wrong
credentials (e.g., bad password), or your
browser doesn't understand how to supply
the credentials required.
Может кто-нибудь помочь с этим? В документации сказано, что нужно добавить ваш IP-адрес для запросов к вашему счету Worldpay, что, как мне кажется, я сделал правильно.
Большое спасибо
UPDATE:
Я только что понял, что если я добавлю свой ID продавца и пароль xml перед URL, например:
$dest='https://MERCHANTID:PASSWORD@secure-test.wp3.rbsworldpay.com/jsp/merchant/xml/paymentService.jsp';
Тогда он аутентифицируется, так что я сам отвечу на свой вопрос.