Я попытался вызвать API аутентификации с помощью полного API-интерфейса Escrow REST.
Однако я не получаю никакого действительного ответа от API аутентификации.
Я использовал метод Codeigniter CURL для публикации переменных с URL https://stgsecureapi.escrow.com/api/Transaction
однако это все еще не работает для меня.
я получаю следующий ответ: аутентификация запрещена
Пожалуйста, помогите мне, если у кого-нибудь есть идея решить эту проблему.
Код, который я использую:
//The JSON data.
$url = 'https://stgsecureapi.escrow.com/api/Transaction';
$jsonData = array(
'username' => '*****@gmail.com',
'password' => '****',
'pid' => '***'
);
//Encode the array into JSON.
$jsonDataEncoded = json_encode($jsonData);
print_r($jsonDataEncoded);
// Start session (also wipes existing/previous sessions)
$this->curl->create($url);
// Option
$this->curl->option(CURLOPT_HTTPHEADER, array('Content-type: application/json; Charset=UTF-8'));
// Post - If you do not use post, it will just run a GET request
$this->curl->post($jsonDataEncoded);
// Execute - returns responce
$this->data['curlreturn'] = $this->curl->execute();
//exit;
$this->load->view('pay/pay', $this->data);
Я получил ответ Escrow с населением XML ..
Также проверьте функцию, которая используется для вызова API с помощью CURL
$requeste = '<Transaction xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/DTO">
<Title>XML GM Broker Transaction (REST Service)</Title>
<Description>XML GM Broker Transaction (REST Service)</Description>
<TransactionType>1</TransactionType>
<Partner>PartnerId>1234</PartnerId></Partner><Buyer>
<Email>[email protected]</Email><Initiator>false</Initiator>
<CompanyChk>false</CompanyChk><AutoAgree>true</AutoAgree>
<AgreementChecked>true<AgreementChecked></Buyer>
<Seller><Email>[email protected]</Email><Initiator>false</Initiator>
<CompanyChk>false</CompanyChk><AutoAgree>true<AutoAgree>
<AgreementChecked>true</AgreementChecked></Seller><Broker>
<Email>[email protected]</Email><Initiator>true</Initiator>
<CompanyChk>true<CompanyChk><AutoAgree>true</AutoAgree>
<AgreementChecked>true</AgreementChecked></Broker>
<LineItems>
<LineItem>
<ItemName>syam Milestone 1<ItemName>
<Description>Description of Milestone 1</Description>
<Quantity>1</Quantity>
<Price>1670</Price>
<Accept>true</Accept>
<SellComm>100<SellComm>
<BuyComm>50</BuyComm>
</LineItem>
<LineItem>
<ItemName>syam MIlestone 2</ItemName>
<Description>Description of MIlestone 2<Description>
<Quantity>1</Quantity>
<Price>1450</Price>
<Accept>true</Accept>
<SellComm>100</SellComm>
<BuyComm>50</BuyComm>
<LineItem>
</LineItems>
<EscrowPayment>0</EscrowPayment><ShipmentFee>0</ShipmentFee>
<ShipmentPayment>0</ShipmentPayment>
<InspectionLength>6</InspectionLength><Currency>USD<Currency>
<Fulfillment>1</Fulfillment><Disclosure>1</Disclosure>
<BrokerCommissionPayee>Buyer</BrokerCommissionPayee>
<BrkCommissionBuyerPortion>18.1<BrkCommissionBuyerPortion>
<BrkCommissionSellerPortion>19.1</BrkCommissionSellerPortion>
<CommissionType>1<CommissionType>
<SettlementAuthorizationToken>9ACA7889-8A9A-4288-8E28-C325ACD953DB<SettlementAuthorizationToken><InitiationDate>2015-05-15<InitiationDate<TransactionLocked>true</TransactionLocked<PartnerTransID>4286<PartnerTransID><TermsLocked>true<TermsLocked>
<AllowReject>true</AllowReject> </Transaction>';
print curl_dwonload('https://stgsecureapi.escrow.com/apiTransaction',$xmldataFull);//Function for CURL
function curl_dwonload($Url,$request)
{
if (!function_exists('curl_init')){
die('Sorry cURL is not installed!');
}
try {
$url = $Url;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_USERPWD, "[email protected]:broker_password");// Must enter username and password
curl_setopt($ch, CURLOPT_POSTFIELDS,$request);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$header = array();
$header[]="Content-Type: application/xml";
$header[] = "POST /transaction HTTP/1.1";
$header[]= "Accept:application/xml";
$header[] = "Host: api.escrow.com";
//$header[] = "Authorization: Basic T3BhbmFrOlRlc3QxMjM0";
$header[] = "Content-Length: ".strlen($request);
$header[] = "Connection: close";
curl_setopt ($ch, CURLOPT_HTTPHEADER, $header);
//echo $ch;
$data = curl_exec($ch);
return $data;
}
catch (Exception $e) {
echo $e->getMessage();
$responseBody = '';
return "error";
}
}
Успешное сообщение с идентификатором аутентификации (Session Id):
HTTP / 1.1 100 Продолжить HTTP / 1.1 201 Создано Cache-Control: без кэша Pragma: без кэша Content-Length: 271 Content-Type: application / xml; charset = utf-8 Истекает: -1 Сервер: Microsoft-IIS / 8.0 X-AspNet-версия: 4.0.30319 X-Powered-By: ASP.NET Дата: сб, 16 мая 2015 13:14:09 GMT Соединение: закрыть Успешный 646494
Этот идентификатор сеанса 646494 используется для получения деталей транзакции из сделки.
Я использовал приведенный ниже код для этого в формате JSON
$requeste = '{
"Title": "REST DN test transaction (JSON)",
"Description": "REST DN test transaction (JSON)",
"TransactionType": 0,
"Partner": {
"PartnerId": 1234
},
"Buyer": {
"Email": "[email protected]",
"Initiator": false,
"CompanyChk": false,
"AutoAgree": false,
"AgreementChecked": false
},
"Seller": {
"Email": "[email protected]",
"Initiator": true,
"CompanyChk": false,
"AutoAgree": false,
"AgreementChecked": false
},
"LineItems": [
{
"ItemName": "test.com",
"Description": "DN description",
"Quantity": 1,
"Price": 2000,
"Accept": true,
"SellComm": 9.1,
"BuyComm": 10.1,
}],
"EscrowPayment": 0,
"ShipmentFee": 0,
"ShipmentPayment":0,
"DomainNameType": 0,
"InspectionLength": 6,
"Currency": "USD",
"Fulfillment": 2,
"CommissionType": 1,
"InitiationDate": "2014-04-15",
"TermsLocked": true,
"AllowReject": true
}';
print curl_dwonload('https://stgsecureapi.escrow.com/api/Transaction',$requeste);//Function for CURL
function curl_dwonload($Url,$request)
{
if (!function_exists('curl_init')){
die('Sorry cURL is not installed!');
}
try {
$url = $Url;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_USERPWD, "emailid:password");// Must enter username and password
curl_setopt($ch, CURLOPT_POSTFIELDS,$request);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt ($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json; Charset=UTF-8'));
//echo $ch;
$data = curl_exec($ch);
echo $data;
}
catch (Exception $e) {
echo $e->getMessage();
$responseBody = '';
return "error";
}
}
Проверьте ниже ссылку на YouTube тоже.
Да, они действительно должны добавить детали аутентификации в свои остальные API-интерфейсы. Я использовал запросы Python для авторизации:
response = requests.post(url, data=simplejson.dumps(payload), headers=headers,auth=(username,password))
print "Response: "+str(response)
print "Response: "+str(response.headers)
print "Response: "+str(response.content)