我正在尝试将ebay api事务通知接收到托管在Web服务器上的ASP中。通知作为SOAP消息发送,并可以发送到带有查询字符串的URL。必须使用HTTP 200 OK响应通知。我希望通知在变量中着陆,以便我可以解析它并将其发送到系统的下一部分。
在文档中他们提到这是可能的,但他们给出的样本是订阅电子邮件服务器的路线。这个ASP不一定需要发出SOAP请求,只需接受来自ebay服务器的SOAP消息。
我正在研究ASP,SOAP和查询字符串,但是我会真正感谢一点指导。谢谢!
答案 0 :(得分:2)
这应该非常简单,您的经典ASP页面将成为eBay通知API 的端点(只要您将其配置为发送通知以及将其发送到哪个URL)。 / p>
您应该可以使用简单的经典ASP页面进行测试
# // Karma configuration
# // Generated on Fri May 13 2016 16:53:01 GMT-0400 (EDT)
module.exports = (config) ->
config.set
basePath: './'
frameworks: [ 'jasmine' ]
files: [
'bower_components/angular/angular.min.js'
'bower_components/angular-mocks/angular-mocks.js'
'web/app.coffee'
'web/controllers/*.coffee'
'test/**/*.coffee'
]
exclude: []
preprocessors: {
'test/**/*.coffee': [ 'coffee' ]
'web/**/*.coffee': [ 'coffee' ]
}
reporters: [ 'progress' ]
port: 9876
colors: true
logLevel: config.LOG_INFO
autoWatch: true
browsers: [ 'PhantomJS' ]
singleRun: false
concurrency: Infinity
您可能还想检查<%
Dim isPost: isPost = (UCase(Request.ServerVariables("REQUEST_METHOD") & "") = "POST")
Dim hasSoapAction
'Is it a HTTP POST?
If isPost Then
'Do we have a SOAPACTION header (check both because
'it can be either HTTP_ or HEADER_ depending on IIS version)?
hasSoapAction = ( _
Len(Request.ServerVariables("HEADER_SOAPACTION") & "") > 0 Or _
Len(Request.ServerVariables("HTTP_SOAPACTION") & "") > 0 _
)
If hasSoapAction Then
'Process the notification here.
'Use Request.BinaryRead to read the SOAP
End If
'Let eBay know we have received and processing the message.
Response.Status = "200 OK"
Else
'Return method not allowed
Response.Status = "405 Method Not Allowed"
End If
Response.End
%>
以确保您只收到预期来源的已发送邮件(但这不是防弹的,因为信息可以是spoofed)< / em>的
Accessing a request's body (很好的现有答案解释了如何使用REMOTE_HOST
读取内容并将其转换为字符串,然后您可以在变量中使用或解析Request.BinaryRead()
)。
How to generate MD5 using VBScript in classic ASP? (如果您想查看验证MD5签名的方法)
答案 1 :(得分:0)
这是我迄今为止在notifications.asp中所拥有的内容。当我尝试通过Postman发送一个基本的SOAP帖子时,没有任何事情发生。这看起来应该有用吗?
我在没有检查SOAP标头的If语句的情况下对此进行了测试,并且我发布了常规字符串数据并且它可以工作。所以二进制到字符串转换和输出到文件都很好。现在我只需要用实际的ebay api通知进行测试。 ; - )
var a = 1;
function x(p) {
p = 2
console.log(p) // 2
}
x(a);
console.log(a); // 1