php支付宝APP支付功能


Posted in PHP onJuly 29, 2020

本文实例为大家分享了php支付宝APP支付的具体代码,供大家参考,具体内容如下

支付宝网页支付

1.支付宝开放平台添加应用,获得appid,并签约。

2.在支付宝开放品台设置如下:

php支付宝APP支付功能

3.配置支付宝的应用公钥。(根据支付宝的文档)

4.在开放平台下载官方sdk demo。

5.代码:

//支付宝
 include_once VENDOR_PATH . 'Alipay/aop/AopClient.php';
 include_once VENDOR_PATH . 'Alipay/aop/request/AlipayTradeAppPayRequest.php';
 $notify_url='https://www.www.com/app/pay/AlipayStep3Notify';
 $config = array(
  'appid' =>$this->appid,//
  'rsaPrivateKey' =>$this->rsaPrivateKey,//开发者私钥私钥
  'alipayrsaPublicKey'=>$this->alipayrsaPublicKey,//支付宝公钥
  'charset'=>strtolower('utf-8'),//编码
  'notify_url' =>$notify_url,//回调地址(支付宝支付成功后回调修改订单状态的地址)
  'payment_type' =>1,//(固定值)
  'seller_id' =>'',//收款商家账号
  'charset' => 'utf-8',//编码
  'sign_type' => 'RSA2',//签名方式
  'timestamp' =>date("Y-m-d H:i:s"),
  'version' =>"1.0",//固定值
  'url' => 'https://openapi.alipay.com/gateway.do',//固定值
  'method' => 'alipay.trade.app.pay',//固定值
 );
  
   $aop = new \AopClient();
   $aop->gatewayUrl = "https://openapi.alipay.com/gateway.do";
   $aop->appId = $config['appid'];
   $aop->rsaPrivateKey = $config['rsaPrivateKey'];
   $aop->format = "json";
   $aop->charset = "UTF-8";
   $aop->signType = "RSA2";
   $aop->alipayrsaPublicKey=$config['alipayrsaPublicKey'];
  //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
   $request = new \AlipayTradeAppPayRequest();
  //SDK已经封装掉了公共参数,这里只需要传入业务参数
   
   $bizcontent = json_encode([
    'body'=>'**',
    'subject'=>$subject,
    'out_trade_no'=> $order_sn,//此订单号为商户唯一订单号
    'total_amount'=>$totalprice,//保留两位小数
    'product_code'=>'QUICK_MSECURITY_PAY'
   ]);
   $request->setNotifyUrl($config['notify_url']);
   $request->setBizContent($bizcontent);
  //这里和普通的接口调用不同,使用的是sdkExecute
   $response = $aop->sdkExecute($request);
  //htmlspecialchars是为了输出到页面时防止被浏览器将关键参数html转义,实际打印到日志以及http传输不会有这个问题
  $datas=$response;//就是orderString 可以直接给客户端请求,无需再做处理。
  $this->arr['code']=0;
  $this->arr['msg']=$order_sn;
  $this->arr['info']=$datas;
  echo json_encode($this->arr);exit;

6.支付回调notify_url。

include_once VENDOR_PATH . 'Alipay/aop/AopClient.php';
  $aop = new \AopClient();
  $config['alipayrsaPublicKey']=$this->$alipayrsaPublicKey;//公钥
  $aop->alipayrsaPublicKey = $config['alipayrsaPublicKey'];
  //此处验签方式必须与下单时的签名方式一致
  $flag = $aop->rsaCheckV1($_POST, NULL, "RSA2");
  //验签通过后再实现业务逻辑,比如修改订单表中的支付状态。
  /**
  ①验签通过后核实如下参数out_trade_no、total_amount、seller_id
  ②修改订单表
  **/
  $out_trade_no = I('post.out_trade_no'); //商户订单号

之后对数据库对应的数据进行修改。

7.订单查询接口:

include_once VENDOR_PATH . 'Alipay/aop/SignData.php';
 include_once VENDOR_PATH . 'Alipay/aop/AopClient.php';
 include_once VENDOR_PATH . 'Alipay/aop/request/AlipayTradeQueryRequest.php';
 $config = array(
  'appid' =>$this->appid,//
  'rsaPrivateKey' =>$this->rsaPrivateKey,//开发者私钥私钥
  'alipayrsaPublicKey'=>$this->alipayrsaPublicKey,//支付宝公钥
  'charset'=>strtolower('utf-8'),//编码
  'notify_url' =>'',//回调地址(支付宝支付成功后回调修改订单状态的地址)
  'payment_type' =>1,//(固定值)
  'seller_id' =>'',//收款商家账号
  'charset' => 'utf-8',//编码
  'sign_type' => 'RSA',//签名方式
  'timestamp' =>date("Y-m-d H:i:s"),
  'version' =>"1.0",//固定值
  'url' => 'https://openapi.alipay.com/gateway.do',//固定值
  'method' => 'alipay.trade.query',//固定值
 );
  
   $aop = new \AopClient();
   $aop->gatewayUrl = "https://openapi.alipay.com/gateway.do";
   $aop->appId = $config['appid'];
   $aop->rsaPrivateKey = $config['rsaPrivateKey'];
   $aop->format = "json";
   $aop->charset = "UTF-8";
   $aop->signType = "RSA2";
   $aop->method = $config['method'];
   $aop->apiVersion = '1.0';
   $aop->alipayrsaPublicKey=$config['alipayrsaPublicKey'];
  //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.query
   $request = new \AlipayTradeQueryRequest();
 
   $bizcontent = json_encode([
    'out_trade_no'=>$order_sn,
    'trade_no'=>''
   ]);
   
   $request->setBizContent($bizcontent);
  
   $response = $aop->execute($request);
 
   $responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response";
   $resultCode = $response->$responseNode->code;
   if(!empty($resultCode)&&$resultCode == 10000){
 
    $this->arr['code']=0;
    $this->arr['msg']='success';
    echo json_encode($this->arr);exit;
  
   } else {
    $this->arr['code']=100001;
    $this->arr['msg']='未查询到订单信息';
    echo json_encode($this->arr);exit;
   
 }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP与SQL注入攻击[三]
