我对Webhooks完全陌生,但是我认为我基本上了解它应该如何工作。但是我需要一些帮助才能真正理解它,看看我是否完全错了:-)
我想知道如何接收网络挂钩?如果我缺少某些东西,或者我可以只做一个request.form(“ something”)来接收它吗?
这就是我现在所拥有的。 我将{@ {1}}中带有XmlHttp的json格式的帖子发送到付款服务,并在其中用这种格式的json声明了一个Web钩子以及其他订单详细信息。
sendorder.asp
在付款服务文档中,它说“ webhooks"": [{" &_
"""eventName"": ""payment.checkout.completed"","&_
"""url"": ""https://mydomain.se/getorderinfo.asp"","&_
"""authorization"": ""xxxxxxxx"""
”
所以我想在我的Easy will send the event as a HTTP POST request to the URL specified by the merchant.
页上只有getorderinfo.asp
才可以接收信息吗?
但是他们的文档说theinfo=request.form("something")
这是否意味着我必须发回邮件,还是"When you subscribe to a webhook, Easy will try to send the request to the specified URL until the server responds with a 200 OK status code."
是作为对它们的自动发送回信?
我想找回的json数据看起来像这样。
200 OK
我使用aspJSON1.17.asp能够使用此代码转换json数据。
{
"id" : "f3d5043af4094d6887ee95bf16073958",
"merchantId" : "e718004345cc48cba095a235de85c359",
"timestamp" : "2018-01-12T09:40:19.8919+00:00",
"event" : "payment.refund.completed",
"data" : {
...
...
}
}
那么,如果我那么做,那行得通吗?
theinfo=request.form("something")
jsonstring = theinfo
'response.write jsonstring
Set oJSON = New aspJSON
'Load JSON string
oJSON.loadJSON(jsonstring)
theevent=oJSON.data("event")
而且,如何测试Webhook是否正在发送到if theevent="payment.checkout.completed" then
response.write "Yepp the payment is completed, insert it into the db now!"
end if
?
如您所见,我是一个全新的人,所以我非常感谢任何输入。
只是看看我是否有任何东西发送到我的getorderinfo.asp页上。
getorderinfo.asp page
但这不会在我的数据库中插入任何内容吗?
答案 0 :(得分:1)
所有JSON作为二进制数据传输,因此代替了request.form或request.querystring 您request.BinaryRead(Request.TotalBytes)<-然后转换为ASCII 参见下面的代码示例
希望有帮助
<%
If Request.TotalBytes=0 then
response.write("Form Data:" & request.form &"<br>---<br>")
response.write("QueryString Data:" & request.querystring&"<br>---<br>")
else
response.write("Binary Data Converted to string for WEbhooks or receive JSON data<br>---- <br>" )
response.write(Request.TotalBytes & "-Total Bytes ")
Dim lngBytesCount, post
lngBytesCount = Request.TotalBytes
post = BytesToStr(Request.BinaryRead(lngBytesCount))
Response.ContentType = "text/plain"
Response.Write "Your " & Request.ServerVariables("REQUEST_METHOD") & " data was: " & post
End If
Function BytesToStr(bytes)
Dim Stream
Set Stream = Server.CreateObject("Adodb.Stream")
Stream.Type = 1 'adTypeBinary
Stream.Open
Stream.Write bytes
Stream.Position = 0
Stream.Type = 2 'adTypeText
Stream.Charset = "iso-8859-1"
BytesToStr = Stream.ReadText
Stream.Close
Set Stream = Nothing
End Function
%>