在PHP中获取Paypal支付的回调

时间:2016-01-13 18:53:22

标签: php paypal

我有这段代码:

<form action="<?php echo $paypal_url; ?>" method="post" name="frmPayPal1">
    <input type="hidden" name="_token" value="{{ csrf_token() }}">
    <input type="hidden" name="business" value="<?php echo $paypal_id; ?>">
    <input type="hidden" name="cmd" value="_xclick">
    <input type="hidden" name="item_name" value="Suscripcion 1 Mes">
    <input type="hidden" name="userid" value="{{ Auth::User()->id }}">
    <input type="hidden" name="amount" value="0.1">
    <input type="hidden" name="currency_code" value="EUR">
    <input type="hidden" name="handling" value="0">
    <input type="hidden" name="cancel_return" value="http://betea.cf/cancel">
    <input type="hidden" name="return" value="http://betea.cf/success">
    <input type="hidden" name="invoice" value="<?php echo $random ?>">
    <input type="image" src="https://www.sandbox.paypal.com/es_ES/i/btn/btn_buynowCC_LG.gif" border="0" name="submit" alt="PayPal - La manera mas segura de comprar online!">
    <img alt="" border="0" src="https://www.sandbox.paypal.com/es_ES/i/scr/pixel.gif" width="1" height="1">
    <input name="notify_url" value="http://betea.cf/success" type="hidden">
</form>

在成功的过程中,这个:

    $id = $_POST['userid'];
    $fecha = Carbon::now()->addMonths(1);
    User::where('id', $id)
        ->update(['role' => 'premium', 'expire' => $fecha]);

但是,当PayPal取得成功时,表示userid不存在。如何将自定义变量传递给付款并获得成功?

1 个答案:

答案 0 :(得分:1)

IPN确实是交易发生后更新系统的最佳方式,但您最大的问题是您无法在表单中添加自己的字段名称。 &#34;用户ID&#34;对PayPal系统没有任何意义,因此它将被忽略。

它们提供了一个字面上称为自定义的自定义字段。在该字段中,您可以包含最多256个字符的任何值,这样您就可以在那里传递您的ID,然后它会返回$ _POST [&#39; custom&#39;]。

但是,再次使用IPN进行事后处理确实更好。