如何在paypal ipn中获取我添加的隐藏字段?

时间:2017-07-15 17:51:56

标签: php laravel paypal paypal-ipn

我对此感到困惑。我没有得到我的这两个隐藏的字段其余的我获得所有数据。谁能帮助我,我做错了什么。这是我的paypal表格: -

<form id="paypalForm" action="<?php echo $paypalURL; ?>" target="_blank" name="paypalform" method="post" style="display: none;" >
 <!-- Identify your business so that you can collect the payments. -->
 <input type="hidden" name="business" value="<?php echo $paypalID; ?>">
 <!-- Specify a Buy Now button. -->
 <input type="hidden" name="cmd" value="_xclick">
 <!-- Specify details about the item that buyers will purchase. -->
 <input type="hidden" name="item_name" value="{{ $serviceName }}">
 <input type="hidden" name="item_number" value="<?php echo $cartId; ?>">
 <input type="hidden" name="amount">
 <input type="hidden" name="currency_code" value="GBP">
 <input type="hidden" name="auto_renew" value="no">
 <input type="hidden" name="email_pref" value="no">
 <input type='hidden' name='notify_url' value="{{ url('/ipn-paypal-success') }}">
 <input type='hidden' name='cancel_return' value="{{ url('/paypal-cancel') }}">
 <input type='hidden' name='return' value="{{ url('/paypal-sucess') }}">
 <div class="form-group">
     <label  class="col-xs-3 col-form-label"></label>
     <div class="col-xs-9">
         <input id="paypalsubmit" type="button" value="Proceed to Payment"  class="btn btn-payment-btn" /> 
     </div>
 </div>
 </form>

以下是我新增的两个隐藏字段:auto_renew和email_pref 但是当我在电子邮件中得到答复时,我不会得到这两个。这是我的Ipn功能: -

public function ipnPaypalSucess(){
    $data = $_REQUEST;
    mail('my-test-email@gmail.com', 'array data', '<pre>'.print_r($data, true).'</pre>');    
}

我正在使用laravel 5.2框架。请帮助我,我做错了什么

2 个答案:

答案 0 :(得分:0)

$_REQUEST的内容和顺序受php.ini中variables_order指令的影响

为什么你不使用Laravel Request?

确保控制器的顶部有use Illuminate\Http\Request;

public function ipnPaypalSucess(Request $request){
    return $request->all();
}

如果显示所有输入字段,请将代码替换为:

public function ipnPaypalSucess(Request $request){
    $data = $request->all();
    mail('my-test-email@gmail.com', 'array data', '<pre>'.print_r($data, true).'</pre>');    
}

答案 1 :(得分:0)

您不能只将自己的字段添加到PayPal按钮,并希望这些字段返回IPN。有一个字段意味着这个,它的字面意思是“自定义”。所以这就是你需要做的事情:

<input type="hidden" name="custom" value="custom value(s) go here" />

无论你在该领域放置什么,都会在你的IPN听众的$_REQUEST['custom']中回来。

当您有多个字段时,可以在自定义参数中放置一个NVP字符串,然后在IPN脚本中将其解析出来。或者,您可以将所有自定义数据存储在数据库中,然后在自定义参数中传递记录ID,以便您可以根据IPN脚本中的记录ID将数据拉回。