2016-01-13 86 views
0

我有這樣的代碼:獲取Paypal付款的回調PHP

<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]); 

但現在貝寶去的成功,說userid不存在。我如何將自定義變量傳遞給付款並獲得成功?

+0

您使用的是IPN嗎? –

+0

不,我沒有使用它 – Sergio

+0

這是真的要去的方式,在網上查詢關於貝寶IPN的教程,然後在您的貝寶形式,你將能夠添加一個輸入,將有名稱「自定義」,你可以添加自定義值。然後,您會在IPN(即時付款通知)中告訴paypal查找一個php文件。在這個PHP文件中,您將能夠通過paypal生成的附加字段訪問對PayPal完成的整個發佈請求 –

回答

1

IPN確實是交易發生後更新系統的最佳方式,但您最大的問題在於您無法將自己的字段名添加到表單中。 「userid」對PayPal系統沒有任何意義,所以它會被忽略。

它們提供了一個字面上稱爲自定義的單個自定義字段。在該字段中,您可以包含任何您想要的值(最多256個字符),因此您可以在此處傳遞您的ID,然後它會返回$ _POST ['custom']。

儘管如此,使用IPN進行事後處理確實更好。