iT邦幫忙

0

php code

php
  • 分享至 

  • twitterImage

目前共有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;

有哪裡需要修改的呢?

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

4
wiseguy
iT邦超人 1 級 ‧ 2014-01-12 21:32:29
最佳解答

問題一,當然是把 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 相關知識

fillano iT邦超人 1 級 ‧ 2014-01-13 09:54:04 檢舉

我想你在問問題時最好先提示一下哪個網頁在哪個網站,不然恐怕方法完全不同。你問問題時完全沒提到paypal阿。

另外,其實用GET(url)傳參數、加不加密等並不是問題,關鍵在怎麼驗證,這就要看paypal怎麼做了。不論是成功或失敗,他回傳的參數是否可以做驗證,確保資訊正確行?你有先了解整個交易流程嗎?

wiseguy iT邦超人 1 級 ‧ 2014-01-14 15:33:31 檢舉

joey09533225提到:
因為資料送去paypal的時候就是已經需要將所有的資料給一次送出去

既然要跟 paypal 整合,那就參考 paypal 的手冊就行了,怎麼自己在亂摸索呢?
https://developer.paypal.com/webapps/developer/docs/api/

賽門 iT邦超人 1 級 ‧ 2014-01-14 15:50:53 檢舉

wiseguy提到:
怎麼自己在亂摸X呢?

偷笑

4
dasu88
iT邦研究生 5 級 ‧ 2014-01-12 21:25:42

問題一、使用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');

謝謝你的回答

weiclin iT邦高手 4 級 ‧ 2014-01-13 01:19:10 檢舉

你不用去"插入"什麼東西在那兩個頁面
只要在你一開始收到 amount 與 custom 的時候紀錄一份在 server
然後等到使用者回到 success 或是 failure 時, 再把 server 那邊的紀錄取出

session 就是用來在 server 紀錄與讀取資料的一種方法
應該隨便一本入門書都會教 session, 建議你先去看一看

我要發表回答

立即登入回答