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不用正则采集速度探究总结
Mar 24 PHP
php中用文本文件做数据库的实现方法
Mar 27 PHP
解决了Ajax、MySQL 和 Zend Framework 的乱码问题
Mar 03 PHP
PHP 动态随机生成验证码类代码
Apr 09 PHP
php 连接mysql连接被重置的解决方法
Feb 15 PHP
php中http与https跨域共享session的解决方法
Dec 20 PHP
浅析Yii2中GridView常见操作
Apr 22 PHP
PHP中PDO连接数据库中各种DNS设置方法小结
May 13 PHP
Zend Framework常用校验器详解
Dec 09 PHP
PHP后台备份MySQL数据库的源码实例
Mar 18 PHP
laravel 自定义常量的两种方案
Oct 14 PHP
在Laravel中使用GuzzleHttp调用第三方服务的API接口代码
Oct 15 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个人网站架设连环讲(一)
2006/10/09 PHP
php获取淘宝分类id示例
2014/01/16 PHP
PHP魔术方法使用方法汇总
2016/02/14 PHP
PHP的PDO常用类库实例分析
2016/04/07 PHP
php生成txt文件实例代码介绍
2016/04/28 PHP
PHP内存缓存功能memcached示例
2016/10/19 PHP
JavaScript 学习笔记(五)
2009/12/31 Javascript
jquery 简短几句代码实现给元素动态添加及获取提示信息
2011/09/01 Javascript
jquery二级导航内容均分的原理及实现
2013/08/13 Javascript
点击弹出层效果&弹出窗口后网页背景变暗效果的实现代码
2014/02/10 Javascript
jQuery制作效果超棒的手风琴折叠菜单
2015/04/03 Javascript
JS+CSS实现鼠标经过弹出一个DIV框完整实例(带缓冲动画渐变效果)
2016/03/25 Javascript
Bootstrap 粘页脚效果
2016/03/28 Javascript
12个非常实用的JavaScript小技巧【推荐】
2016/05/18 Javascript
AngularJS extend用法详解及实例代码
2016/11/15 Javascript
jQuery实现遍历复选框的方法示例
2017/03/06 Javascript
angular过滤器实现排序功能
2017/06/27 Javascript
javaScript中封装的各种写法示例(推荐)
2017/07/03 Javascript
利用node.js爬取指定排名网站的JS引用库详解
2017/07/25 Javascript
微信小程序实现流程进度的图样式功能
2018/01/16 Javascript
JavaScript刷新页面的几种方法总结
2019/03/28 Javascript
pm2启动ssr失败的解决方法
2019/06/29 Javascript
Node.js 实现远程桌面监控的方法步骤
2019/07/02 Javascript
Python 闭包的使用方法
2017/09/07 Python
flask中的wtforms使用方法
2018/07/21 Python
python调用函数、类和文件操作简单实例总结
2019/11/29 Python
将labelme格式数据转化为标准的coco数据集格式方式
2020/02/17 Python
Servlet都有哪些方法?主要作用是什么?
2014/03/04 面试题
市场营销专业个人自荐信格式
2013/09/21 职场文书
拾金不昧表扬信范文
2014/01/11 职场文书
学生宿舍管理制度
2014/01/30 职场文书
解除财产保全担保书
2014/05/20 职场文书
会计专业自荐书
2014/07/08 职场文书
羊脂球读书笔记
2015/06/30 职场文书
2019年最新感恩节祝福语(28句)
2019/11/27 职场文书
利用javaScript处理常用事件详解
2021/04/14 Javascript