authorize.net响应url返回当我们尝试将事务结果发布到它时,您的脚本超时

时间:2015-01-31 16:56:41

标签: grails callback authorize.net

我正在尝试将authorize.net的DPM api集成到我的项目中。我遇到的问题是响应网址。我知道网上已经有很多关于这一点,但这对我来说都是胡言乱语。错误消息是:

An error occurred while trying to report this transaction to the merchant. An e-mail has been sent to the merchant informing them of the error. The following is the result of the attempt to charge your credit card. 

      This transaction has been approved.
It is advisable for you to contact the merchant to verify that you will receive the product or service.

在我的沙盒帐户的电子邮件中,我收到以下错误消息:

Your script timed out while we were trying to post transaction results to it.

在我的沙箱帐户中

http://myIp:8080/myProject/shoppingCart/authorizePayment      Default Receipt URL   Edit
http://myIp:8080/myProject/shoppingCart/paymentAuthorizing    Default Relay Response URL    Edit

我已经验证我可以使用该IP浏览我的网站,从外界访问myIp。

在我的表格上,我发送给他们:

<input name="x_relay_url" value="http://myIp:8080/myProject/shoppingCart/paymentAuthorizing">

在我的shippingCart控制器中

def paymentAuthorizing(){
    [params: params]
}

以及payAuthorizing操作的gsp页面:

<meta name="layout" content="main">
<div>
    Payment Authorizing.  Please Wait
    <g:javascript>
        window.location.href = '<g:createLink action="authorizePayment" params="${params}"></g:createLink>';
    </g:javascript>
</div>  

这是

发布的第一号问题

http://community.developer.authorize.net/t5/The-Authorize-Net-Developer-Blog/5-Most-Common-Errors/ba-p/35655

但似乎并不相关

我已经确认我可以通过Chrome rest客户端访问我的服务器

enter image description here

2 个答案:

答案 0 :(得分:2)

rhldr在评论中解释了错误的原因。

Authorize.net文档中描述了您遇到的错误以及一些故障排除here。这是相关部分:

  

如果商家的Web服务器在公共Internet上不可用,启用了身份验证,或者中继URL使用非标准端口进行HTTP或HTTPS流量,则会发生中继响应超时。 Authorize.Net将无法连接到您的服务器或在您的服务器上进行身份验证,并且只能将端口80和443用于所有Web流量。

我建议尝试使用端口80或443并查看是否有效。

答案 1 :(得分:1)

Authorize.Net DPM提供的错误可能会产生误导。根据我的经验,我发现超时通常不是超时,而是一个无效的响应。以下所有导致您描述的错误消息:

  • 您的中继目标上的自签名证书。在我们的开发环境中,我强制中继URL为非SSL以解决此问题。
  • 非HTTP 200响应,因此处理中继响应的代码中的任何错误都可能导致此问题,这可能很难调试,因为网关不会返回该错误的任何详细信息。
  • 未向网关注册的中继URL。网关需要提前知道您要使用的所有URL,这也意味着您无法在该URL上使用任意GET参数。