开发者社区
社区提问意见反馈
开发者钉组织
扫描二维码
加入支付宝开发者钉组织
文档中心
网页&移动应用 
报关
产品介绍
集成接入指南
接入准备
接口列表
集成接入指南 > 附录:签名与验签
收藏
我的文档
设置
  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
  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,则验证通过。

内容没有解决您的问题?您还可以前往 或 寻求帮助
凯发k8官方网娱乐官方 copyright © 支付宝(杭州)数字服务技术有限公司  | icp证浙b2-20160559
该文档对你是否有帮助?
当前页面目录
网站地图