国密招商银行对接,签名已经通过,但是验签始终不通过,尝试了网上的很多发放都无法解决。

对接的招商银行的银企直连接口。
1、使用了lpilp/guomi的包
2、签名与验签参考的这位大神的demo 博客:国密招商银行对接
签名是可以的,但是验签的时候始终为false
3、参考网上的一些答案 www.cnblogs.com/blog-dyn/p/1630142... 验签也是false。希望有实现的大神能够指导一下,谢谢了~

暂时已经解决了,之前一直请求新增子单元接口,因为子单元不符合规定的字符长度,返回的数据中head的resultcode非SUC0000,这也就导致了body里面的内容为空,就会一直验签不通过。

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案

我看你参考那些都没排序,你可以把代码发出来,我的是通了,而且很多人问我,也弄通了的哈

$input = htmlspecialchars_decode($request['biz_content']);
$input = html_entity_decode($input);
$sign = $request['sign'];
$data['biz_content'] = $input;
$data['encoding'] = $request['encoding'];
$data['version'] = $request['version'];
$data['signMethod'] = $request['signMethod'];
$document = self::dataSort($data);
$publicKey = bin2hex(base64_decode(self::$gongyao));
$sm2 = new RtSm2('base64');
return $sm2->verifySign($document, $sign, $publicKey, self::$default_user_id);



private static function dataSort($data)
{
ksort($data, SORT_STRING);
$string1 = '';
foreach ($data as $key => $v) {
if (empty($v)) {
continue;
}
$string1 .= $key . '=' . $v . '&';
}
$string1 = substr($string1, 0, -1);
return $string1;
}

1年前 评论
reiz568569 (作者) 1年前
trc1995 (楼主) 1年前
讨论数量: 8

你需要把你怎么验证的代码贴出来才好知道是哪的问题

1年前 评论

我看你参考那些都没排序,你可以把代码发出来,我的是通了,而且很多人问我,也弄通了的哈

$input = htmlspecialchars_decode($request['biz_content']);
$input = html_entity_decode($input);
$sign = $request['sign'];
$data['biz_content'] = $input;
$data['encoding'] = $request['encoding'];
$data['version'] = $request['version'];
$data['signMethod'] = $request['signMethod'];
$document = self::dataSort($data);
$publicKey = bin2hex(base64_decode(self::$gongyao));
$sm2 = new RtSm2('base64');
return $sm2->verifySign($document, $sign, $publicKey, self::$default_user_id);



private static function dataSort($data)
{
ksort($data, SORT_STRING);
$string1 = '';
foreach ($data as $key => $v) {
if (empty($v)) {
continue;
}
$string1 .= $key . '=' . $v . '&';
}
$string1 = substr($string1, 0, -1);
return $string1;
}

1年前 评论
reiz568569 (作者) 1年前
trc1995 (楼主) 1年前

可以解决 需要支付费用 我这边有现成的案列 对接招商云直连的

1年前 评论

直接用前置机模式啊,省事

1年前 评论

046398495A306E0F9AD033D2F5C0FAAA223C18A8C84581332B0371005B5E7F7C73166841D11434F93507A9D8217DB3660E207B081EBF24057F2CC3738AA5FA4110 我这公钥加密的数据 java 那边解密不了怎么搞

9个月前 评论
reiz568569 9个月前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!