使用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也是相同的方式(如下图)



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

目录
相关文章
|
消息中间件 JavaScript 小程序
面试官:你了解 QPS、TPS、RT、吞吐量 这些高并发性能指标吗?
面试官:你了解 QPS、TPS、RT、吞吐量 这些高并发性能指标吗?
|
监控 前端开发 JavaScript
不了解 QPS、TPS、RT、并发数、吞吐量,劝你简历别写熟悉高并发
分布式、微服务、Service Mesh目前都是大家耳熟能详的词语了,现在随便一个互联网公司说出来大家都是在搞微服务。 但我们搞来搞去,怎么样来衡量一个应用当前的状态到底是怎么样的?到底需不需要扩容?是需要横向扩容还是进行项目重构?
11927 2
|
Java
Springboot集成第三方jar快速实现微信、支付宝等支付场景
Springboot集成第三方jar快速实现微信、支付宝等支付场景
1875 0
Springboot集成第三方jar快速实现微信、支付宝等支付场景
|
3月前
|
人工智能 JSON 自然语言处理
把 LLM 测试从"手摸"变成工程化——我试了 Promptfoo
Promptfoo 是开源的 LLM 提示词测试与评估框架,支持声明式 YAML 配置、多模型对比、自动化断言(含 LLM 评分)、红队安全测试及 CI/CD 集成,让提示词优化从“凭感觉”走向可量化、可回归、可监控的工程实践。(239字)
326 2
|
小程序 视频直播 数据安全/隐私保护
如何在1v1视频直播交友APP中实现防录屏防截屏功能?
婚恋交友市场快速增长,1v1社交应用海外投放增86.49%,中东、东南亚及北美需求旺盛。用户偏好私密高效交流,国内“云相亲”兴起。开发需合规备案、实名认证,并防范诈骗。本文详解原生APP防录屏技术:Android通过MediaProjection检测,iOS监听UIScreen状态,结合动态水印、远程销毁等增强防护,平衡体验与安全。
|
缓存 负载均衡 算法
深入解析Nginx的Http Upstream模块
Http Upstream模块是Nginx中一个非常重要的功能模块,它通过有效的负载均衡和故障转移机制,提高了网站的性能和可靠性。正确配置和优化这一模块对于维护大规模、高可用的网站至关重要。
709 19
|
Web App开发 机器学习/深度学习 人工智能
Magic Copy:开源的 AI 抠图工具,在浏览器中自动识别图像进行抠图
Magic Copy 是一款开源的 AI 抠图工具,支持 Chrome 浏览器扩展。它基于 Meta 的 Segment Anything Model 技术,能够自动识别图像中的前景对象并提取出来,简化用户从图片中提取特定元素的过程,提高工作效率。
1363 7
Magic Copy:开源的 AI 抠图工具,在浏览器中自动识别图像进行抠图
|
人工智能 安全 Nacos
MSE 企业版:全面拥抱 AI,SLA 99.99%,零信任安全
微服务引擎注册配置中心铂金版正式发布,支持Nacos 3.0 MCP服务动态注册与调优,提供比专业版更高的稳定性与安全能力,SLA达99.99%,服务推送性能提升300%。针对关键业务,铂金版通过独享核心资源实现更高规格配额,满足大规模需求。此外,新增MCP动态注册、HTTP服务转换、实时更新调优等功能,并强化数据源管理与安全能力,助力企业应对复杂业务挑战。
|
移动开发 HTML5
分享小诗梦404炫酷单页面html5源码
分享小诗梦404炫酷单页面html5源码,小诗梦的一个很炫酷页面,感觉应该符合一些人的感觉!可以用来做404页面。
625 1
分享小诗梦404炫酷单页面html5源码
|
安全 Android开发 Kotlin
Android经典面试题之Kotlin延迟初始化的by lazy和lateinit有什么区别?
**Kotlin中的`by lazy`和`lateinit`都是延迟初始化技术。`by lazy`用于只读属性,线程安全,首次访问时初始化;`lateinit`用于可变属性,需手动初始化,非线程安全。`by lazy`支持线程安全模式选择,而`lateinit`适用于构造函数后初始化。选择依赖于属性特性和使用场景。**
1227 5
Android经典面试题之Kotlin延迟初始化的by lazy和lateinit有什么区别?