#

签名与验签

更新时间:2017-06-13

# [](https://docs.open.alipay.com/#%E8%AF%B7%E6%B1%82%E5%8F%82%E6%95%B0%E7%AD%BE%E5%90%8D)请求参数签名

1. 筛选

获取所有请求参数,不包括字节类型参数,如文件、字节流,剔除sign与sign\_type参数。

2. 排序

将筛选的参数按照第一个字符的键值ASCII码递增排序(字母升序排序),如果遇到相同字符则按照第二个字符的键值ASCII码递增排序,以此类推。

3. 拼接

**将排序后的参数与其对应值,组合成“参数=参数值”的格式,并且把这些参数用&字符连接起来,此时生成的字符串为待签名字符串。MD5签名的商户需要将key的值拼接在字符串后面,调用MD5算法生成sign;RSA签名的商户将待签名字符串和商户私钥带入SHA1算法中得出sign。**

商户如用支付宝提供的demo集成,demo已写好签名验签的方法,商户可直接调用,如自己开发不用demo,则按以上方法拼接待签名字符串。**以下是待签名字符串的示例,key值已被隐藏,参数值都是示例不是真实的,商户参考格式即可:**

~~~

_input_charset=utf-8&body=testjsdzbody&notify_url=http://www.test.com/create_direct_pay_by_user-JAVA-UTF-8/notify_url.jsp&out_trade_no=9890879868657&partner=2088000000000000&payment_type=1&return_url=http://www.baidu.com&seller_id=2088000000000000&service=create_direct_pay_by_user&subject=testjsdz&total_fee=0.01svzitn**********pslfal77xlxm0qhc

~~~

以下是最终的请求信息,sign值被隐藏:

~~~

http://mapi.alipay.com/gateway.do?body=testjsdzbody&subject=testjsdz&sign_type=MD5&notify_url=http://www.test.com/create_direct_pay_by_user-JAVA-UTF-8/notify_url.jsp&out_trade_no=9890879868657&return_url=http://www.baidu.com&sign=***&_input_charset=utf-8&total_fee=0.01&service=create_direct_pay_by_user&partner=2088000000000000&seller_id=2088000000000000&payment_type=1

~~~

# [](https://docs.open.alipay.com/#%E8%BF%94%E5%9B%9E%E5%8F%82%E6%95%B0%E9%AA%8C%E8%AF%81%E7%AD%BE%E5%90%8D)返回参数验证签名

1. 筛选

获取所有支付宝返回的参数,不包括字节类型参数,如文件、字节流。验签参数剔除sign与sign\_type参数。

2. 排序

将筛选的参数按照第一个字符的键值ASCII码递增排序(字母升序),如果遇到相同字符则按照第二个字符的键值ASCII码递增排序,以此类推。

3. 拼接

将排序后的参数与其对应值,组合成“参数=参数值”的格式,并且把这些参数用&字符连接起来。

例如下面的返回示例(此示例跟上面的请求示例没关系,其中的值都是示例不是真实的,商户参考格式即可):

~~~

http://商户自定义地址/notify_url.php?trade_no=2014040311001004370000361525&out_trade_no=3618810634349901&subject=测试&body=Hello&price=10.00&quantity=1&total_fee=10.00&trade_status=TRADE_FINISHED&seller_email=test@test.com&seller_id=2088002007018916&buyer_id=2088002000000000&buyer_email=13788888888&gmt_create=2014-04-03 20:49:31&is_total_fee_adjust=N&gmt_payment=2014-04-03 20:49:50&use_coupon=N&notify_time=2014-04-03 20:49:52&notify_type=trade_status_sync&notify_id=70fec0c2730b27528665af4517c27b95&sign_type=DSA&sign=_p_w_l_h_j0b_gd_aejia7n_ko4_m%2Fu_w_jd3_nx_s_k_mxus9_hoxg_y_r_lunli_pmma29_t_q%3D%3D&extra_common_param=你好,这是测试商户的广告。

~~~

组成的待签名字符串为:

~~~

body=Hello&buyer_email=13788888888&buyer_id=2088002007013600&extra_common_param=你好,这是测试商户的广告。&gmt_create=2014-04-03 20:49:31&gmt_payment=2014-04-03 20:49:50&is_total_fee_adjust=N&notify_id=70fec0c2730b27528665af4517c27b95&notify_time=2014-04-03 20:49:52&notify_type=trade_status_sync&out_trade_no=3618810634349901&price=10.00&quantity=1&seller_email=test@test.com&seller_id=2088002007018916&subject=测试&total_fee=10.00&trade_no=2014040311001004370000361525&trade_status=TRADE_FINISHED&use_coupon=N

~~~

demo中提供了验签的示例,商户可直接调用或参考。MD5:把MD5密钥(Key)拼接在待验证签名的字符串尾部,然后使用各自语言对应的MD5加密函数进行加密,得到的加密值与支付宝返回的参数sign做“相等”判断,同时对返回参数中的notify\_id进行验证,如果这两个数据同时为true,则验证通过。

