0

希望这个问题不要太天真...

我正在尝试实现The Giving Lab API,以允许我网站的用户向慈善机构捐款。

使用这样的 URL:

https://www.thegivinglab.org/api/donation/start?donationtype=0&amount=10&charityid=84ed3c54-6d8c-41c5-8090-f8ec800f45a7&returnurl=mywebsite.com/

用户被引导到捐赠页面,然后在捐赠完成后返回returnURL。

如果用户成功完成付款,我希望能够添加用户向我的数据库捐赠的金额。是否可以使用 returnURL 来执行此操作?即,我可以使用 mywebsite.com?q="amount_donated" 形式的 returnURL,然后使用它来更新我的数据库吗?

我可以看到这将允许某人通过在浏览器中输入 returnURL 来更新我的数据库。

有没有更好的方法来解决这个问题?

非常感谢。

4

1 回答 1

1

荷兰银行使用一种叫做 sha-sign 的东西(他们可能不是第一个)

您所要做的就是添加一个只有您知道的密钥:

function makeSecureCode($var1, $var2){
    $secretCode = 'example';
    $secretKey = '';
    $secretKey.= $var1 .  $secretCode;
    $secretKey.= $var2 .  $secretCode;

    return sha1($secretKey);
}

然后制作这样的网址: ?var1=foo&var2=bar&key=5e8b73da0b20481c1b4a285fb756958e4faa7ff1

并且当您在付款后处理代码时,makeSecureCode($_GET['var1'], $_GET['var2']) 应该等于 $_GET['key']。如果不是,有人改变了它。

这是一个只有两个变量的简化版本。你可以让它有更多的输入参数,或者一个数组,无论你喜欢哪个。

于 2013-06-25T13:36:24.740 回答