目前共有a.php . Gateway.php . success.php . failure四個檔案
a.php:
連接到此會插入Gateway裡面的表格,
表格裡面有兩個input欄位,
會輸出兩個數值$custom . $amount,
然後會將這兩個數值輸出到另外的網頁,
網頁可以用$_POST['amount'].$_POST['custom']來調用。
如果在該網站付款成功會(return) 到 success.php 如失敗會(cancel_return) 到 failure.php
問題如下:
如何讓success.php 或是failure.php接收到 amount 與 custom的值(並不是直接將數值發到這裡的success or failure網頁 而是要照上述程序)
額外的問題:
如何在php中 把$_POST['value'] 這種數值做加減乘除?
舉例如下:
$a = $_POST['test'];
$b = $a*5;
有哪裡需要修改的呢?
問題一,當然是把 amount 與 custom的值 加密,再傳送到 success or failure網頁,也只有 success or failure網頁知道該怎麼解密,要是收到沒加密的 amount 與 custom的值,就表示是別人亂發的。
問題二,把 $a 限制在你允許的值域即可。也就是對 $a 做檢查啦,譬如 $a 只是單純要求數值,那就做這樣的檢查即可
$a = $_POST['test'];
<pre class="c" name="code">if (is_numeric($a))
$b = $a*5;
else
echo "$a 不合法";
hi, 問題是:
a.php將數值傳出去給paypal是要正常的,但是paypal那邊又無法更改他的php,我要如何讓這兩組變數加密後傳到success or failure?(或是post傳變數也是可以)
剛學幾天 還反應不過來 代碼看不明白! 謝謝你的回答
Joey!
補充一下,
因為資料送去paypal的時候就是已經需要將所有的資料給一次送出去,我的意思是說像下面這兩個代碼這樣
<pre class="c" name="code">$myPaypal->addField('return', 'http://123.net/paypal/paypal_success.php');
$myPaypal->addField('cancel_return', 'http://123.net/paypal/paypal_failure.php');
必須在還不知道結果的情況下,就必須要先決定好成功或失敗去哪個頁面。但是又不可能直接將數值放在網址後面,這樣誰都能直接再success.php執行指令了。
還麻煩您給我更詳細一點的代碼
像是
製作一個加密變數名為x,然後就放在return的網頁後面
<pre class="c" name="code">$myPaypal->addField('return', 'http://123.net/paypal/paypal_success.php&code=$x');
(不知道我這樣代碼是不是寫錯了無碼使用,我想你應該懂我的意思。)
然後如果付款成功就會跳到那個頁面並且解密然後執行指令。
我可能"需要"完整一點的代碼example!!! 再次感恩
為何不試試看sessions
<pre class="c" name="code">
<?php
session_start();
$_SESSION['num']= 100;
echo $_SESSION['num'];
?>
Sessions 相關知識
我想你在問問題時最好先提示一下哪個網頁在哪個網站,不然恐怕方法完全不同。你問問題時完全沒提到paypal阿。
另外,其實用GET(url)傳參數、加不加密等並不是問題,關鍵在怎麼驗證,這就要看paypal怎麼做了。不論是成功或失敗,他回傳的參數是否可以做驗證,確保資訊正確行?你有先了解整個交易流程嗎?
joey09533225提到:
因為資料送去paypal的時候就是已經需要將所有的資料給一次送出去
既然要跟 paypal 整合,那就參考 paypal 的手冊就行了,怎麼自己在亂摸索呢?
https://developer.paypal.com/webapps/developer/docs/api/
wiseguy提到:
怎麼自己在亂摸X呢?
問題一、使用session
問題二、只要傳過來的值是數字,就可以運算。
HI,
剛學幾天 還反應不過來!
請問我要如何在這下面兩組代碼中插入($custom + $amount)呢?
<pre class="c" name="code">$myPaypal->addField('return', 'http://123.net/paypal/paypal_success.php');
$myPaypal->addField('cancel_return', 'http://123.net/paypal/paypal_failure.php');
謝謝你的回答
你不用去"插入"什麼東西在那兩個頁面
只要在你一開始收到 amount 與 custom 的時候紀錄一份在 server
然後等到使用者回到 success 或是 failure 時, 再把 server 那邊的紀錄取出
session 就是用來在 server 紀錄與讀取資料的一種方法
應該隨便一本入門書都會教 session, 建議你先去看一看