나는 fastspring 구독 결제 처리 설정하려고합니다.PHP에서 cURL - 내가 seperatly 작동하지만 두 번째 결합 된 두 번째 함수는 첫 번째 호출에서 결과를 출력합니다
나는 2 개의 기능을 포함하는 다음 파일을 가지고 있습니다. 첫 번째 API는 cURL을 통해 API를 호출하고 기본 주문 정보를 가져옵니다. 두 번째 함수는 order 함수에 의해 반환 된 subscription reference를 열거하고 subscription 정보를 얻습니다.
이 두 기능은 모두 별도로 실행하면 올바르게 작동합니다. 하지만 함께 실행하면 두 번째 함수가 작동하지 않고 첫 번째 cURL 호출의 결과를 출력하고 있습니까?
<?php
//order reference..
$OrderReference = 'QUI110930-3371-94207B';
//UNCOMMENT THIS IF JUST WANT TO TEST getSubscriber function on its own..
//$SubscriptionReference1 = 'QUI110926-3371-68125S';
getOrder ($OrderReference);
getSubscription ($SubscriptionReference1);
//test our variaables for getOrder..
echo '<br/>1:' . $OrderReferrer;
echo '<br/>2:' . $beginDate;
echo '<br/>3:' . $display;
echo '<br/>4:' . $value;
echo '<br/>5:' . $productDisplay;
echo '<br/>7:' . $SubscriptionReference;
echo '<br/><br/><br/>';
//test our variaables for getSubscriber
echo '<br/>1:' . $nextPeriodDate;
echo '<br/>2:' . $subscriptionUrlDetail;
echo '<br/><br/><br/>';
print_r ($test);
function getOrder($OrderReference) {
$username = 'my_username';
$pass = 'my_password';
//Initialize handle and set options
$payload = '-i -X GET -u ' . $username . ':' . $pass;
$requrl = 'https://api.fastspring.com/company/quizba/order/' . $OrderReference;
define ('XML_PAYLOAD', $payload);
define ('XML_POST_URL', $requrl);
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, XML_POST_URL);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_TIMEOUT, 10);
curl_setopt ($ch, CURLOPT_USERPWD, $username . ':' . $pass);
curl_setopt ($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt ($ch, CURLOPT_HTTPHEADER, array ('Content-type: Application/xml'));
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
//Execute the request and also time the transaction
$result = curl_exec ($ch);
if ($result == '') {
$result = curl_exec ($ch);
}
//Check for errors
if (curl_errno ($ch)) {
$resultMsg = 'ERROR -> ' . curl_errno ($ch) . ': ' . curl_error ($ch);
} else {
$returnCode = (int) curl_getinfo ($ch, CURLINFO_HTTP_CODE);
switch ($returnCode) {
case 404 :
$resultMsg = 'ERROR -> 404 Not Found';
break;
case 200 :
break;
default :
$resultMsg = 'HTTP ERROR -> ' . $returnCode;
break;
}
}
//Assign the variables..
$resultArray = simplexml_load_string ($result);
global $OrderReferrer;
$OrderReferrer = $resultArray->referrer [0];
global $beginDate;
$beginDate = $resultArray->statusChanged [0]; //needs to be modified..
global $display;
$display = $resultArray->status [0];
global $productDisplay;
$productDisplay = $resultArray->orderItems->orderItem [0]->productDisplay [0];
global $value;
$value = $resultArray->total [0];
global $SubscriptionReference;
$SubscriptionReference = $resultArray->orderItems->orderItem [0]->subscriptionReference [0];
//Close the handle
curl_close ($ch);
}
//get the subscription details
function getSubscription($SubscriptionReference) {
$username = 'my_username';
$pass = 'my_password';
$payload = '-i -X GET -u ' . $username . ':' . $pass;
$requrl = 'https://api.fastspring.com/company/quizba/subscription/' . $SubscriptionReference;
define ('XML_PAYLOAD', $payload);
define ('XML_POST_URL', $requrl);
$newCh = curl_init();
curl_setopt ($newCh, CURLOPT_URL, XML_POST_URL);
curl_setopt ($newCh, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($newCh, CURLOPT_TIMEOUT, 10);
curl_setopt ($newCh, CURLOPT_USERPWD, $username . ':' . $pass);
curl_setopt ($newCh, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt ($newCh, CURLOPT_HTTPHEADER, array ('Content-type: Application/xml'));
curl_setopt ($newCh, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt ($newCh, CURLOPT_SSL_VERIFYPEER, 0);
//Execute the request and also time the transaction
$newResult = curl_exec ($newCh);
if ($newResult == '') {
$newResult = curl_exec ($newCh);
}
//Check for errors
if (curl_errno ($newCh)) {
$newResultMsg = 'ERROR -> ' . curl_errno ($newCh) . ': ' . curl_error ($newCh);
} else {
$returnCode = (int) curl_getinfo ($newCh, CURLINFO_HTTP_CODE);
switch ($returnCode) {
case 404 :
$newResultMsg = 'ERROR -> 404 Not Found';
break;
case 200 :
break;
default :
$newResultMsg = 'HTTP ERROR -> ' . $returnCode;
break;
}
}
//Assign the variables..
global $test;
$test = $newResult;
//$newResultArray = new SimpleXMLElement($newResult, NULL, FALSE);
$newResultArray = simplexml_load_string ($newResult);
global $nextPeriodDate;
$nextPeriodDate = $newResultArray->nextPeriodDate [0]; //needs to be modified..
global $subscriptionUrlDetail;
$subscriptionUrlDetail = $newResultArray->customerUrl [0];
//Close the handle
curl_close ($newCh);
}
실제로 함수에서'return'을 사용해야합니다. 항상 전역 변수 사용을 막으십시오. –