【问题标题】:How can i Curl into paypal to confirm payment after express checkout in a webshop? PHP在网上商店快速结帐后,我如何卷曲到贝宝以确认付款? PHP
【发布时间】:2011-08-07 12:43:05
【问题描述】:

当您在任何网上商店点击 Express Checkout PayPal 按钮时,它会将您重定向到特定的 paypal 登录链接,用于支付订单。

我已经搜索了 3 天的高低,寻找一个简单的 paypal php curl 脚本,该脚本从这一步登录,并确认付款,但找不到任何东西。我只找到了让您从 paypal 主页登录的脚本,当您破坏 paypal 流程时,这些脚本将无法正常工作。

我发现无法使用 API,所以它必须通过 CURL 来完成。

我之所以提出这个要求,是因为我经营一个直销网站,并且希望自动化某些步骤,例如下订单和支付订单。一个有效的代码不仅对我有帮助,而且对所有希望以某种形式自动购买的人都有帮助。

我将粘贴我制作的非工作脚本,它只会给我一条来自 paypal 的“抱歉 - 您的最后一个操作无法完成”消息,如果这对您有任何帮助的话..



$agent = "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.8) Gecko/20061025 Firefox/1.5.0.8";
$header[] = "text/html; charset UTF-8";
$url = $_GET[link];
// $url = "https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&&token=EC-EXAMPLE7839244";
$email = urlencode("email");
$password = urlencode("password");
$cookies = "cookies.txt";

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_REFERER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookies);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookies);
curl_setopt($ch, CURLOPT_URL, $url);

// HIT LOGINPAGE
$login = curl_exec ($ch);
// PRINT LOGINPAGE
var_dump($login);

// GET LOGIN-LINK AND SET POSTFIELDS
preg_match("/merchantpaymentweb\?cmd\=\_flow(.*?)\"/", $login, $output);
$link = "https://www.paypal.com/c2/cgi-bin/merchantpaymentweb?cmd=_flow$output[1]";
// PRINT LOGIN-LINK
echo "LINK: $link
"; preg_match("/CONTEXT\" value=\"(.*?)\"/", $login, $output); $CONTEXT = $output[1]; $postfields = "CONTEXT=$CONTEXT&close_external_flow=false&cmd=_flow&external_close_account_payment_flow=payment_flow&flow_name=xpt/Merchant/hostedpayments/Login&flow_name=xpt/Merchant/hostedpayments/Login&form_charset=UTF-8&id=&login.x=Log+In&login_email=".$email."&login_password=".$password."&myAllTextSubmitID="; echo "
POSTFIELDS : \"$postfields\"
"; curl_setopt($ch, CURLOPT_URL, $link); curl_setopt ($ch, CURLOPT_POST, 1); curl_setopt ($ch, CURLOPT_POSTFIELDS, $postfields); // POST FORM, fails, gives "Sorry - Your last action could not be completed" message $should_be_logged_in_now = curl_exec($ch); var_dump($should_be_logged_in_now);

【问题讨论】:

  • paypal 通知您交易到您指定的任何 url,您无需查询它们
  • IPN 不是仅用于对您自己帐户上发生的事情做出反应吗?我在链接中读到的内容支持这一点。当您在网上商店下订单并按下快速结帐按钮时,您的帐户中没有任何反应。我在说你,在这里从另一个人的网上商店购买,也许我不清楚
  • 好的,那你根本不能这样做。

标签: php curl paypal checkout token


【解决方案1】:

我对使用 PayPal 不太熟悉。由于收到退款,我像 4 年前一样停止使用它。

您可能需要查看 PayPal Pro API,这是一项付费服务​​。这可能是您正在寻找的,而不是处理 CURL 和 PayPal,因为您提到了使用 API。

【讨论】:

  • 我在 x.com 论坛上询问 paypal api 是否可以做到这一点,那里的工作人员给出了否定的回答:/
  • 我不确定你想要的是否可能。如果我是 PayPal 中此类东西的主要负责人,我绝不会允许此类行为。您可以使用 PayPal PRO API 让事情变得更简单。如果他们没有这样的功能,我认为您无法在没有任何安全问题的情况下使用 CURL 实现它。最后,它是一个网上商店,安全对你来说很重要。
  • 应该可以模拟手动登录并按下确认按钮。一切皆有可能,这不是那句话。它可以从首页登录,所以为什么不应该从结帐流程中登录。安全对我来说不是问题,因为我将在我的后端系统中手动单击“从网站订购和支付项目”按钮。
  • 对于所有像我一样以代销为生并每天购买 50 多种不同商品的人,我相信有人已经做到了。我愿意为工作脚本付费。
  • 我不是这个意思,根本不可能。我的意思是,如果我是 PayPal 中有关此类技术的授权人员,我绝不会让 PayPal 成员能够采取此类行动,因为它可能带来安全问题。您可以在这里查看codecanyon.net/item/easy-e/231528,如果您愿意付费,甚至可以尝试与作者联系。看来他很擅长 PayPal。
猜你喜欢
  • 2011-10-18
  • 2013-02-10
  • 2015-05-03
  • 1970-01-01
  • 2018-11-24
  • 2013-12-11
  • 2014-12-20
  • 1970-01-01
  • 2014-09-06
相关资源
最近更新 更多