签名和验签在APP端也是可以完成的,考虑到安全问题,签名和验签最好在服务端完成,支付宝官方建议也是这样的,所以php端需要把签名好的参数传给APP端。本文主要和大家分享 支付宝支付之php后台签名实现方法,希望能帮助到大家。

一、 下载php支付宝sdk

https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.eCtVsf&treeId=54&articleId=103419&docType=1 (旧)

https://docs.open.alipay.com/54/103419/(新)

二、 查看支付宝App支付请求参数文档,拼接请求参数,签名

App支付请求参数说明

https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.wM4mV1&treeId=204&articleId=105465&docType=1(旧)

https://docs.open.alipay.com/204/105465/(新)

先是参数拼接生成签名,再把前面的参数和签名进行组装。核心代码如下:require_once '/Alipay/aop/AopClient.php'; $private_path = "/Alipay/key/rsa_private_key.pem";//私钥路径

//构造业务请求参数的集合(订单信息)

$content = array(); $content['subject'] = "商品的标题/交易标题/订单标题/订单关键字等"; $content['out_trade_no'] = "商户网站唯一订单号"; $content['timeout_express'] = "该笔订单允许的最晚付款时间"; $content['total_amount'] = "订单总金额(必须定义成浮点型)"; $content['product_code'] = "QUICK_MSECURITY_PAY";/销售产品码,固定值 $con = json_encode($content);//$content是biz_content的值,将之转化成json字符串//公共参数

$Client = new \AopClient();//实例化支付宝sdk里面的AopClient类,下单时需要的操作,都在这个类里面

$param['app_id'] = '支付宝分配给开发者的应用ID'; $param['method'] = 'alipay.trade.app.pay';//接口名称,固定值

$param['charset'] = 'utf-8';//请求使用的编码格式

$param['sign_type'] = 'RSA2';//商户生成签名字符串所使用的签名算法类型

$param['timestamp'] = date("Y-m-d Hi:i:s");//发送请求的时间

$param['version'] = '1.0';//调用的接口版本,固定为:1.0

$param['notify_url'] = '支付宝服务器异步回调地址'; $param['biz_content'] = $con;//业务请求参数的集合,长度不限,json格式,即前面一步得到的

$paramStr = $Client->getSignContent($param);//组装请求签名参数

$sign = $Client->alonersaSign($paramStr, $private_path, 'RSA2', true);//生成签名

$param['sign'] = $sign; $str = $Client->getSignContentUrlencode($param);//最终请求参数

请求的说明,支付宝说的很清楚,这里再重新附上截图:

三、验签

App 支付成功后会有返回字符串,客服端也需要判断,这里不罗嗦,如下图:

下一步就是在php服务端进行验签,支付宝异步会以post方式返回数据到异步回调地址:function notify()

{

require_once('/alipay/aop/AopClient.php'); $aop = new \AopClient; //$public_path = "key/rsa_public_key.pem";//公钥路径

$aop->alipayrsaPublicKey = "支付宝公钥"; //此处验签方式必须与下单时的签名方式一致

$flag = $aop->rsaCheckV1($_POST, NULL, "RSA2"); //验签通过后再实现业务逻辑,比如修改订单表中的支付状态。

/**

* ①验签通过后核实如下参数out_trade_no、total_amount、seller_id

* ②修改订单表

**/

//打印success,应答支付宝。必须保证本界面无错误。只打印了success,否则支付宝将重复请求回调地址。

echo 'success';

}

之前一直验签失败,找了好久,终于解决了。文档中说,验签用的是支付宝公钥,并不是RSA2公钥,这里需要特别注意,不要用错了

请看截图:

相关推荐:

