file_get_contents实现POST数据,https

如题,不考虑curl的方法,POST给接口数据,可是接口获取不到或者一直返回参数有问题。

贴一下代码:

    $POSTFIELDS = array("receipt-data" => $receipt_data);    //
    $POSTFIELDS = json_encode($POSTFIELDS);    // 注释了也没用
    $url = "https://sandbox.itunes.apple.com/verifyReceipt";

    $context = stream_context_create(array(
        'http' => array(
            'method'  => 'POST',
            'header'  => "Content-type: application/x-www-form-urlencoded",
            'content' => http_build_query($POSTFIELDS),
            'timeout' => 20,
        )
    ));
    return file_get_contents($url, false, $context);

$receipt_data数据格式是正确的,因为用curl测试可以返回正确信息。

但是file的话,无论如何总是返回参数不对,不知道哪里的问题。

回复
阅读 6k
3 个回答

楼上说的是没错,针对这个问题,其实是跟苹果支付接口交互,传输数据的时候出错了。

http_build_query不需要

先看看服务端获取到的是什么。。。你这个传的是json?然后又是表单格式的POST。。。没有key=>value,后端能取到的也只能是json格式的字符串

宣传栏