我正在努力将付款/订阅解决方案(更具体地说,来自巴西的MoIP付款)实施到Codeigniter项目中。每次订阅以任何方式创建或更改时(如付款时),它都会向预先配置的URL发送通知。
我的问题是:我似乎无法在项目的指定URL /控制器上收到通知。当前的付款方式以类似的方式工作,收到的通知没有任何问题。
我已经使用test-cors.org进行了测试,对于POST和GET方法,结果是200 OK。手动访问该方法会生成日志输出。我尝试在htaccess文件中设置Header set Access-Control-Allow-Origin "*"
,在构造中设置header("Access-Control-Allow-Origin: *");
但没有运气。改变htaccess实际上导致在test-cors.org上返回XHR代码0。
我创建了一个请求文件夹,向您展示请求的结构:http://requestb.in/1l3wms21?inspect(屏幕截图:http://i.imgur.com/kTVmJyb.png)。
可能是什么问题?我已经没想完了。这是接收器中的代码:
function process_notification() {
log_message('info', 'http request: ' . $_SERVER['REQUEST_METHOD']);
$data = file_get_contents("php://input");
$findme = "{";
$pos = strpos($data, $findme);
if ($pos === 0) {
$ponteiro = fopen(FCPATH . "data.txt", "w");
fwrite($ponteiro, $data);
fclose($ponteiro);
}
if (filesize('data.txt')) {
$ponteiro = fopen("data.txt", "r");
$dataTXT = fread($ponteiro, filesize("data.txt"));
echo("JSON: [");
print_r($dataTXT);
echo("]<br>");
echo(FCPATH . "data.txt");
fclose($ponteiro);
}
echo(print_r($_POST));
log_message('info', '');
log_message('info', 'notification received');
log_message('info', print_r($_POST, true));
log_message('info', '');
}
编辑:添加日志
这是使用浏览器访问时的浏览器输出。控制台是空的。
Array ( ) 1
以下是通过浏览器访问时的codeigniter日志:
INFO - 2014-08-22 16:19:03 --> http request: GET
INFO - 2014-08-22 16:19:03 -->
INFO - 2014-08-22 16:19:03 --> notification received
INFO - 2014-08-22 16:19:03 --> Array
(
)
INFO - 2014-08-22 16:19:03 -->
通过订阅触发通知不会输出任何日志。无论浏览器还是远程访问,data.txt
文件都是空的。