1

我正在尝试解决 Authorize.net 出现的问题。SessionToken是在测试模式下通过测试帐户生成的。现在,SessionToken每次通过测试账户或实际账户预览表单时都会生成一个新的。

每次以预览模式访问表单时,都会显示一个隐藏的输入字段。我通过使用由和toBase64()组合而成的字符串在表单上生成了一个隐藏的输入字段。输出是这样的:x_loginx_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。这意味着表单上的提交/发送...按钮已提交,然后处理付款并显示收据。

4

1 回答 1

0

如果您从 Authorize.net 下载 Coldfusion 示例代码,您会注意到您不需要 SessionToken。见下文:

来源:http: //developer.authorize.net/downloads/samplecode/

<cfhttp method="Post" url="https://test.authorize.net/gateway/transact.dll">
<!--- the API Login ID and Transaction Key must be replaced with valid values --->
<cfhttpparam type="Formfield" name="x_login" value="API_LOGIN_ID">
<cfhttpparam type="Formfield" name="x_tran_key" value="TRANSACTION_KEY">

<cfhttpparam type="Formfield" name="x_delim_data" value="TRUE">
<cfhttpparam type="Formfield" name="x_delim_char" value="|">
<cfhttpparam type="Formfield" name="x_relay_response" value="FALSE">

<cfhttpparam type="Formfield" name="x_type" value="AUTH_CAPTURE">
<cfhttpparam type="Formfield" name="x_method" value="CC">
<cfhttpparam type="Formfield" name="x_card_num" value="4111111111111111">
<cfhttpparam type="Formfield" name="x_exp_date" value="0115">

<cfhttpparam type="Formfield" name="x_amount" value="19.99">
<cfhttpparam type="Formfield" name="x_description" value="Sample Transaction">

<cfhttpparam type="Formfield" name="x_first_name" value="John">
<cfhttpparam type="Formfield" name="x_last_name" value="Doe">
<cfhttpparam type="Formfield" name="x_address" value="1234 Street">
<cfhttpparam type="Formfield" name="x_state" value="WA">
<cfhttpparam type="Formfield" name="x_zip" value="98004">
<!--- Additional fields can be added here as outlined in the AIM integration
guide at: http://developer.authorize.net --->   
<!--- The following fields show an example of how to include line item details, they are commented out by default.
<cfhttpparam type="Formfield" name="x_line_item" value="item1<|>golf balls<|><|>2<|>18.95<|>Y">
<cfhttpparam type="Formfield" name="x_line_item" value="item2<|>golf bag<|>Wilson golf carry bag, red<|>1<|>39.99<|>Y">
<cfhttpparam type="Formfield" name="x_line_item" value="item3<|>book<|>Golf for Dummies<|>1<|>21.99<|>Y">
--->
</cfhttp>

希望这可以帮助。

于 2013-12-26T23:14:11.407 回答