2011-04-11 65 views
0

我一直在掙扎幾個小時,無法包裝我的頭周圍地點/如何調用一個PHP函數插入訂單詳細信息到用戶點擊購買按鈕(做所以在這一點上,我可以跟蹤轉到Paypal的訂單,然後放棄)。插入MySQL時POST表單到PayPal

我以爲把它放在<form action=>標記(例如,<form action='addToMySQL.php' method='post'>),但那是PayPal網址的地方,是的?函數必須運行在服務器端,所以不能使用js ...所以...如何做到這一點?

cURL已經被建議,我已經看過它建議之前,但用戶仍然會被重定向到貝寶的付款頁面,然後返回到我的網站?任何人都可以提出相關的網絡教程?

我是新來web編程,所以細節將不勝感激。創建表單

功能被髮送到PayPal是:

function create_paypal_checkout { 
return " 
<form action='".PAYPAL_URL."' method='post'> 
    <input type='hidden' name = 'business' value='".PAYPAL_ID."' /> 
    <input type='hidden' name = 'cmd' value='_cart' /> 
    <input type='hidden' name = 'upload' value='1' /> 
    <input type='hidden' name = 'currency_code' value='USD' /> 
    <input type='hidden' name = 'lc' value='US' /> 
    <input type='hidden' name='rm' value='2' /> 
    <input type='hidden' name='cancel_return' value='http://www.mydomain.com/'> 
    <input type='hidden' name='notify_url' value='http://www.mydomain.com/ipn-listener.php'> 
    <input type='hidden' name='return' value='http://www.mydomain.com/thankyou.php?custIP=".$custip."' /> 

    " . render_shopping_cart($shopping_cart) . " 

<table class='formBuyButton'> 
<tr id='sc_total'> 
    <td>&nbsp;</td> 
    <td>&nbsp;</td> 
    <td id='ppbutt'> 
     <input type='image' name='submit' src='https://www.paypalobjects.com/WEBSCR-640-20110306-1/en_US/i/btn/btn_buynowCC_LG.gif' border='0' alt='PayPal - Buy Now' /> 
    </td> 
</form></tr></table>" ; 
} 
+0

你想要的是'回傳'。表單直接提交到PayPal,然後Paypal連接到您的服務器以傳遞交易詳情。如果沒有額外的後臺處理,通過CURL將數據重新提交給PayPal,您嘗試執行的操作將無法正常進行。 – 2011-04-11 15:22:02

+0

我有PayPal的IPN系統正常工作(所有4個通信),並且還有thankyou.php登陸頁面,並且返回的$ _POST值被解析並且mysql表被更新。但是,這些僅在用戶完成貝寶交易時纔會採取行動。我也希望跟蹤從未完成的訂單,所以在初次提交給貝寶時需要輸入到mysql。我對CURL並不熟悉 - 那麼在這種情況下要走的路呢? – user674073 2011-04-11 15:31:44

+0

我不知道貝寶付款過程的細節,但基本上,您必須首先發布到您的網站以捕獲數據,然後重定向/重新發布到貝寶。你如何做到這一點取決於你。 CURL從一臺服務器到另一臺服務器執行http請求的一種方式,但不是唯一的選擇。 – 2011-04-11 15:44:49

回答

1

我有同樣的問題,我解決它使用AJAX。我所做的是在將表單提交給PayPal之前使用ajax調用一個php腳本。在這裏,我使用jquery的post函數,因爲它更容易。你需要有jQuery的某處並指向它。當用戶提交表單時,首先調用mycall(),如果它返回true,則表示它提交給PayPal的表單。

<script type="text/javascript" src="jquery-1.4.2.min.js"></script> 
<script type="text/javascript"> 
    function mycall() { 
     $.post('addToMySQL.php', {...}); // Replace ... with arguments 
     return true; 
    } 
</script> 

<form action='".PAYPAL_URL."' method='post' onSubmit='return mycall();'> 
+0

這看起來正是我想要的。謝謝。我對這一切都很陌生:究竟是什麼觸發了mycall()函數?一旦生成視圖,函數是否正在運行並偵聽POST事件?我有點不確定{... arguments ...}可能是什麼樣子:它只是一個以逗號分隔的$ vars列表,如{$ custip,$ numitems,$ itemstring,$ totalcost}? – user674073 2011-04-11 16:26:56

+0

WHUPS,觸發很明顯,我只是錯過了它。我現在看到它在表單動作中被觸發:onSubmit ='return mycall();'完美的例子與優秀的細節;謝謝。 – user674073 2011-04-11 16:32:31

+0

有關發佈功能的詳細信息,請參閱http://api.jquery.com/jQuery.post/。要小心,這是Javascript,而不是PHP。格式爲{name:value,name:value}。使用<?php echo $ myvar; ?>如果你需要從PHP獲取值, – 2011-04-11 16:39:27