支付宝 java 签名算法_(支付宝)签名与验签相关推荐

  1. 支付宝APP支付-php后台签名以及验签

    签名和验签在APP端也是可以完成的,考虑到安全问题,签名和验签最好在服务端完成,支付宝官方建议也是这样的,所以php端需要把签名好的参数传给APP端.详细步骤见正文: 一. 下载php支付宝sdk h ...

  2. 支付宝请求签名php,支付宝APP之php后台签名以及验签实现方法

    签名和验签在APP端也是可以完成的,考虑到安全问题,签名和验签最好在服务端完成,支付宝官方建议也是这样的,所以php端需要把签名好的参数传给APP端.详细步骤见正文: 一. 下载php支付宝sdk h ...

  3. 支付宝开放平台2.0签名、验签失败以及PHP-SDK使用说明

    前言: 你一定像我一样对支付流程还算熟悉,但打死不从头阅读文档(逐字逐句理解),还对过往的经验沾沾自喜.盲目自大,造成验签失败! 如果你用心再看一遍官方文档,那么接下来的内容不看也罢.仅对接支付接口. ...

  4. 支付宝java代码_支付宝回调JAVA版代码

    支付宝回调: 1 //这个是支付宝回调的信息 2 @RequestMapping("alipay_callback.do") 3 @ResponseBody 4 public Ob ...

  5. MD5数字签名算法:生成签名和验签(附代码)

    一.背景 为了增加接口的安全性(防止中间人攻击),现增加签名算法.此算法参考微信支付中的签名算法,由于该签名针对前后端,采用了对称算法,如后续接口供给多家第三方接口使用可采用非对称算法.大致整理文档供 ...

  6. 支付宝 java 乱码_支付宝即时到账接口中文乱码问题

    遇见乱码的情况一般都是粗心大意造成的,就像我今天对接支付宝支付接口碰到的中文商品名称在支付宝收银台乱码了,找了半天问题原来是控制层没有设置响应编码造成的. //设置返回字符编码,设置返回内容类型防止中 ...

  7. php如何做md5签名,MD5数字签名算法:生成签名和验签(附代码)

    一.背景 为了增加接口的安全性(防止中间人攻击),现增加签名算法.此算法参考微信支付中的签名算法,由于该签名针对前后端,采用了对称算法,如后续接口供给多家第三方接口使用可采用非对称算法.大致整理文档供 ...

  8. PHP 支付宝SDK加密与解密、签名与验签(含php原生写法)

    1.使用支付宝SDK,本次使用的SDK是老版 支付宝文档:https://opendocs.alipay.com/open/54/103419 首先下载或使用新上线的Web在线加密,生成应用私钥与应用 ...

  9. 支付宝支付API之签名与验签

    支付宝开发平台支付API文档: https://docs.open.alipay.com/291/106130 对接支付API出现问题的主要原因:数据被转义,所以在调试时先把数据可以写死 注意:在调试 ...

最新文章

  1. 在ESXi5,1,ESXi5.5安装异步驱动程序
  2. 如何开始你的CTF比赛之旅
  3. 图普科技招聘有关深度学习的解题?
  4. Python学习笔记6(列表生成式)
  5. 简述单机,集群,分布式架构区别及联系
  6. 图片识别不了小程序怎么办_图片转文字【微信小程序】
  7. 设置Windows 10时如何创建本地帐户
  8. activity6快速部署流程文件
  9. linux gtk python,python-Linux上具有pygtk(gtk.gdk)的桌面/根窗口上的键盘/鼠标事件
  10. 用UITextView加载rtfd文件
  11. 激光雷达科普(1):激光雷达的分类及重要参数
  12. 计算机打印病历格式要求,计算机打印病历书写要求
  13. 戴尔linux恢复镜像,如何从官网下载并使用系统恢复映像
  14. 什么样的黑客能用python盗QQ号
  15. 过滤多余的空格-C语言
  16. 如何分组取最新的数据
  17. 【MySQL | 运维篇】06、MySQL 分库分表之 MyCat 分片规则
  18. VMware的 Mount虚拟光驱问题
  19. 大数据时代社会治理智能化 中地数码带来科技“及时雨”
  20. UE4+科大讯飞语音听写2

热门文章

  1. 动画设置参数,有数值,收藏了
  2. iOS 面向切面编程 Aspects 库的使用
  3. 画论23 李廌《德隅斋画品》
  4. 《游戏编程模式》--行为模式--学习
  5. PHP开发实战权威指南-读书总结
  6. Merry Go Round: Rotate a Frame and Fool a DNN
  7. 2022 鹅厂校招年薪40W相比某某跳动应届生月薪4K被劝退,差距真就这么大吗?
  8. 使用Eclipse和Tomcat搭建Android服务端
  9. 如果给定世界价格是1单位计算机交换22,可以帮帮我吗?我有几个题目不会做,有劳各位了。...
  10. 基于MATLAB的BR神经网络交叉验证实践