0

我是一个新的 vb.net 开发人员,我正在尝试与 API 服务集成,该服务允许我存储信用卡数据而不符合 PCI。我遇到的问题是该示例仅适用于 JavaScript,我无法弄清楚如何在 vb.NET 中创建相同的简单过程。我希望有人可以帮助我处理这个样本。

这个想法是将这些数据从我的表单引导到 API,然后处理成功或失败的响应数据。

        //<![CDATA[
        $(document).ready(function() {
            $('input:button').click(function() {
                $.ajax({
                    type: 'post',
                    url: 'https://certify.i4go.com/index.cfm',
                    dataType: 'jsonp',
                    data: {
                        fuseaction: 'account.jsonpPostCardEntry',
                        i4Go_AccountID: '123123',
                        i4Go_SiteID: '456456',
                        i4Go_CardNumber: $('#i4Go_CardNumber').val(),
                        i4Go_ExpirationMonth: $('#i4Go_ExpirationMonth').val(),
                        i4Go_ExpirationYear: $('#i4Go_ExpirationYear').val()
                    },
                    cache: false
                });
            });                 
        });
        function parseResponse(data) {
            if (data.i4go_responsecode != null) {
                if (data.i4go_responsecode == 1) {
                    $('#response').html('i4Go_UniqueId: ' + data.i4go_uniqueid);
                } else {
                    $('#response').html('i4Go_ResponseCode: ' + data.i4go_responsecode);
                }
            } else {
                $('#response').html('i4Go_ResponseCode is null');
            }
        }
        //]]>
    </script>
</head>
<body>
    <table cellpadding="0" cellspacing="0">
        <tbody><tr>
            <td>Card number:</td><td><input type="text" id="i4Go_CardNumber" value="4111111111111111"></td>
        </tr>
        <tr>
            <td>Exp month:</td><td><input type="text" id="i4Go_ExpirationMonth" value="12"></td>
        </tr>
        <tr>
            <td>Exp year:</td><td><input type="text" id="i4Go_ExpirationYear" value="2020"></td>
        </tr>
        <tr>
            <td><input type="button" value="Get Token"></td>
        </tr>
    </tbody></table>
    <div id="response"></div>

我感谢任何和所有的帮助。

干杯,

阿杰

4

1 回答 1

1

如果您使用的是 .NET 4.5,请查看新的 WebAPI 调用,这很容易。一旦你创建了一个代表数据的类,序列化就为你完成了,你的代码看起来像这样:

Dim jsonObject As ' TODO: Create a class that represents the data, and instantiate the object with the data
Dim client As New HttpClient()
client.BaseAddress = new Uri("https://certify.i4go.com/")
Dim result As HttpResponseMessage = client.PostAsJsonAsync("index.cfm", jsonObject).Result

分析返回的对象以获取它们传递给您的任何内容,并决定如何从那里继续。

有很多重载可供选择,它们的作用基本相同。

编辑:对于 .NET 4.0,您可以使用WebClient而不是HttpClient- 它需要更多的工作,但仍然不算太糟糕 - 您只需要手动处理序列化。可能还有很多方法可以做到这一点,但这里有一个:

Dim message As String
Dim s As New SomeData() ' SomeData still represents the data you're passing
message = New JavaScriptSerializer().Serialize(s)
Dim webClient As New WebClient()
Dim response() As Byte = webClient.UploadData(url, Encoding.UTF8.GetBytes(message))
Dim responseString as String = Encoding.UTF8.GetString(response)

现在您将响应作为字符串,您可以弄清楚如何处理它 - 它可能是 JSON 对象或类似的东西,您需要读取或反序列化它。

于 2013-02-21T23:38:26.317 回答