1

我们有 PayPal Payments Advanced,但我无法通过第一个网关集成步骤。也许我错过了一些应该很明显的简单东西。

我能够找到的所有用于集成高级网关的官方 PayPal 文档都说第一步是获取安全令牌。 例如https://developer.paypal.com/webapps/developer/docs/classic/payflow/gs_ppa_hosted_pa​​ges/上的页面 。

我在下面发布我的测试脚本(修改了敏感信息)。

每次运行测试脚本时,我都会收到“错误:您的交易无法再处理。请返回商家网站或联系商家。错误:160”错误消息。

根据 PayPal Gateway 开发人员指南和参考,错误 160 是“安全令牌已被使用。表示安全令牌由于交易成功或尝试成功处理交易时已使用 3 次而过期。您必须生成一个新的安全令牌。”

然而,尚未使用安全令牌。每次运行脚本时都会生成一个新脚本。

“启用安全令牌”在 PayPal 管理器中设置为“是”。

这是脚本。我究竟做错了什么?

<?php
$url = 'https://payflowlink.paypal.com';
#$url = 'https://pilot-payflowlink.paypal.com';

$token = md5( 'Will Bontrager' . time() );

/* $info assignment is all one line. Multi-line here for readability */
$info = "PARTNER=PayPal&
VENDOR=CertainReservations&
USER=ABC123&
PWD=321cba&
TRXTYPE=S&
AMT=23.45&
CREATESECURETOKEN=Y&
SECURETOKENID=$token";

echo "<pre>Value:$info</pre>";

$options = array(
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HEADER         => false,
CURLOPT_VERBOSE        => false,
CURLOPT_SSL_VERIFYHOST => 0,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_POST           => 1,
CURLOPT_POSTFIELDS     => $info
);
$ch = curl_init($url);
curl_setopt_array($ch,$options);
$content = curl_exec($ch);
$err = curl_errno($ch);
$errmsg = curl_error($ch) ;
$info = curl_getinfo($ch);
curl_close($ch);
if( $err )
{
echo "<pre>Error. $err\n$errmsg\n";
print_r($info);
echo '</pre>';
}
echo $content;
?>

非常感谢您的任何指导。

我想我一定错过了一些关键信息。

将要

4

3 回答 3

1

只是想补充一点,当没有安全令牌传递到步骤 2 时,也会引发错误 160。

如果发生这种情况:主机阻止 curl 调用,因此在没有安全令牌的情况下请求 Paypal iframe,导致错误 160。

于 2013-08-02T02:39:38.383 回答
0

据我所知(虽然这很有帮助,但我发现这并没有明确记录)您无法从https://pilot-payflowlink.paypal.com但从https://pilot-payflowpro 获得安全令牌。 paypal.com似乎工作得很好。获得令牌后,您可以将其与 payflowlink 一起使用。

于 2013-12-11T23:40:20.810 回答
0

根据此 Payflow Gateway 文档的第 31 页,这可能有效。如果在没有适当的 301 重定向的情况下删除或移动了他的 PDF,我已经在此处复制了内容。

要创建安全令牌,请传递处理交易所需的所有参数,但信用卡号、到期日期和支票号码等付款详细信息参数除外。

此外,传递以下 Payflow 参数以创建安全令牌。

  1. 将 SECURETOKENID 设置为长度不超过 36 个字符的唯一字母数字值。安全令牌ID=9a9ea8208de1413abc3d60c86cb1f4c5

  2. 将 CREATESECURETOKEN 设置为值 Y 以请求网关服务器返回令牌。创建安全令牌=Y

  3. 将 SILENTTRAN 设置为值 TRUE 以禁止显示托管页面。静音=真

成功的交易将返回 RESULT=0。从第 33 页开始。

Payflow 安全令牌将过期:

  • 如果将相同的 Secure Token 传递给 Payflow 总共 3 次。
  • 生成安全令牌后 20 分钟。
  • 当令牌用于成功的交易时

可能是格式...这里有一些关于您传递的参数的信息(从第 51 页开始):

因为和号 (&) 和等号 (=) 字符具有特殊含义,所以它们在名称-值对值中无效。

以下内容无效:

COMPANYNAME=Ruff & Johnson COMMENT1=Level=5

要在名称-值对的值部分中包含特殊字符,请使用长度标记。长度标签指定出现在值中的字符和空格的确切数量。以下是有效的。

COMPANYNAME[14]=Ruff & Johnson

COMMENT1[7]=级别=5

注意:即使您使用长度标记,也不要使用引号 ("")。

于 2013-06-07T17:18:18.000 回答