ibenyaho Ответов: 0

Как конвертировать PHP CURL в ASP.NET


Я бы хотел, чтобы преобразовать код PHP локон ниже, чтобы asp.net.

<?php require_once("config.php");
  
if($_POST['token']!='' and isset($_POST['token']) ){

$token = $_POST['token']; 

$url = 'https://dev-kpaymentgateway-services.kasikornbank.com/card/v2/charge'; 
$datasend = array(
   "amount"=> "2000.00",   
   "currency"=> "THB",  
   "description" => "Awesome Product",
   "source_type" => "card",    
   "mode"=> "token",   
   "token"=> $token,
   "reference_order"=> "11251513" 
);
      
$ch = curl_init();
$post_string = json_encode($datasend);  
curl_setopt($ch, CURLOPT_HTTPHEADER, array(                                                                          
	'Content-Type: application/json',              
	'Cache-Control:no-cache',
  'x-api-key: '.$secretkey 
  )                                                                       
);
 
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string);
curl_setopt($ch, CURLOPT_SSLVERSION, 0 );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_VERBOSE, true);

$data = curl_exec($ch);
$response = json_decode($data);

curl_close ($ch);

$response = json_decode(json_encode($response), True);

ob_clean();
header('Location: '.$response['redirect_url']);
     }
?> 


Что я уже пробовал:

Итак , я попробовал обратиться в asp.net с кодом ниже.

Dim AppKey As String = "skey_test_xxxxxxxxxx"   
        Dim URL As String = "https://dev-kpaymentgateway-services.kasikornbank.com/card/v2/charge/"
        Try
            ServicePointManager.Expect100Continue = True
            ServicePointManager.SecurityProtocol = CType(3072, SecurityProtocolType)
            Dim CjSONString As String
            Dim li As jsonGetToken = New jsonGetToken()
            li.amount = 2000.0
            li.currency = "THB"
            li.description = "Awesome Product"
            li.source_type = "card"
            li.mode = "token"
            li.reference_order = "11251513"
            CjSONString = "{""amount"": " & li.amount & ",""currency"": " & """" & li.currency & """" & ",""description"": " & """" & li.description & """" & ",""source_type"": " & """" & li.source_type & """" & ",""mode"": " & """" & li.mode & """" & ",""reference_order"": " & """" & li.reference_order & """" & "}"

            Dim URLHTTP As String = URL
            Dim StringJSON As jsonGetToken = JsonConvert.DeserializeObject(Of jsonGetToken)(CjSONString)
            Dim jSONString As String = JsonConvert.SerializeObject(li)

            Me.txtja.Text = jSONString
            
            Dim request = CType(WebRequest.Create(URLHTTP), HttpWebRequest)
            request.ContentType = "application/json; charset=UTF-8"
            request.Method = "POST"
            request.ContentLength = jSONString.Length
            request.Headers.Add("Authorization", "Basic " + AppKey)

            Dim output As String = ""
            Using streamWriter = New StreamWriter(request.GetRequestStream())
                streamWriter.Write(jSONString)
                streamWriter.Flush()
                streamWriter.Close()
                Dim httpResponse = CType(request.GetResponse(), HttpWebResponse)
                Using streamReader = New StreamReader(httpResponse.GetResponseStream())
                    output = streamReader.ReadToEnd()
                End Using
            End Using
            
            Me.txtAert.Text = output

        Catch ex As Exception
            Me.txtAert.Text = ex.Message
        End Try


Но это возвратная ошибка.
The remote server returned an error: (401) Unauthorized.


В части данных я отправил формат json, как показано ниже.
{"amount":2000.0,"currency":"THB","description":"Awesome Product","source_type":"card","mode":"token","reference_order":"11251513"}



пожалуйста, предложите мне. Спасибо.

F-ES Sitecore

Код выглядит немного чересчур сложным, но я вижу, что чего-то не хватает, так это того, что оригинал устанавливает заголовок запроса x-api-key, а ваш код-нет. Вы также используете базовую аутентификацию там, где оригинал этого не делает. Используйте такие инструменты, как Fiddler или wireshark, чтобы сравнить эти два запроса и увидеть, чем они отличаются.

0 Ответов