Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php PayPal IPN仅适用于模拟器,不适用于沙盒或live_Php_Paypal_Paypal Ipn_Jigoshop - Fatal编程技术网

Php PayPal IPN仅适用于模拟器,不适用于沙盒或live

Php PayPal IPN仅适用于模拟器,不适用于沙盒或live,php,paypal,paypal-ipn,jigoshop,Php,Paypal,Paypal Ipn,Jigoshop,我的脚本与ipn模拟器完美配合,但无法与沙箱事务配合使用。如果我将url更改为live站点,它将无法工作。模拟器将传入的post打印到文件中。使用事务时,不会发生任何事情。我怎样才能做到这一点 编辑:我的wordpress插件通过设置自定义通知url值来覆盖paypal的ipn。我尝试在Payment complete Jigoshop操作中使用我需要启动的函数,但$\u POST变量已更改或不存在。如果我用字符串填充这些字段,效果很好。这就是我需要开火的地方 $data = array();

我的脚本与ipn模拟器完美配合,但无法与沙箱事务配合使用。如果我将url更改为live站点,它将无法工作。模拟器将传入的post打印到文件中。使用事务时,不会发生任何事情。我怎样才能做到这一点

编辑:我的wordpress插件通过设置自定义通知url值来覆盖paypal的ipn。我尝试在Payment complete Jigoshop操作中使用我需要启动的函数,但$\u POST变量已更改或不存在。如果我用字符串填充这些字段,效果很好。这就是我需要开火的地方

$data = array();
$data['Name'] = $_POST['address_name'];
$data['Company'] = '';
$data['Address1'] = $_POST['address_street'];
$data['Address2'] = '';
$data['City'] = $_POST['address_city'];
$data['State'] = $_POST['address_state'];
$data['Zip'] = $_POST['address_zip'];
$data['Country'] = $_POST['address_country'];
$data['Ship_Method_MSID'] = '1STCLASS';
$data['SpecialInstr'] = $_POST['memo'];
$data['Items'] = array(array('Item_ESID' => 'EVENTBAG', 'Quantity' =>    intval($_POST['quantity'])));

$json_data = json_encode($data);
$post_data = array('AccountID' => 10019, 'SecretKey' ='jsjxb', 'Method' => 'AddShipment', 'JSON' => $json_data);

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'example.com');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
$returndata = curl_exec ($ch);
file_put_contents('test.txt', $returndata);
这就是我想到的:

$data = array();
$data['Name'] = $paypal_args['first_name'] . " " . $paypal_args['last_name'];
$data['Company'] = '';
$data['Address1'] = $paypal_args['address1'];
$data['Address2'] = $paypal_args['address2'];
$data['City'] = $paypal_args['city'];
$data['State'] = $paypal_args['state'];
$data['Zip'] = $paypal_args['zip'];
$data['Country'] = $paypal_args['country'];
$data['Ship_Method_MSID'] = '1STCLASS';
$data['SpecialInstr'] = '';
$data['Items'] = array(array('Item_ESID' => 'EVENTBAG', 'Quantity' => intval($paypal_args['quantity_1'])));

$json_data = json_encode($data);
$post_data = array('AccountID' => 10019, 'SecretKey' => 'z1', 'Method' => 'AddShipment', 'JSON' => $json_data);

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'example.com');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
$returndata = curl_exec ($ch);
file_put_contents('test.txt', $returndata);
来自:

if ($this->send_shipping=='yes') :
                    $paypal_args['no_shipping'] = 1;
                    $paypal_args['address_override'] = 1;
                    $paypal_args['first_name'] = $order->shipping_first_name;
        $paypal_args['last_name'] = $order->shipping_last_name;
        $paypal_args['address1'] = $order->shipping_address_1;
        $paypal_args['address2'] = $order->shipping_address_2;
        $paypal_args['city'] = $order->shipping_city;
        $paypal_args['state'] = $order->shipping_state;
        $paypal_args['zip'] = $order->shipping_postcode;
        $paypal_args['country'] = $order->shipping_country;

你说它不起作用是什么意思?您是否看到IPN正在被触发,但您的日志中有错误,或者您是说IPN根本没有被发送?您可以在PayPal帐户(live或sandbox)中检查IPN历史记录以进行双重检查。如果IPN未被发送,则您需要确保它已在您的卖家帐户配置文件中配置。我已启用它。我的历史记录或日志中没有显示任何内容。我读到一篇帖子说paypal不会发送到example.com/php/ipn.php,它需要是example.com/ipn.php,我今天回家后会试试。ipn模拟器工作正常。它将发送到您为它配置的任何URL,但您需要确保它在正确的帐户中配置。它在我的沙盒帐户中配置正确。我的网站是一个jigoshop Wordpress设置。Jigoshop以某种方式将ipn发送到它,即使我的paypal帐户设置为不同的内容。paypal ipn历史记录显示ipn被发送到jigoshop的侦听器,但不是我的。