Apr 17 PHP
PHP开发不能违背的安全规则 过滤用户输入
May 01 PHP
PHP中使用unset销毁变量并内存释放问题
Jul 05 PHP
PHP获取当前页面完整URL的实现代码
Jun 10 PHP
PHP+MySQL插入操作实例
Jan 21 PHP
ThinkPHP自定义函数解决模板标签加减运算的方法
Jul 03 PHP
WordPress中用于检索模版的相关PHP函数使用解析
Dec 15 PHP
Yii实现单用户博客系统文章详情页插入评论表单的方法
Dec 28 PHP
php性能分析之php-fpm慢执行日志slow log用法浅析
Oct 17 PHP
Yii框架的布局文件实例分析
Sep 04 PHP
PHP实现文件上传后台处理脚本
Mar 04 PHP
PHP的垃圾回收机制代码实例讲解
Feb 27 PHP
PHP多个图片压缩成ZIP的方法
Aug 18 #PHP
PHP上传文件及图片到七牛的方法
Jul 25 #PHP
详解PHP版本兼容之openssl调用参数
Jul 25 #PHP
PHP实现的多维数组去重操作示例
Jul 21 #PHP
php实现生成PDF文件的方法示例【基于FPDF类库】
Jul 21 #PHP
记录Yii2框架开发微信公众号遇到的问题及解决方法
Jul 20 #PHP
ThinkPHP 3使用OSS的方法
Jul 19 #PHP
You might like
PHP实现服务器状态监控的方法
2014/12/09 PHP
PHP使用mkdir创建多级目录的方法
2015/12/22 PHP
PDO::inTransaction讲解
2019/01/28 PHP
PHP+Ajax简单get验证操作示例
2019/03/02 PHP
表单JS弹出填写提示效果代码
2011/04/16 Javascript
使用按钮控制以何种方式打开新窗口的属性介绍
2012/12/17 Javascript
js中eval()函数和trim()去掉字符串左右空格应用
2013/02/02 Javascript
Raphael带文本标签可拖动的图形实现代码
2013/02/20 Javascript
jquery iframe操作详细解析
2013/11/20 Javascript
JavaScript数组函数unshift、shift、pop、push使用实例
2014/08/27 Javascript
深入探讨前端框架react
2015/12/09 Javascript
如何提高Dom访问速度
2017/01/05 Javascript
微信小程序实现滑动删除效果
2017/05/19 Javascript
对于Javascript 执行上下文的全面了解
2017/09/05 Javascript
基于dataset的使用和图片延时加载的实现方法
2017/12/11 Javascript
JavaScript事件对象event用法分析
2018/07/27 Javascript
基于vue的验证码组件的示例代码
2019/01/22 Javascript
详解vue 在移动端体验上的优化解决方案
2019/05/20 Javascript
JS中超越现实的匿名函数用法实例分析
2019/06/21 Javascript
jquery分页优化操作实例分析
2019/08/23 jQuery
Vue中img的src是动态渲染时不显示的解决
2019/11/14 Javascript
解决vue单页面应用打包后相对路径、绝对路径相关问题
2020/08/14 Javascript
详解vue-router的导航钩子(导航守卫)
2020/11/02 Javascript
微信小程序实现多张图片上传功能
2020/11/18 Javascript
js属性对象的hasOwnProperty方法的使用
2021/02/05 Javascript
[44:26]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#4EG VS Fnatic第二局
2016/03/03 DOTA
python numpy函数中的linspace创建等差数列详解
2017/10/13 Python
python3 字符串/列表/元组(str/list/tuple)相互转换方法及join()函数的使用
2019/04/03 Python
python实现名片管理系统项目
2019/04/26 Python
如何使用Python自动控制windows桌面
2019/07/11 Python
Django forms表单 select下拉框的传值实例
2019/07/19 Python
Html5剪切板功能的实现代码
2018/06/29 HTML / CSS
私人委托书格式
2014/09/10 职场文书
城管执法人员纪律作风整顿思想汇报
2014/09/13 职场文书
英文升职感谢信
2015/01/23 职场文书
会议欢迎词范文
2015/01/27 职场文书