我想使用這個API與C#應用程序: http://www.affjet.com/2012/11/26/4-4-affjet-api/#more-3099傳遞參數作爲一個Object []
添加WSDL來我projcet後,我寫了這個簡單的代碼: (getTransactions得到一個對象[] @params並返回一個字符串)
Ws_ApiService service = new Ws_ApiService();
string apiKey = "*************";
var response = service.getTransactions(new object[] { apiKey });
我試過幾個方法,但不可能得到正確的反應, 我想:
var response = service.getTransactions(new object[] { "apiKey:****"});
和
var response = service.getTransactions(new object[] { "apiKey","******"});
這裏是PHP代碼,做同樣的從自己的文件:
<?php
$nameSpace = "https://secure.affjet.com/ws/api";
//Creating AffJet client for SOAP
$client = new SoapClient($nameSpace."?wsdl");
$pageNumber = 0;
//Setting up parameters
$params = array();
$params["apiKey"] = "MY_API_KEY";
//Value for parameters (optional)
//$params["networkId"] = array(1,2);
//$params["pageNumber"] = 0;
//$params["pageSize"] = 10;
//Making Request
$response = $client->getNetworks($params);
//XML to SimpleXMLElement Object
$xmlResponse = new SimpleXMLElement($response);
if ($xmlResponse->success == "true"){
while (isset($xmlResponse->dataList->data)) {
//Iterate the results
foreach ($xmlResponse->dataList->data as $data){
var_dump(xml2array($data));
}
//Requesting next page of data
$pageNumber++;
$params["pageNumber"] = $pageNumber;
//Making Request
$response = $client->getNetworks($params);
//XML to SimpleXMLElement Object
$xmlResponse = new SimpleXMLElement($response);
}
} else {
//Error somewhere
echo $xmlResponse->errorMessage;
}
/**
* Transforms the object SimpleXmlElement into an array, easier to handle
*/
function xml2array($xml) {
$arr = array();
foreach ($xml as $element) {
$tag = $element->getName();
$e = get_object_vars($element);
if (!empty($e)) {
$arr[$tag] = $element instanceof SimpleXMLElement ? xml2array($element) : $e;
} else {
$arr[$tag] = trim($element);
}
}
return $arr;
}
?>
這是什麼,我嘗試了迴應:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns1="http://secure.affjet.com/ws/api"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<ns1:getTransactionsResponse>
<return xsi:type="xsd:string">
<response><success>false</success><errorMessage>
API Key not provided</errorMessage><dataList>
</dataList></response>
</return>
</ns1:getTransactionsResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
你可以看到:
API Key not provided
A第二反應應該是這樣的:
<response>
<success>true</success>
<errorMessage></errorMessage>
<dataList>
<data>
<date>2012-11-05 15:02:41</date>//Transaction Date
<amount>81.67</amount>
<commission>15.86</commission>
<status>confirmed</status>//Status, could be: declined, pending, confirmed or paid
<clickDate></clickDate>
<ip></ip>
<custom_id>MyCustomId</custom_id>//Custom Id for the transactions (SID, SubId,clickRef....)
<unique_id>2548462</unique_id>//Unique Id given from the network to this transaction
<merchantId>1</merchantId>//Id for the Merchant on AffJet
<networkId>1</networkId>//Id for the Network on AffJet
</data>
</dataList>
</response>
所有我需要提供一個名爲「apiKey」參數,並將其值
編輯:
聯繫他們的支持後,他們說的要求應該看起來像這樣:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns1="http://secure.affjet.com/ws/api"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:ns2="http://xml.apache.org/xml-soap"
xmlns:SOAP- ENC="http://schemas.xmlsoap.org/soap/encoding/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<ns1:getTransactions>
<params xsi:type="ns2:Map">
<item>
<key xsi:type="xsd:string">apiKey</key>
<value xsi:type="xsd:string">YOURAPIKEY</value>
</item>
</params>
</ns1:getTransactions>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
任何想法?
發生了什麼事你試過嗎?返回一個字符串?字符串是什麼?你期望它是什麼? – 2013-04-25 17:27:33
我編輯了你所要求的:) – 2013-04-25 17:32:19
你可以看到service.getTransactions()的sig方法嗎? – 2013-04-25 17:37:33