开发者社区> 扬朋> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

使用sdk验签方法详解

简介: 说明:正常接口使用 AlipaySignature.rsaCheckV1,sign_type不参与签名     特殊说明:AlipaySignature.rsaCheckV2方法生活号异步通知需要使用,会保留sign_type参数参与验签。
+关注继续查看

说明:正常接口使用 AlipaySignature.rsaCheckV1,sign_type不参与签名    

特殊说明:AlipaySignature.rsaCheckV2方法生活号异步通知需要使用,会保留sign_type参数参与验签。

代码示例:   

php语言:

function checkSign($arr){
    $aop = new AopClient();
    $aop->alipayrsaPublicKey = $this->alipay_public_key;
    $result = $aop->rsaCheckV1($arr, $this->alipay_public_key, $this->signtype);
    return $result;
}

 java语言:

//获取支付宝POST过来反馈信息
Map<String,String> params = new HashMap<String,String>();
Map requestParams = request.getParameterMap();
for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext();) {
    String name = (String) iter.next();
    String[] values = (String[]) requestParams.get(name);
    String valueStr = "";
    for (int i = 0; i < values.length; i++) {
        valueStr = (i == values.length - 1) ? valueStr + values
                : valueStr + values + ",";
    }
    //乱码解决,这段代码在出现乱码时使用。如果mysign和sign不相等也可以使用这段代码转化
    //valueStr = new String(valueStr.getBytes("ISO-8859-1"), "gbk");
    params.put(name, valueStr);
}
    //商户订单号
    String out_trade_no = new String(request.getParameter("out_trade_no").getBytes("ISO-8859-1"),"UTF-8");
    //支付宝交易号
    String trade_no = new String(request.getParameter("trade_no").getBytes("ISO-8859-1"),"UTF-8");
    //交易状态
    String trade_status = new String(request.getParameter("trade_status").getBytes("ISO-8859-1"),"UTF-8");
 
    //计算得出通知验证结果
    boolean verify_result = AlipaySignature.rsaCheckV1(params, AlipayConfig.ALIPAY_PUBLIC_KEY, AlipayConfig.CHARSET, "RSA2");
    if(verify_result){//验证成功
        if(trade_status.equals("TRADE_FINISHED")){
        } else if (trade_status.equals("TRADE_SUCCESS")){
        }
        out.clear();
        out.println("success"); //请不要修改或删除
    }else{//验证失败
        out.println("fail");
    }

建议:如果是php,java,.NET可以参考手机网站官方demo异步通知验签(因为所有支付接口验签方式都是一样的方式)

1.demo下载地址:点击查看demo  

2.只是用notify_url相关关联文件即可,php也是相同的方式(如下图) 

46_191_8dd16de6bb83a51.jpg

常见问题 

验签失败自查:https://openclub.alipay.com/read.php?tid=1598

使用工具验签方法:https://openclub.alipay.com/read.php?tid=2208


大家如果在测试过程中有什么疑问欢迎在帖子下方追问吐

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Kam
seata使用及配置详解
seata使用及配置详解
353 0
客户端骨架屏详解
客户端骨架屏详解
66 0
SDK V1.2发布
信息摘要: 优化弱网体验,丢包网络下,延时更低、视频更清晰; 支持WebRTC SDK, 支持Android、iOS、Windows、Mac 适用客户: 在线教育、远程医疗、互动娱乐等音视频开发者版本/规格功能: 1.
1404 0
Vue---导航守卫使用方法详解
导航守卫 正如其名,vue-router 提供的导航守卫主要用来通过跳转或取消的方式守卫导航。有多种机会植入路由导航过程中:全局的, 单个路由独享的, 或者组件级的。 记住参数或查询的改变并不会触发进入/离开的导航守卫。
1793 0
Postman使用详解
前言: Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件。 接口请求流程 一、get请求 GET请求:点击Params,输入参数及value,可输入多个,即时显示在URL链接上,所以,GET请求的请求头与请求参数如在接口文档中无特别声明时,可以不填。
1561 0
x3d
迅搜sdk试用
1. sdk支持PHP 2. 针对mysql的某个库的某个表??进行索引,简单的说就是一个project,需要对应一个配置文件; 3. 分索引服务与搜索服务两个,另带中文分词功能;索引数据会有演示,但做外测试来说,可以用它自带的功能手动生成数据; 4.
736 0
+关注
扬朋
支付宝小程序开发者运营专家
516
文章
69
问答
来源圈子
更多
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载