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

Posted

技术标签:

【中文标题】如何在贝宝 ipn 中获取我添加的隐藏字段?【英文标题】:how to get the my added hidden fields in paypal ipn? 【发布时间】:2017-12-20 15:04:18 【问题描述】:

我陷入了困境。我没有得到我的这两个隐藏字段,其余的我得到了所有数据。谁能帮助我我做错了什么。这是我的贝宝表格:-

<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 框架。请帮助我做错了什么

【问题讨论】:

【参考方案1】:

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

为什么不使用 Laravel 请求?

确保控制器顶部有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>');    

【讨论】:

【参考方案2】:

您不能只是将自己的字段添加到 PayPal 按钮,然后期望这些字段会在 IPN 中返回。有一个专门用于此的字段,它的字面意思是“自定义”。所以这就是你需要做的:

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

您在该字段中放置的任何内容都会在您的 IPN 侦听器中返回 $_REQUEST['custom']

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

【讨论】:

以上是关于如何在贝宝 ipn 中获取我添加的隐藏字段?的主要内容,如果未能解决你的问题,请参考以下文章

当用户没有在贝宝上取消他的个人资料时,使用 Txn_Type="recurring_payment_profile_cancel" 获取 IPN 通知

在贝宝结帐菜单中隐藏“添加借记卡或信用卡”选项

如何在贝宝的 notify_url 页面中获取交易详情

如何在贝宝沙盒中获取身份令牌?

如何在贝宝支付中完成待处理交易

如何解决贝宝沙箱中的此错误