C# 带有.crt和.key的Https Post

C# 带有.crt和.key的Https Post,c#,php,asp.net-core,payment-gateway,nopcommerce-4.0,C#,Php,Asp.net Core,Payment Gateway,Nopcommerce 4.0,如果是重复的,我很抱歉。我在网上看到一些关于这个话题的帖子。但没有得到任何合适的解决方案。我在nopcommerce 4.0工作,它运行在.net内核上,但目标框架是4.x.x。我正在开发一个支付插件,需要与.crt和.key文件安全连接。支付方式提供者发送一个php文件,该文件按预期工作。下面是示例代码 function ProcessRequest($curl_post_data,$service_url,$proxy,$proxyauth) { $output = ''; $certfil

如果是重复的,我很抱歉。我在网上看到一些关于这个话题的帖子。但没有得到任何合适的解决方案。我在nopcommerce 4.0工作,它运行在.net内核上,但目标框架是4.x.x。我正在开发一个支付插件,需要与.crt和.key文件安全连接。支付方式提供者发送一个php文件,该文件按预期工作。下面是示例代码

function ProcessRequest($curl_post_data,$service_url,$proxy,$proxyauth)
{
$output = '';
$certfile       = '/createorder.crt';
$keyfile        = '/createorder.key';
$cert_password = '';
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, $service_url );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 ); 
curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt( $ch, CURLOPT_SSLCERT, getcwd() . $certfile );
curl_setopt( $ch, CURLOPT_SSLKEY, getcwd() . $keyfile );
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $curl_post_data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
$output = curl_exec($ch);
if (curl_error($ch)) {
   echo $error_msg = curl_error($ch);
}
$cblcz = json_decode($output, true );
return $cblcz;
}

$proxy ="";
$proxyauth ="";
$postDatatoken = '{
"password": "123456Aa",
"userName": "test"
}';
$serviceUrltoken ="";
$serviceUrltoken= 'https://sandbox.thecitybank.com:7788/transaction/token';
$cblcz = ProcessRequest($postDatatoken,$serviceUrltoken,$proxy,$proxyauth);
我无法将此curl转换为http post。我试过下面的链接

和其他人,但没有得到任何工作

不工作。对于openssl,它正在抛出未加载的依赖项。这是我的c代码


您的代码似乎是正确的。但请确保您拥有有效的证书。如果认证不正确,它将通过异常处理。检查您的异常消息,并尝试检测准确的错误。或者在这里发布您的错误消息

此外,你应该补充一点

request.ServerCertificateValidationCallback = (e,r,c,n) => true;

您的代码似乎是正确的。但请确保您拥有有效的证书。如果认证不正确,它将通过异常处理。检查您的异常消息,并尝试检测准确的错误。或者在这里发布您的错误消息

此外,你应该补充一点

request.ServerCertificateValidationCallback = (e,r,c,n) => true;

实际上,如果我们看到curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false),您是对的,远程证书无效;和curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);实际上,如果我们看到curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false),您是正确的远程证书无效;和curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);这是强行伪造的。