支付宝签名php,支付宝支付之php后台签名实现方法相关推荐

  1. 支付宝 微信 内购 支付

    iOS支付 iOS支付分为两类,第三方支付和应用内支付(内购). 第三方支付包括:支付宝支付.微信支付.银联支付.百度钱包.京东支付等等. 应用内支付(In-App Purchase):在应用程序内购 ...

  2. fastadmin 微信支付宝整合插件 支付宝APP支付 ALIN10146

    1.调试微信支付宝整合插件支付宝APP支付,支付宝支付一直报错 ALIN10146调了6个小时 我使用的是 微信支付宝整合插件,以下为我调用支付的代码 $params = ['amount'=> ...

  3. SpringBoot集成支付宝沙箱手机网站支付详细流程和踩坑分享

    描述 本文主要讲解SpringBoot集成支付宝沙箱手机网站支付,即网页点击按钮发起支付,跳转到沙箱app付款 由于其他博客的流程大多笼统,有时候并不能找到正确的集成方式,本文尽可能详细的阐述付款,异 ...

  4. Java支付宝二维码支付和退款,微信二维码支付

    在蚂蚁金服开发平台下载demo 打开 TradePayDemo 项目,里面的main可以直接运行,在配置文件zfbinfo.properties中改为自己支付宝的信息 # 支付宝网关名.partner ...

  5. java 支付宝 第三方即时到账支付 接口

    alipay 的几个内核功能文件: AlipayFunction.Java package com.test.util.alipay;import java.io.FileWriter; import ...

  6. 支付宝微信扫码支付调研

    一.支付宝扫码支付 1.1 系统流程说明 1.1.1 条码支付(被扫) 条码支付是支付宝给到线下传统行业的一种收款方式.商家使用扫码枪等条码识别设备扫描用户支付宝钱包上的条码/二维码,完成收款.用户仅 ...

  7. 支付宝沙箱环境 电脑支付

    项目场景: java语言,jdk1.8也可以使用 .支付宝沙箱环境电脑支付. 电脑端生成二维码,手机端扫描支付 AlipayConfig: APP 中接收数据代码: package com.hc;/* ...

  8. 一码多付-------支付宝/微信扫码支付(H5支付) 静态码

    为了实现一码多付 生成一个通用二维码  通过支付宝或者微信都可以支付 1 使用支付宝扫码支付 支付宝提供了 扫码枪,用户扫商户动态生成的码 这样会根据用户不同或者金额不同需要动态的码,这样显然是不可以 ...

  9. java 支付宝 第三方即时到账支付

    java 支付宝 第三方即时到账支付 alipay 的几个内核功能文件: =============================================================== ...

最新文章

  1. 读书笔记:《图解HTTP》第一章 网络基础
  2. Python 爬虫篇-利用BeautifulSoup库爬取墨迹天气网的天气信息实例演示,调用墨迹天气api接口获取空气质量
  3. gradle本地、远程仓库配置--转
  4. Java 里的 abstract 和 final 关键字
  5. Python面向对象:isinstance和issubclass
  6. 【深度学习】一位算法工程师从30+场秋招面试中总结出的超强面经——目标检测篇(含答案)...
  7. php做的物资管理系统,基于WEB的物资管理信息系统
  8. 链表面试题1:反转单链表,不带头结点。
  9. linux扫盲之CPU模式
  10. java 轻量级 编辑器_Java相关概念汇总
  11. springboot 指定 logback_spring boot与日志
  12. PostgreSQL在何处处理 sql查询之五十三
  13. 构建REST风格的Web Service (转)
  14. linux 查看进程打开的文件和库
  15. python做社会网络分析_利用GooSeeker分词、Ucient和NetDraw进行社会网络分析
  16. java 读音_数的读法 (Java代码)
  17. iredmail mysql 密码_CloudCare-iRedMail 运行环境镜像使用指南
  18. 网站服务器进不去可以加速进去吗,让网页打开加速的方法
  19. CentOS 7.2设置中英文环境
  20. [LOJ]#6515. 「雅礼集训 2018 Day10」贪玩蓝月

热门文章

  1. 文件服务器——NFS
  2. 解决关于在安装Linux后Grub中没有原先Windows引导的问题
  3. 建筑CAD基础设计【3】
  4. 分析1300万起案件:洛杉矶警局如何用大数据预测犯罪?
  5. Rebus渲染农场分析
  6. sublimelinter_开发人员使用SublimeLinter指南
  7. python怎么统计多少字符_python统计中文字符数量的两种方法
  8. 自动控制原理(根轨迹)
  9. 归纳偏置/归纳偏差/inductive bias
  10. 《设计模式解析》读书笔记