我正在尝试解决 Authorize.net 出现的问题。SessionToken
是在测试模式下通过测试帐户生成的。现在,SessionToken
每次通过测试账户或实际账户预览表单时都会生成一个新的。
每次以预览模式访问表单时,都会显示一个隐藏的输入字段。我通过使用由和toBase64()
组合而成的字符串在表单上生成了一个隐藏的输入字段。输出是这样的:x_login
x_tran_key
<INPUT TYPE="HIDDEN" NAME="SessionToken" ID="SessionToken" VALUE="TXpOSFRUWXpXbk40VjNSeg==TlRsU2JqaHFOM2RLZFd0RU5VdzJadz09">
SessionToken
如您在上面看到的,在表单隐藏的输入字段中。
在生成我自己SessionToken
的处理时,尝试处理https://test.authorize.net/gateway/transact.dll后显示的错误显示如下:
(46) 您的会话已过期或不存在。您必须重新登录才能继续工作。
表单实际工作的唯一方法是SessionToken
在预览模式下从表单中获取代码之后。例如:转到帐户 --> 设置 --> 付款表格 --> 预览 --> 并从视图框架源查看和复制代码。它看起来像这样:
<INPUT TYPE="HIDDEN" NAME="SessionToken" ID="SessionToken" VALUE="jMsCez2DId$VvgF4s4Hbjbe$Uv6WnJh8cEKBD5HqTUEqlHoRBebKZ07bp4RZdpwOPnGabB3pbcWFppJCph7dg6HjQeroJvlay6mQm5ocjkZPq44uT4nqeg2zWhX13b7Blp$qN7ZDzQ5HF1abfukJTQAA,jMsCez2DId$VvgF4s4Hbjbe$Uv6WnJh8cEKBD5HqTUEqlHoRBebKZ07bp4RZdpwOPnGabB3pbcWFppJCph7dg6HjQeroJvlay6mQm5ocjkZPq44uT4nqeg2zWhX13b7Blp$qN7ZDzQ5HF1abfukJTQAA">
最后,如果我使用该值:
jMsCez2DId$VvgF4s4Hbjbe$Uv6WnJh8cEKBD5HqTUEqlHoRBebKZ07bp4RZdpwOPnGabB3pbcWFppJCph7dg6HjQeroJvlay6mQm5ocjkZPq44uT4nqeg2zWhX13b7Blp$qN7ZDzQ5HF1abfukJTQAA
作为SessionToken
:
<cfset SessionToken = 'jMsCez2DId$VvgF4s4Hbjbe$Uv6WnJh8cEKBD5HqTUEqlHoRBebKZ07bp4RZdpwOPnGabB3pbcWFppJCph7dg6HjQeroJvlay6mQm5ocjkZPq44uT4nqeg2zWhX13b7Blp$qN7ZDzQ5HF1abfukJTQAA'>
并处理它的工作形式。但如果登录到测试帐户,它只能在当前会话中使用一次。
当然,感谢所有帮助。这是我需要的代码的最后一部分,只是不知道如何使它工作。我需要获取 SessionToken 的响应以填充表单上的 SessionToken 隐藏字段输入。
我没有使用 CFHTTP 方法,因为表单在网站上,并且当支付表单加载时需要 SessionToken。这意味着表单上的提交/发送...按钮已提交,然后处理付款并显示收据。