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 相关文章推荐
Apache设置虚拟WEB
Oct 09 PHP
用缓存实现静态页面的测试
Dec 06 PHP
PHP MySQL应用中使用XOR运算加密算法分享
Aug 28 PHP
PHP测试程序运行时间的类
Feb 05 PHP
php 去除html标记--strip_tags与htmlspecialchars的区别详解
Jun 26 PHP
去除php注释和去除空格函数分享
Mar 13 PHP
PHP中读取文件的8种方法和代码实例
Aug 05 PHP
thinkphp实现上一篇与下一篇的方法
Dec 08 PHP
php实现微信公众平台账号自定义菜单类
Oct 11 PHP
ThinkPHP3.2.3实现分页的方法详解
Jun 03 PHP
基于thinkPHP框架实现留言板的方法
Oct 17 PHP
php远程请求CURL案例(爬虫、保存登录状态)
Apr 01 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判断服务器是否是HTTPS连接
2013/07/05 PHP
教你如何用php实现LOL数据远程获取
2014/06/10 PHP
Laravel的throttle中间件失效问题解决方法
2016/10/09 PHP
Javascript中Eval函数的使用说明
2008/10/11 Javascript
extjs之去除s.gif的影响
2010/12/25 Javascript
JavaScript判断DOM何时加载完毕的技巧
2012/11/11 Javascript
JavaScript中的console.trace()函数介绍
2014/12/29 Javascript
js库Modernizr的介绍和使用
2015/05/07 Javascript
纯javascript实现图片延时加载方法
2015/08/21 Javascript
基于jquery fly插件实现加入购物车抛物线动画效果
2016/04/05 Javascript
谈一谈bootstrap响应式布局
2016/05/23 Javascript
jQuery 限制输入字符串长度
2016/06/20 Javascript
js匿名函数使用&传参(实例)
2017/09/08 Javascript
JavaScript实现多叉树的递归遍历和非递归遍历算法操作示例
2018/02/08 Javascript
探秘vue-rx 2.0(推荐)
2018/09/21 Javascript
JavaScript实现的开关灯泡点击切换特效示例
2019/07/08 Javascript
layui扩展上传组件模拟进度条的方法
2019/09/23 Javascript
Layui数据表格之单元格编辑方式
2019/10/26 Javascript
Vuex模块化应用实践示例
2020/02/03 Javascript
python的正则表达式re模块的常用方法
2013/03/09 Python
python抓取豆瓣图片并自动保存示例学习
2014/01/10 Python
Python中optparse模块使用浅析
2015/01/01 Python
Python的Django框架使用入门指引
2015/04/15 Python
Django权限机制实现代码详解
2018/02/05 Python
python re正则匹配网页中图片url地址的方法
2018/12/20 Python
django自定义模板标签过程解析
2019/12/14 Python
PyCharm中Matplotlib绘图不能显示UI效果的问题解决
2020/03/12 Python
一个SQL面试题
2014/08/21 面试题
博士研究生自我鉴定范文
2013/12/04 职场文书
简单租房协议书
2014/04/09 职场文书
班级年度安全计划书
2014/05/01 职场文书
征用土地赔偿协议书
2014/09/26 职场文书
2015年收银员个人工作总结
2015/04/01 职场文书
医者仁心观后感
2015/06/17 职场文书
红色革命电影观后感
2015/06/18 职场文书
如何撰写出一份完美的商业计划书?
2019/07/12 职场文书