我一直在尝试使用WorldPay为我的客户端使用PHP设置支付网关,但我无法从World Pay服务器获得任何响应。从哪里可以获得XML密码?它与登录密码相同吗?
以下是我用来从World Pay服务器获取响应的XML规范
$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="MERCHANTCODE">
<submit>
<order orderCode="T0211011" installationId="111111">
<description>20 English Roses from MYMERCHANT Webshops</description>
<amount value="100" currencyCode="GBP" exponent="2"/>
<orderContent>
<![CDATA[
<center>
<table>
<tr><td bgcolor="#ffff00">Your Internet Order:</td><td colspan="2" bgcolor="#ffff00" align="right">T0211010</td></tr>
<tr><td bgcolor="#ffff00" colspan="3">Your billing address:</td></tr>
<tr><td colspan="3">Mr. J. Shopper<br><br>27b ParkView Mansions<br>47 Queensbridge Road<br>Chesterton<br>Cambridge<br>CB9 4BQ<br>United Kingdom</td></tr>
<tr><td colspan="3"> </td></tr>
<tr><td bgcolor="#ffff00" colspan="3">Your shipping address:</td></tr>
<tr><td colspan="3">Mr.J. Shopper<br>47A Queensbridge Road<br>Cambridge<br>CB9 4BQ<br>UK</td></tr>
<tr><td colspan="3"> </td></tr>
<tr><td bgcolor="#ffff00" colspan="3">Our contact information:</td></tr>
<tr><td colspan="3">MYMERCHANT Webshops International<br>461 Merchant Street <br>Merchant Town<br>ZZ1 1ZZ<br>UK <br>mymerchant@webshops.int<br>01234 567 890</td></tr>
<tr><td colspan="3"> </td></tr>
<tr><td bgcolor="#c0c0c0" colspan="3">Billing notice:</td></tr>
<tr><td colspan="3">Your payment will be handled by WorldPay<br>This name may appear on your bank statement<br>http://www.worldpay.com</td></tr>
</table>
</center>
]]>
</orderContent>
<paymentDetails>
<VISA-SSL>
<cardNumber>4444333322221111</cardNumber>
<expiryDate>
<date month="09" year="2019"/>
</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="213.137.19.45" id="0215ui8ib1" />
</paymentDetails>
<shopper>
<shopperEmailAddress>jshopper@myprovider.int</shopperEmailAddress>
<browser>
<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>
<shippingAddress>
<address>
<firstName>John</firstName>
<lastName>Shopper</lastName>
<address1>27b ParkView Mansions</address1>
<address2>47 Queensbridge Rd</address2>
<address3>Chesterton</address3>
<postalCode>CB94BQ</postalCode>
<countryCode>GB</countryCode>
<telephoneNumber>01234567890</telephoneNumber>
</address>
</shippingAddress>
</order>
</submit>
</paymentService>';
这是Worldpay服务器的URL。
$url ="https://MERCHANTCODE:PASSWORD@secure-test.wp3.rbsworldpay.com/jsp/merchant/xml/paymentService.jsp";
我使用PHP curl函数从服务器获取响应。
$ch = curl_init ($url);
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$xml);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_NOPROGRESS, 0);
$result = curl_exec ($ch);
if ( $result == false )
{
echo "fasle";
}
else
{
print_r($result);
echo $result;
}
答案 0 :(得分:0)
只有Woldpay可以为您提供XML密码,并且在证明该网站符合pcidss之前您不能拥有xml密码。有一种方法可以在不使用XML的情况下实现该功能。我建议的技术已经过验证,我已将其实施到我的网站中。
远程捕获
<html>
<body>
<h1>Post-authorise a pre-authorised transaction</h1>
<br>This allows you to complete only those transactions you consider appropriate.
<form action="https://secure.worldpay.com/wcc/itransaction"; method="post">
<input type="hidden" name="instId" value="XXXXX">
<input type="hidden" name="op" value="postAuth-full">
<input type="hidden" name="authPW" value="YYYYY">
<input type="hidden" name="authMode" value="O">
<br>Enter the transaction ID to complete:
<input type="text" name="transId" value="" size="10">
<input type="submit" name="postAuth" value="Capture">
</form>
</body>
</html>
远程退款
<html>
<body>
<h1>Issuing a full or partial refund</h1>
<p>This allows individual transactions to be refunded either fully or in part. Partial refunds must be issued in the currency the shopper originally used to pay.
<form action="https://secure.worldpay.com/wcc/itransaction"; method="post">
<input type="hidden" name="authPW" value="YYYYY">
<input type="hidden" name="instId" value="XXXXX">
<input type="hidden" name="cartId" value="Refund">
<p>Refund type:
<select name="op">
<option value="refund-full">Full</option>
<option value="refund-partial">Partial</option>
</select>
<p>Enter the Transaction ID to refund:
<input type="text" name="transId" value="" size="10">
<p>Enter the amount (partial refund only):
<input type="text" name="amount" value="" size="10">
<p>Enter the currency (partial refund only):
<input type="text" name="currency" value="" size="3">
<input type="submit" name="refund" value="Issue Refund">
</form>
</body>
</html>
我希望这有所帮助。