• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

支付宝支付之php后台签名实现方法

php 搞代码 4年前 (2022-01-22) 19次浏览 已收录 0个评论

签名和验签在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");//发送请求的时间    $para<div style="color:transparent">!本文来源gaodai.ma#com搞##代!^码网(</div><sup>搞gaodaima代码</sup>m['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实现QQ、微信和支付宝收款码一致

PHP后端银联支付及退款实例详解

以上就是支付宝支付之php后台签名实现方法的详细内容,更多请关注搞代码gaodaima其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:支付宝支付之php后台签名实现方法

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址