gpt4 book ai didi

php - php 中的 cURL - 我有 2 个单独工作的函数,但当组合时,第二个函数输出第一个 cURL 调用的结果

转载 作者:搜寻专家 更新时间:2023-10-31 20:51:00 24 4
gpt4 key购买 nike

我正在尝试设置 fastspring 订阅付款处理。

我有以下包含 2 个函数的文件。第一个通过 cURL 调用他们的 API 并获取基本的订单信息。第二个传递订单函数返回的订阅引用并获取一些订阅信息。

这两个函数在单独运行时都能正常工作。但是当一起运行时,第二个函数不工作并输出第一个 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 );
}

最佳答案

因为您使用 define ( 'XML_POST_URL', $requrl ); 您无法使用它执行 2 个请求。

您不能使用定义覆盖,它将始终保留第一个值。除非您在该脚本之外的某个地方使用它(并且无法使用常规变量传输变量),否则您不应该使用 define。

define() 是在(例如)配置文件中使用的一个很好的函数,您可以在其中设置需要在许多其他地方使用的 URL。这些变量应该是常量,不应该改变。

注意:您不应使用全局变量,而应在数组或变量中返回函数值。

关于php - php 中的 cURL - 我有 2 个单独工作的函数,但当组合时,第二个函数输出第一个 cURL 调用的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7628983/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com