如何在ASP Classic中接收Webhook?

时间:2019-05-25 12:11:37

标签: webhooks

我对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

但这不会在我的数据库中插入任何内容吗?

1 个答案:

答案 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
%>