问题描述
我正在尝试将 Swish Payment 与移动商务 Api 集成。
请求步骤。
openssl pkcs12 -in out.p12 -nodes -out private.key -nocerts
- 从 Swish 下载 Swish_TLS_RootCA.pem 文件
这是我提出请求的方法。我还尝试了 api 的 v2 和 v1 版本,如您所见。 V2 已注释。 v2 也返回相同的响应。
function createPaymentRequest()
{
// $ch = curl_init('https://cpc.getswish.net/swish-cpcapi/api/v2/paymentrequests/11A86BE70EA346E4B1C39C874173F088');
// curl_setopt($ch,CURLOPT_PUT,true);
$ch = curl_init('https://cpc.getswish.net/swish-cpcapi/api/v1/paymentrequests');
curl_setopt($ch,CURLOPT_POST,true);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,'2');
curl_setopt($ch,CURLOPT_VERBOSE,true);
curl_setopt($ch,CURLOPT_STDERR,fopen('PHP://output','w'));
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,CURLOPT_FAILONERROR,CURLOPT_RETURNTRANSFER,true);
// curl_setopt($ch,CURLOPT_PROXY_SSLCERTTYPE,"PKCS12");
curl_setopt($ch,CURLOPT_CAINFO,getcwd()."/public/Getswish_Test_Certificates/Swish_TLS_RootCA.pem");
curl_setopt($ch,CURLOPT_SSLCERT,getcwd() . "/public/Getswish_Test_Certificates/swish_certificate_202103261346.pem");
curl_setopt($ch,CURLOPT_SSLKEY,getcwd() . "/public/Getswish_Test_Certificates/private.key");
curl_setopt($ch,CURLOPT_SSLKEYPASSWD,"password");
// curl_setopt($ch,CURLOPT_SSLCERTPASSWD,"password");
curl_setopt(
$ch,CURLOPT_HEADERFUNCTION,function ($curl,$header) use (&$headers) {
// this function is called by curl for each header received
$len = strlen($header);
$header = explode(':',$header,2);
if (count($header) < 2) {
// ignore invalid headers
return $len;
}
$name = strtolower(trim($header[0]));
echo "[" . $name . "] => " . $header[1];
return $len;
}
);
$data = array(
// "payeePaymentReference" => "0123456789","callbackUrl" => "https://www.kvkkolay.com/kiosk/auth",// "payerAlias" => "4671234768","payeeAlias" => "swishNumber","amount" => "100","currency" => "SEK","message" => "Kingston USB Flash Drive 8 GB"
);
$data_string = json_encode($data);
curl_setopt($ch,CURLOPT_POSTFIELDS,$data_string);
curl_setopt($ch,CURLOPT_HTTPHEADER,array(
'Content-Type: application/json','Content-Length: ' . strlen($data_string)
));
// $response = curl_exec($ch);
// if (curl_errno($ch)) {
// echo 'Request Error:' . curl_error($ch);
// }else{
// echo $response;
// }
$info = curl_getinfo($ch);
print_r($info);
if (!$response = curl_exec($ch)) {
trigger_error(curl_error($ch));
}
curl_close($ch);
// $this->getPaymentRequest();
}
这里的连接有问题是日志消息。我搜索了所有 swish 和 ssl 相关的问题,但没有任何帮助。有人可以帮忙吗?
* 即将 connect() 到 cpc.getswish.net 端口 443 (#0) * 尝试 213.132.115.86... * 连接到 cpc.getswish.net (213.132.115.86) 端口 443 (#0) * 使用 certpath 初始化 NSS:sql:/etc/pki/nssdb * CA文件:/home/kvkkolay/public_html/public/Getswish_Test_Certificates/Swish_TLS_RootCA.pem CApath:无 * NSS:来自文件的客户端证书 * 主题:C=SE,O=9697326040,CN=1232900561 * 开始日期:格林威治标准时间 2021 年 3 月 26 日 10:46:36 * 到期日期:格林威治标准时间 2026 年 3 月 26 日 10:46:26 * 通用名称:1232900561 * 发行人:CN=Swedbank Customer CA1 v2 for Swish,serialNumber=SWEDSESS,O=Swedbank AB (publ),C=SE * NSS 错误 -12227 (SSL_ERROR_HANDSHAKE_FAILURE_ALERT) * SSL 对等方无法协商可接受的安全参数集。 * 关闭连接 0解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)