我想使用Quick License Manager SOAP网络服务来连接电子商务wordpress插件,以便用户购买许可证并在成功购买后显示。
所以现在,我&#39 ;我试图调用函数GetProductInfo来获取我使用QLM管理控制台创建的现有产品的信息。
我使用SoapClient php类,但当我尝试发出请求时,我得到了这样的响应:
验证请求时出错:输入不是有效的Base-64字符串,因为它包含非基本64个字符,两个以上的填充字符或填充字符中的非法字符。 。来电者:GetProductInfo
我不明白我的要求有什么问题,所以我需要帮助...... 这是我使用的代码:
<?php
$url = "https://quicklicensemanager.com/****/qlm/qlmservice.asmx";
$wsdl = $url . "?WSDL";
$soapClient = new SoapClient($wsdl, array(
"encoding" => "utf8",
"trace" => TRUE,
"version" => SOAP_1_1
));
$req = sprintf(
'<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<QlmSoapHeader xmlns="http://www.interactive-studios.net/qlmweb">
<CultureName>%s</CultureName>
<UtcOffset>%d</UtcOffset>
</QlmSoapHeader>
</soap:Header>
<soap:Body>
<GetProductInfo xmlns="http://www.interactive-studios.net/qlmweb">
<eProductName>%s</eProductName>
<productID>%d</productID>
<major>%d</major>
<minor>%d</minor>
</GetProductInfo>
</soap:Body>
</soap:Envelope>', "en_US", 0, "The IO plug-in: Student License", 4, 1, 0);
echo '<pre>';
print_r(htmlentities($req));
echo '</pre>';
$action = "http://www.interactive-studios.net/qlmweb/GetProductInfo";
$res = $soapClient->__doRequest($req, $url, $action, 1);
echo '<pre>';
print_r($res);
echo '</pre>';
echo "=======================================================";
echo '<pre>';
print_r(htmlentities($soapClient->__getLastRequest()));
echo '</pre>';
echo "=======================================================";
echo '<pre>';
print_r($soapClient->__getLastRequestHeaders());
echo '</pre>';
提前感谢您的帮助。
修改
现在我尝试更改字段productID,看起来它是错误的。所以它需要是一个base64字符串,所以我更新了我的代码:
</soap:Envelope>', "en_US", 0, "The IO plug-in: Student License", 4, 1, 0);
变为</soap:Envelope>', "en_US", 0, base64_encode("The IO plug-in: Student License"), 4, 1, 0);
新的错误消息是:
验证请求时出错:要解密的数据长度无效。来电者:GetProductInfo
答案 0 :(得分:0)
经过数小时的搜索,我在documentation,第121页找到了这个:
请注意,除了GetActivationKey之外,无法使用URL调用Web服务公开的所有方法 和ActivateKey。所有其他Web方法都实现了只接受的安全身份验证机制 来自QLM控制台的请求。
因此,当我试图调用 GetProductInfo 时,它无法在QLM控制台之外工作。