我正在编写一个 PHP 脚本来在我的网站上获取信用卡和客户详细信息,将这些详细信息以不可见的方式发送到 Worldpay 的服务器进行处理,然后根据响应(付费、失败等)采取行动。
我的问题是,在发送 XML 时,我似乎无法通过 Worldpay 进行身份验证 - 我已替换MYMERCHANTCODE
为正确的商家代码。这是我正在使用的代码 - 它基于Worldpay 的示例:
require_once 'HTTP/Request.php';
$xml='<?xml version="1.0"? encoding="UTF-8"?>
<!DOCTYPE paymentService PUBLIC "-//WorldPay//DTD WorldPay PaymentService v1//EN""http://dtd.worldpay.com/paymentService_v1.dtd">
<paymentService version="1.4" merchantCode="MYMERCHANTCODE">
<submit>
<order orderCode="T0211010">
<description>20 Tulip Bulbs from MYMERCHANT Webshops</description>
<amount value="2600" currencyCode="EUR" exponent="2"/>
<paymentDetails>
<VISA-SSL>
<cardNumber>4444333322221111</cardNumber>
<expiryDate>
<date month="09" year="2009"/>
</expiryDate>
<cardHolderName>J. Shopper</cardHolderName>
<cvc>123</cvc>
<cardAddress>
<address>
<street>47A Queensbridge Rd</street>
<postalCode>CB94BQ</postalCode>
<countryCode>GB</countryCode>
</address>
</cardAddress>
</VISA-SSL>
<session shopperIPAddress="123.123.123.123" id="0215ui8ib1" />
</paymentDetails>
<shopper>
<shopperEmailAddress>jshopper@myprovider.int</shopperEmailAddress>
<browser> [This example uses firefox 3.5.5 to demonstrate]
<acceptHeader>text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</acceptHeader>
<userAgentHeader>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)</userAgentHeader>
</browser>
</shopper>
</order>
</submit>
</paymentService>';
$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()));
当我运行它时,这是输出:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>401 Authorization Required</title>
</head><body>
<h1>Authorization Required</h1>
<p>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.</p>
</body></html>
有人可以帮忙吗?文档说要将您的 IP 地址添加到您的 Worldpay 帐户中,我认为我这样做是正确的。
非常感谢
更新:
我刚刚意识到,如果我在 URL 之前添加我的商家 ID 和 xml 密码,例如:
$dest='https://MERCHANTID:PASSWORD@secure-test.wp3.rbsworldpay.com/jsp/merchant/xml/paymentService.jsp';
然后它进行身份验证,所以我将回答我自己的问题。