我正在尝试通过表单操作帖子与Magento中的第三方电子邮件服务集成,但它似乎不起作用。我希望消除在将其发送给第三方服务部门进行调查之前我可能在Magento端出现某种错误的可能性。
首先,这是我的HTML:
<form action="/external/multisubscribe.php" method="post" width="600px" style="margin: 0 auto;">
<table style="text-align: center; vertical-align: middle; width: 100%;">
<tbody>
<tr>
<td style="text-align: center; vertical-align: middle; width:25%; padding: 0 20px 0 20px;">
<a href="www.example.com/pilotshop/">
<img style="width: 100%; margin: 0 auto;" src="{{media url='wysiwyg/spslogo.png'}}" alt="Pilot Shop" />
</a>
</td>
<td style="text-align: center; vertical-align: middle; width:25%; padding: 0 20px 0 20px;">
<a href="">
<img style="width: 60%; margin: 0 auto;" src="{{media url='wysiwyg/Aflogo.jpg'}}" alt="" />
</a>
</td>
<td style="text-align: center; vertical-align: middle; width:25%; padding: 0 20px 0 20px;">
<a href="">
<img style="width: 60%; margin: 0 auto;" alt="iPad Pilot News" src="/files/2016/03/iPad-Pilot-News-header-544-white-300x99.png" />
</a>
</td>
<td style="text-align: center; vertical-align: middle; width:25%; padding: padding: 0 20px 0 20px;">
<a href="">
<img style="width: 50%; margin: 0 auto;" alt="Student Pilot News" src="/media/wysiwyg/Student-Pilot-News-final-140.png" />
</a>
</td>
</tr>
<tr>
<td style="text-align: center; vertical-align: middle; width:25%; padding: 0 20px 0 20px;">
<p>The online magazine where readers are pilot in command. Opinion, analysis, tips and debate.</p>
</td>
<td style="text-align: center; vertical-align: middle; width:25%; padding: 0 20px 0 20px;">
<p>The online magazine where readers are pilot in command. Opinion, analysis, tips and debate.</p>
</td>
<td style="text-align: center; vertical-align: middle; width:25%; padding: 0 20px 0 20px;">
<p>Your #1 source for tips, tricks, videos and quizzes about flying with the iPad.</p>
</td>
<td style="text-align: center; vertical-align: middle; width:25%; padding: 0 20px 0 20px;">
<p>Everything new pilots need, from free videos to a flight school directory.</p>
</td>
</tr>
<tr>
<td style="text-align: center; vertical-align: middle; width:25%;">
<label>
<input style="text-align: center; vertical-align: middle; margin: 0 auto; display: inline-block;" name="pilotshop" type="checkbox" /> Sign Me Up
</label>
</td>
<td style="text-align: center; vertical-align: middle; width:25%;">
<label>
<input style="text-align: center; vertical-align: middle; margin: 0 auto; display: inline-block;" name="airfacts" type="checkbox" /> Sign Me Up
</label>
</td>
<td style="text-align: center; vertical-align: middle; width:25%;">
<label>
<input style="text-align: center; vertical-align: middle; margin: 0 auto; display: inline-block;" name="ipad" type="checkbox" /> Sign Me Up
</label>
</td>
<td style="text-align: center; vertical-align: middle; width:25%;">
<label>
<input style="text-align: center; vertical-align: middle; margin: 0 auto; display: inline-block;" name="learntofly" type="checkbox" /> Sign Me Up
</label>
</td>
</tr>
</tbody>
</table>
<div style="text-align:center;vertical-align:center;width:100%;margin-top:3.0em;">
<input style="text-align: center; vertical-align: middle; margin: 0 auto;" name="email" placeholder="Enter Your Email" type="email" />
<button style="text-align: center; vertical-align: middle; margin: 0 auto;margin-top:1.200em;" type="submit" name="submit" title="Subscribe" class="button">Subscribe</button>
</div>
<input name="redirect" value="{{store url="email-subscribe-success"}}" type="hidden" />
<input name="action" value="subscribe" type="hidden" />
</form>
这是我的PHP for multisubscribe.php
<?php
include_once "../app/Mage.php";
if(isset($_POST['submit'])) {
$choices = array();
if (isset($_POST['airfacts'])) {
$choices[] = 'airfacts';
}
if (isset($_POST['ipad'])) {
$choices[] = 'ipad';
}
if (isset($_POST['learntofly'])) {
$choices[] = 'learntofly';
}
if (isset($_POST['pilotshop'])) {
$choices[] = 'pilotshop';
}
if (count($choices) == 0) {
echo "Please choose at least one subscription.";
} else {
$email = $_POST['email'];
$email = filter_var($email, FILTER_SANITIZE_EMAIL);
wpSubscription($choices, $email, $_POST['action']);
}
$redirect = $_POST['redirect'];
header('Location: ' . $redirect);
}
function wpSubscription($sites, $email, $action)
{
$mh = curl_multi_init();
$curl_reference_array = array();
$unsubscribe_url_array = array();
foreach ($sites as $site) {
if ($site =='pilotshop') {
$sh_param = array(
'UserName' => "", //Removed user for security purposes
'Password' => "" //Removed pass for security purposes
);
$authvalues = new SoapVar($sh_param, SOAP_ENC_OBJECT);
$headers[] = new SoapHeader("https://webservices.listrak.com/v31/",
'WSUser', $sh_param);
$soapClient = new SoapClient(
"https://webservices.listrak.com/v31/IntegrationService.asmx?WSDL",
array(
'trace' => 1,
'exceptions' => true,
'cache_wsdl' => WSDL_CACHE_NONE,
'soap_version' => SOAP_1_2
)
);
$soapClient->__setSoapHeaders($headers);
$params = array(
'WSContact' => array(
'EmailAddress' => $email,
'ListID' => '348377'
),
'ProfileUpdateType' => 'Overwrite',
'ExternalEventIDs' => '12182',
'OverrideUnsubscribe' => true
);
Mage::log($params, null, 'mylogfile.log');
try {
$rest = $soapClient->SetContact($params);
} catch (SoapFault $e) {
echo '<pre>';
print($e->getMessage());
echo '</pre>';
}
$listtracksend = true;
return $this;
}
else if ($action == 'subscribe' and in_array($sites, array('airfacts', 'ipad', 'learntofly'))) {
$url = "http://example.com/" . $site . "/?na=ajaxsub";
}
else if ($action == 'unsubscribe') {
$url = "/unsubscribe.php";
}
else {
return $this;
}
$fields = array(
'ne' => $email,
'site' => $site
);
$ch = curl_init($url);
if ($action == 'unsubscribe') {
$returntransfer = true;
} else {
$returntransfer = false;
}
$opts = array(
CURLOPT_POSTFIELDS => $fields,
CURLOPT_RETURNTRANSFER => $returntransfer
);
curl_setopt_array($ch, $opts);
curl_multi_add_handle($mh, $ch);
$curl_reference_array[] = $ch;
}
$active = null;
do {
$mrc = curl_multi_exec($mh, $active);
} while ($active > 0);
foreach ($curl_reference_array as $chref) {
$html = curl_multi_getcontent($chref);
$chu = curl_init($html);
$fields = array(
'ts' => time()
);
$opts = array(
CURLOPT_POSTFIELDS => $fields
);
curl_setopt_array($chu, $opts);
curl_exec($chu);
curl_close($chu);
curl_multi_remove_handle($mh, $chref);
}
curl_multi_close($mh);
return $this;
}
?>
答案 0 :(得分:0)
更改了这一行:
$headers[] = new SoapHeader("https://webservices.listrak.com/v31/",
删除https并且有效。怪异。
$headers[] = new SoapHeader("http://webservices.listrak.com/v31/",