支付宝异步通知数据形式如下,

$arr=array (

'discount' => '0.00',

'payment_type' => '1',

'subject' => '测试02',

'trade_no' => '2016031.............2958619',

'buyer_email' => '18776152065',

'gmt_create' => '2016-03-14 17:04:52',

'notify_type' => 'trade_status_sync',

'quantity' => '1',

'out_trade_no' => '16031238100064254059',

'seller_id' => '2099122451677261',

'notify_time' => '2016-03-14 17:04:53',

'body' => '测试02',

'trade_status' => 'TRADE_SUCCESS',

'is_total_fee_adjust' => 'N',

'total_fee' => '0.01',

'gmt_payment' => '2016-03-14 17:04:52',

'seller_email' => 'xxx@126.com',

'price' => '0.01',

'buyer_id' => '2065912804441725',

'notify_id' => '2cf4b6638.............c176e3f3lk2',

'use_coupon' => 'N',

'sign_type' => 'RSA',

'sign' => 'Q3uCDyyCs/nODpHaUeCb1HqGINlQ3AxOr40MUN.............Br40MU=',

)

对数组按KEY首字母排序

ksort($arr);

按官方文档做法,排除掉sign_type,sign然后拼成下面形式的待签名支付串 $SemiFinishedSign

body=Hello&buyer_email=13788888888&buyer_id=2088002007013600

.................................................................................

trade_no=2014040311001004361525&trade_status=TRADE_FINISHED&use_coupon=N

执行下面代码验签!

$pukey=file_get_contents('alipay_public_key.pem');

$publickey=openssl_pkey_get_public($pukey);

$verify=(bool)openssl_verify($SemiFinishedSign, base64_decode($arr['sign']), $publickey);

echo $verify?'验签成功':'验签失败';

用于支付的公私钥都没有问题,对任意字符,openssl_sign();openssl_verify();都能通过

但是验签总是失败,求指导!!

--------------------------更新 2016-03-15-----------------------------------------

已解决,文档中说,验签用的是支付宝公钥,并不是RSA公钥,申请接口的人没有给我支付宝公钥,我一直以为用RSA公钥,我用错了,

php 支付宝验签失败,支付宝移动支付,服务端对异步通知信息验签的时候验签失败...相关推荐

  1. PHP 实现支付宝APP 支付 (服务端 + 客户端 + 异步)

    目录 一.使用实例 二.服务端 1.下载SDK 2.业务层 3.业务层返回实例 推荐使用联调工具: 4.回调层 三.客户端 总结 一.使用实例 官方信息: 二.服务端 1.下载SDK App 支付服务 ...

  2. java 支付宝服务端,支付宝app支付服务端的实现-Java版

    前言 最近在工作中需要使用支付宝app支付,在初次使用过程中也不可避免的出现了一些问题,那么本次随笔主要是概述支付宝app支付服务端的整个实现过程以及就服务端出现的一些问题做一些总结. 1.准备工作 ...

  3. java app支付_Java 微信支付之APP支付服务端 (一)

    Java 微信支付之APP支付服务端 (一) 如图所示,这是服务端要集成的所有微信接口.至于在开放平台申请就不做赘述了.主要流程,1.下单,2.异步通知,3.查询. 一.微信统一下单请求交易 /** ...

  4. 微信APP支付服务端和Android 端详解及其demo

    最近在开发APP微信支付和支付宝支付,Android 端和后端都是我自己开发的,发现两家公司的文档都不是很友好,特别是微信,接触过或者开发过的人都应该有所体会.因此我特意把开发的过程梳理了,做下记录, ...

  5. Java 微信支付之APP支付服务端 (一)

    Java 微信支付之APP支付服务端 (一) 如图所示,这是服务端要集成的所有微信接口.至于在开放平台申请就不做赘述了.主要流程,1.下单,2.异步通知,3.查询. 一.微信统一下单请求交易 /*** ...

  6. 微信APP支付服务端demo

    1.创建应用(获取appid) 要开发APP微信支付,需要在微信开放平台(http://open.weixin.qq.com)上创建应用以获得应用id.微信有几个平台,一定要搞清楚,否则开发过程会觉得 ...

  7. 服务器金币转账系统繁忙,聚合支付服务端.PDF

    聚合支付服务端.PDF 聚合支付服务端 SDK接入指南 一.服务器端 SDK接入和开发2 1.1SDK安装和初始化2 1.1.1SDK安装 2 1.1.2SDK使用注意事项 2 1.1.3SDK初始化 ...

  8. 微信支付服务端自动对账

    微信支付服务端自动对账 支付及对账流程链接 自动对账说明 微信支付后每天的商户系统的自动对账还是比较繁琐的,所谓自动对账实际上就是将商户某天交易成功的订单信息与微信某天的账单进行逐一匹配的过程.其涉及 ...

  9. php ci框架 谷歌支付服务端校验

    //receipt客户端传递过来的参数 public function payverify($receipt = []){//谷歌后台申请到的json文件$this->configLocatio ...

  10. 微信app支付服务端开发记录

    微信APP支付服务端 调用接口需要注意事项: 1.签名:需要全部参数参加签名,空值去掉.(实际传递了什么参数需要,就根据实际参数进行签名) 2.签名参数:appid是申请支付功能的app对于的ID,k ...

最新文章

  1. activiti任务TASK
  2. Cloudify — OpenStack Infrastructure Plugin V3
  3. AB1601 PWM注意事项
  4. jQuery小测试系列之jQuery基础知识
  5. 通过JS如何获取IP地址
  6. linux shell 常用基本语法
  7. 同一Word文档不同尺寸(纸张)页面的混排方法
  8. 牛客假日团队赛5 L Catch That Cow HDU 2717 (BFS)
  9. Java 8 HashMap键与Comparable接口
  10. 火力发电厂与变电站设计防火标准_真题—火力发电厂1
  11. python dlib人脸检测_使用Python+OpenCV+Dlib实现人脸检测与人脸特征关键点识别
  12. 裸板烧写linux内核,嵌入式linux学习(二):烧写裸板进程
  13. 视频分享:挨踢项目求生法则(2)——战略篇
  14. Vue数据更新视图不更新的几种解决方案
  15. RAW socket使用
  16. Excel 条件格式应用及原理
  17. 称重软件测试工程师,无人值守称重管理系统研发团队
  18. OSPF的LSA类型 ——连载四ASBR汇总LSA
  19. 对经认定的黄浦区区级企业技术中心给予每家30万元奖励
  20. vue 四级联动 地址联动 vue级联选择

热门文章

  1. poj3259 Wormholes floyd求负环
  2. CFA一级学习笔记--衍生品(二)--定价与估值
  3. ASP.NET Web Pages - 教程
  4. python如何用色度表示数值大小_Python人体肤色检测
  5. ls 命令显示的total是什么意思
  6. ios相机黑边_iOS照相机去黑框
  7. 无线网络dns服务器设置,netgear 无线dns设置教程
  8. MLX90614红外测温模块的使用
  9. 使用SINet进行伪装目标检测
  10. 一套键鼠控制多台不同平台电脑——synergy使用详解