所以很明显,paypal API 代码不是很容易阅读或理解,提供的文档也不是。这个人同意我的看法。
如果您在 PayPal 文档中花费了超过几分钟,您就会知道手动解密 1024 位 RSA 私钥比了解 PayPal Digital Goods with Express Checkout API 更容易。
所以我终于想通了如何通过这个示例代码让 PHP 与 paypal API 进行通信:
https://ppmts.custhelp.com/app/answers/detail/a_id/945/kw/php
然而 PayPal 完全远离他们提供的样本,他们必须对开发人员花费数小时来弄清楚系统感兴趣,而不是仅仅给他们提供易于实施的代码并开始获得报酬。我想知道他们是如何取得如此成功的...
事实上,示例代码甚至说它不安全,不应该用于生产:
// Set API creds and version greater than 65.1, also set endpoint and redirect url
//**************************************************//
// This is where you would set your API Credentials //
// Please note this is not considered "SECURE" this //
// is an example only. It is NOT Recommended to use //
// this method in production........................//
//**************************************************//
$APIUSERNAME = "xxxx";
$APIPASSWORD = "xxxx";
$APISIGNATURE = "xxxx";
$ENDPOINT = "https://api-3t.sandbox.paypal.com/nvp";
本质上,这些变量用于创建一个字符串,其中包含有关购买的所有信息以及 API 凭证。字符串由每个索引和值对组成,并用与号等连接$req_str = "USER=xxxx&PWD=xxxx";
。这个字符串被传递给一个函数PPHttpPost($ENDPOINT, $req_str);
。此函数使用curl_init();
和相关函数以某种方式与贝宝服务器通信并返回一个唯一键来识别交易及其价值。
我不确定这个函数是如何工作的,但它列在我上面提供的“functions.php”下的链接中。
两个问题:
1.) 为什么这不被认为是安全的?
2.) 如果通过将 API 凭证写入变量来告诉应用程序您的 API 凭证是不安全的,那么什么是?