开发支付接口时未使用支付宝提供的 demo ,那个SDK一堆的坑,所以手工写的全部代码,未使用支付宝一点代码。支付一切正常,异步通知一切正常,异步验证正常。

唯独在查询订单和返回数据两个地方搞了半天,会返回“验签出错,建议检查签名字符串或签名私钥与应用公钥是否匹配,网关生成的验签字符串为”。从头到尾检查代码找不到问题,支付宝官方API列表看了又看,都没有问题。于是对比返回的错误数据和查询验签的数据,坑在此处。明明说好 biz_content 请求参数的集合,最大长度不限,除公共参数外所有请求参数都必须放在这个参数中传递,具体参照各产品快速接入文档。可是支付坑人在这里,实际是 biz_content 不但要作为 json 集合请求参数,还要与公共参数进行合并。

第一处坑:

// 公共请求参数

$arr = array(

'app_id' => $config['app_id'],

'method' => 'alipay.trade.query',

'format' => 'json',

'charset' => 'UTF-8',

'sign_type' => $config['sign_type'],

'timestamp' => date('Y-m-d H:i:s', $time),

'version' => '1.0',

'biz_content' => json_encode($biz_content, JSON_UNESCAPED_UNICODE) // 业务请求参数

);

$arr += $biz_content; // 坑在此处,要合并,不然验签会失败

第二处坑,主动查询订单状态,对返回数据验签:

如果一切正常的花,返回json数据中包含 alipay_trade_query_response 和 sign 签名,对 json 数据 json_decode 得到数组,坑出现了,我把得到 alipay_trade_query_response 排序转字符串,验签死活都是错误的。因为支付时,要求排序转字符串了,所以此处也就排序转字符串,那么大错特错了。此处得到的 alipay_trade_query_response 数据直接转 json 字串,然后验签才是正确做法。

其他说一下,容易搞错的。分清楚:应用私钥、应用公钥、支付宝公钥

1.应用私钥即为商户私钥,客户端使用,后台或支付宝配置中填写;

2.应用公钥在开放平台 “RSA2(SHA256)密钥(推荐)”处填写,然后返回 支付宝公钥;

3.支付宝公钥需要在客户端配置。

php支付宝同步和异步有什么区别,支付宝异步验签和同步验签相关推荐

  1. 同步请求和异步请求的区别

    同步请求和异步请求的区别 先解释一下同步和异步的概念 同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式.   异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据 ...

  2. (87)FPGA面试题-同步FIFO与异步FIFO区别?异步FIFO代码设计

    1.1 FPGA面试题-同步FIFO与异步FIFO区别?异步FIFO代码设计 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题-同步FIFO与异步FIFO区 ...

  3. 同步消息和异步消息传递的区别?

    在系统交互时候选择同步还是异步有时候很让人困扰,希望通过阅读这篇文章可以帮助更好的理解同步与异步. 同步与异步消息的区别 1.同步消息 同步消息传递涉及到等待服务器响应消息的客户端.消息可以双向地向两 ...

  4. 同步电路和异步电路的区别

    摘自 何宾著<XilinxFPGA设计权威指南>P86~P91 同步电路和异步电路的区别在于电路触发是否与驱动时钟同步,从行为上讲,就是所有电路是否在同一时钟沿下同步地处理数据. 同步复位 ...

  5. 同步和异步有什么区别,分别在什么场景下使用

    最近在工作中遇到了一个问题,所以记录一下,简单来说就是前端需要调用一个流程,但是这个流程的id需要从后台去获取,获取的方式为Ajax方式,但是Ajax方法没有设置为同步,导致function方法里面的 ...

  6. 支付宝支付整体流程,包括验签【同步】【异步】

    一.前期准备 1.支付宝开放平台沙箱账号,用于测试 应用公钥需要使用支付宝第三方工具生成,最好在本地备份好,公钥以及配对的密钥 2.javasdk的maven仓库 javasdk 3.内网穿透,使内网 ...

  7. 服务器同步/异步通知参数说明 (支付宝)

    开发平台文档 同步通知:支付宝sdk对商户的请求支付数据处理完成后,会将结果同步反馈给商户app端. 异步通知:对于App支付产生的交易,支付宝会根据原始支付API中传入的异步通知地址notify_u ...

  8. 异步就是异步,根本就没有 异步非阻塞IO这个说法。阻塞 非阻塞,同步I/O 异步I/O 的区别

    先给大家安利一下这个 https://www.ibm.com/developerworks/cn/linux/l-async/ 里面关于 异步非阻塞IO 是错的. 异步就是异步,别扯 异步阻塞 异步非 ...

  9. 杂谈——Java中同步与异步有什么区别

    大家在使用手机的时候,比如小米手机,自带云空间,可以将数据同步到云空间上:很多文档app也有同步的功能.而我们牛气冲冲的Java自然也有同步与异步,不过Java中的同步与异步似乎与我们平常认知中的同步 ...

最新文章

  1. java key值_java-必须为此操作提供PartitionKey值
  2. 非常不错的sharepoint webpart工具集
  3. UIScrollView事件拦截
  4. 2500 万行的代码就问你敢不敢动?!
  5. scrapy爬个小网站
  6. 【我的物联网成长记2】设备如何进行选型?
  7. ECShop 自定义函数以及调用
  8. day01 python入门之路
  9. 数据库操作之——约束
  10. Python ASCII码
  11. duilib开发(七):复杂控件介绍
  12. 微信小程序实现登录注册页面
  13. python RGB转HSV 阴影识别
  14. 估值3000亿,中国最神秘电商公司,征服美国年轻人
  15. linux samba 漏洞 exp,smaba漏洞总结
  16. 【历史上的今天】12 月 21 日:Ruby 语言问世;玛雅预言世界末日;计算机先驱诞生日
  17. java.lang.IllegalArgumentException: Address 127.0.0.1:5672:5672 seems to contain an unquoted IPv6
  18. Homebrew进阶使用教程(二)-用一个命令行天气客户端构建自己的仓库
  19. 小众软件:画简洁风格的原型图
  20. java查找图片_用java查找图片中的图片?

热门文章

  1. NVIDIA A100 GPUs上硬件JPEG解码器和NVIDIA nvJPEG库
  2. 深度学习调参体验(一)
  3. 2021年大数据Spark(十一):应用开发基于IDEA集成环境
  4. 黑客基础知识与防护(二)
  5. linux locale文件,Linux 怎样修改locale语言设置
  6. HarmonyOS Java工程目录结构
  7. Java 二进制,八进制,十进制,十六进制
  8. 微信小程序showModel使用注意
  9. 在Andoird studio 中用代码实现setId报错,而在ecplise中可以,的处理方法
  10. CCF CSP 201609-2 火车购票