这是我的问题:
我需要将一些数据从CRM发送到另一个CRM。现在的问题是该URL必须是动态的,因为不幸的是,它具有不同的API密钥。
因此,假设我要发送一些数据,这些数据将基于位置而更改API密钥。最好举个例子:
$url = 'https://my_website/api/student/add';
$myvars = 'firstName=' . $new_array['firstName']
. '&lastName=' . $new_array['lastName']
. '&locationID=' . $new_array['locationID']
. '¤tStatus=' . $new_array['currentStatus'];
$apikey;
function apikey() {
if ($new_array['locationID'] == 1) {
$apikey = $toronto;
} elseif($new_array['locationID'] == 2) {
$apikey = $newyork;
} else {
$apikey = $rome;
}
}
$ch = curl_init( $url );
curl_setopt( $ch, CURLOPT_POST, 1);
curl_setopt( $ch, CURLOPT_POSTFIELDS, $myvars);
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt( $ch, CURLOPT_HEADER, 0);
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec( $ch );
第一件事:我应该在哪里添加$ apikey自动将其添加到URL的末尾?
我的字段来自另一个数组:
$new_array = [
'firstName' => $json_final['core']['firstname']['value'],
'lastName' => $json_final['core']['lastname']['value'],
]; ..
以此类推,你明白了。
正如我刚开始所说的,每个API密钥都是不同的:
$toronto = '123456';
$rome = '789101112';
以此类推。
因此,从本质上讲,我需要基于用户已经在我的网站上发送的表单构建动态URL,并且我希望将其定向到两个CRM。忽略第一个已经可以的情况,我需要创建第二个URL,以将具有动态功能的相同数据发布到另一个URL。
答案 0 :(得分:1)
这里有一个PHP函数可以完成您的工作:
$myvars = 'firstName=' . $new_array['firstName']
. '&lastName=' . $new_array['lastName']
. '&locationID=' . $new_array['locationID']
. '¤tStatus=' . $new_array['currentStatus'];
您可以为此使用http_build_query
:
$myvars = http_build_query($new_array);
关于该功能:
function apikey() {
if ($new_array['locationID'] == 1) {
$apikey = $toronto;
} elseif($new_array['locationID'] == 2) {
$apikey = $newyork;
} else {
$apikey = $rome;
}
}
它什么也没做。它不返回任何内容,也不解决函数scope外部定义的$apikey
。
我建议创建一个将locationID与API密钥关联的数组。我还建议从配置文件中加载该文件,这样,如果API密钥发生更改,您就不必更改代码。
$keys = [
1 => '123456',
2 => '789101112',
//etc.
];
然后,您可以使用$new_array
中的locationID进行引用。将其添加到数组中,然后构建查询。
$new_array['apiKey'] = $keys[$new_array['locationID']];
$myvars = http_build_query($new_array);
答案 1 :(得分:0)
如果我理解正确的话,这样的事情会做
function getApiKey($locationId) {
$apiKeys = [
1 => 12345, 2 => 6789... // key is the locationId and value is the api key
];
return !empty($apiKeys[$locationId]) ? $apiKeys[$locationId] : $apiKeys['defaultKey'];
}
$myvars = 'firstName=' . $new_array['firstName']
. '&lastName=' . $new_array['lastName']
. '&locationID=' . $new_array['locationID']
. '¤tStatus=' . $new_array['currentStatus']
. '&apikey=' . getApiKey($new_array['locationID']);