Coldfusion Authorize.net-SIM-如何在不公开API登录ID的情况下进行集成

Coldfusion Authorize.net-SIM-如何在不公开API登录ID的情况下进行集成,coldfusion,coldfusion-9,authorize.net,Coldfusion,Coldfusion 9,Authorize.net,我正在使用ColdFusion集成授权.Net SIM API 在示例模板中,表单公开了API登录名和指纹,这实际上与API文档中的说明相反 有人对如何在不暴露这些表单值的情况下实现这一点提出了建议吗 <FORM method='post' action='#posturl#' > <INPUT type='hidden' name='x_login' value='#loginID#' /> <INPUT type='hidden' name='x

我正在使用ColdFusion集成授权.Net SIM API

在示例模板中,表单公开了API登录名和指纹,这实际上与API文档中的说明相反

有人对如何在不暴露这些表单值的情况下实现这一点提出了建议吗

<FORM method='post' action='#posturl#' >
    <INPUT type='hidden' name='x_login' value='#loginID#' />
    <INPUT type='hidden' name='x_amount' value='#amount#' />
    <INPUT type='hidden' name='x_description' value='#description#' />
    <INPUT type='hidden' name='x_invoice_num' value='#invoice#' />
    <INPUT type='hidden' name='x_fp_sequence' value='#sequence#' />
    <INPUT type='hidden' name='x_fp_timestamp' value='#timestamp4#' />
    <INPUT type='hidden' name='x_fp_hash' value='#fingerprint#' />
    <INPUT type='hidden' name='x_test_request' value='#testMode#' />
    <INPUT type='hidden' name='x_show_form' value='PAYMENT_FORM' />
    <input type='submit' value='#label#' />
</FORM>


...

正如我所说,这个结果是理解结构的一个很好的工具。

好的,这似乎解决了我的问题。。。实际上,我使用

<cfif IsDefined("form.submit")>

单击Submit后,表单变量在短时间内可见,我使用JS提交表单变量以授权.net

虽然这似乎解决了我的问题,但我注意到这些变量在托管支付表单上是可见的。。。这也与他们的规则相冲突

有什么想法吗

<cfif IsDefined("form.submit")>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<script type="text/javascript">
  $(document).ready(function() {



    window.document.forms[0].submit();
  });
</script>
</cfif>
</HEAD>

<BODY>

<cfif NOT IsDefined("form.submit")>
<cfset posturl="#CGI.SCRIPT_NAME#">
</cfif>

<cfif IsDefined("form.submit")>
<cfset posturl="https://test.authorize.net/gateway/transact.dll">
</cfif>



<FORM method='post' action='#posturl#' >
    <cfif IsDefined("form.submit")> 
            <INPUT type='hidden' name='x_login' value='#loginID#' />
            <INPUT type='hidden' name='x_fp_sequence' value='#sequence#' />
            <INPUT type='hidden' name='x_fp_timestamp' value='#timestamp#' />
            <INPUT type='hidden' name='x_fp_hash' value='#fingerprint#' />
            <INPUT type='hidden' name='x_test_request' value='#testMode#' />
            <INPUT type='hidden' name='x_method' value='CC' />
    </cfif>

$(文档).ready(函数(){
window.document.forms[0].submit();
});

no。。你是对的,Ken,不想暴露你的figureprint,更不用说你的登录ID了,。将它们保存在服务器上(应用程序变量或DB表),但不要将它们放在隐藏字段中@CfQueryParams解决方案更符合您的需要-尽管您可能需要一些调试。@MarkAKruger-暂时忽略服务器端选项,为什么指纹需要保密?他们的文档说,这只是各种字段的散列,并不是一成不变的。我不确定API登录是否正确。他们的文档是相互冲突的,尽管他们在API登录和用户登录之间做了区分。@rhldr-如果是这样的话,你应该将你的评论作为答案发布。因此,对于那些搜索档案的人来说,指纹更为明显。你可能是对的——我相信这是一种时间戳(各种字段+时间)。但总体思路是避免暴露用户不“拥有”但特定于网站所有者的数据。同意,但他们的示例指示开发人员在客户端中嵌入“登录”值(如果该值应保密)似乎很奇怪:)我不知道它是否正确,只是,如果不这样做,API似乎无法正常工作,而且它与用户登录不一样。这让我怀疑他们文档中关于保密的部分是否是一个错误。肯-这真的不能“解决”问题。正如你所说,信息仍然可见。更不用说javascript可以很容易地禁用。当您使用客户端代码(例如html/javascript/etcera)时,无法从浏览器中隐藏值。根据定义,这些代码必须对浏览器可见并解释代码。虽然听起来他们的文档包含了相互矛盾的信息,但可能其中有些已经过时了。(续)例如,“指纹”只是不同值的散列,不会保持不变。所以我不知道为什么它应该被视为秘密。此外,他们提到API登录和用户登录之间存在差异。不幸的是,听起来您不能使用@cfqueryparam建议的服务器端POST选项,因为它是一个托管支付表单。就我个人而言,我建议直接去找源头。请咨询Authorize.net。Leigh-谢谢您的回复。。我理解你的观点并同意你的看法。。我和Authorize.Net谈过,他们没有什么帮助,甚至觉得很难向他们解释这个问题。。。实际上,他们结束时只是简单地说“Kenny,我们不是开发人员,你是…”基本上,这是一个困难和令人沮丧的讨论。@KenMais API登录被认为是不敏感的。使用SIM卡时,您可以使用文档中的公式计算指纹,并将其与API登录一起发送。指纹仅在15分钟内有效。Authorize.Net将使用您在指纹中包含的金额显示托管付款表单。@rhldr-它将公开敏感数据,即使该数据在15分钟内有效。。在我看来,这会造成安全风险。。也许我是新来的,但是文档很清楚。。。API登录名/密码必须安全存储。。这似乎意味着,不要以坏人容易得到的方式呈现。。。
<cfif IsDefined("form.submit")>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<script type="text/javascript">
  $(document).ready(function() {



    window.document.forms[0].submit();
  });
</script>
</cfif>
</HEAD>

<BODY>

<cfif NOT IsDefined("form.submit")>
<cfset posturl="#CGI.SCRIPT_NAME#">
</cfif>

<cfif IsDefined("form.submit")>
<cfset posturl="https://test.authorize.net/gateway/transact.dll">
</cfif>



<FORM method='post' action='#posturl#' >
    <cfif IsDefined("form.submit")> 
            <INPUT type='hidden' name='x_login' value='#loginID#' />
            <INPUT type='hidden' name='x_fp_sequence' value='#sequence#' />
            <INPUT type='hidden' name='x_fp_timestamp' value='#timestamp#' />
            <INPUT type='hidden' name='x_fp_hash' value='#fingerprint#' />
            <INPUT type='hidden' name='x_test_request' value='#testMode#' />
            <INPUT type='hidden' name='x_method' value='CC' />
    </cfif>