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 相关文章推荐
Get或Post提交值的非法数据处理
Oct 09 PHP
如何删除多级目录
Oct 09 PHP
深入了解PHP类Class的概念
Jun 14 PHP
php中实现精确设置session过期时间的方法
Jul 17 PHP
php中使用session_set_save_handler()函数把session保存到MySQL数据库实例
Nov 06 PHP
PHP读取txt文本文件并分页显示的方法
Mar 11 PHP
php实现word转html的方法
Jan 22 PHP
实例详解PHP中html word 互转的方法
Jan 28 PHP
yii2中dropDownList实现二级和三级联动写法
Apr 26 PHP
微信公众号实现会员卡领取功能
Jun 08 PHP
php变量与JS变量实现不通过跳转直接交互的方法
Aug 25 PHP
PHP执行系统命令函数实例讲解
Mar 03 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 MsSql server时遇到的中文编码问题
2009/06/11 PHP
解决PHP超大文件下载,断点续传下载的方法详解
2013/06/06 PHP
php获取淘宝分类id示例
2014/01/16 PHP
php使用$_POST或$_SESSION[]向js函数传参
2014/09/16 PHP
php表单敏感字符过滤类
2014/12/08 PHP
PHP验证码类ValidateCode解析
2017/01/07 PHP
php判断str字符串是否是xml格式数据的方法示例
2017/07/26 PHP
php实现微信模板消息推送
2018/03/30 PHP
Docker 安装 PHP并与Nginx的部署实例讲解
2021/02/27 PHP
20个非常棒的Jquery实用工具 国外文章
2010/01/01 Javascript
jQuery学习基础知识小结
2010/11/25 Javascript
用jquery和json从后台获得数据集的代码
2011/11/07 Javascript
JS实现随机化快速排序的实例代码
2013/08/01 Javascript
JS网页播放声音实现代码兼容各种浏览器
2013/09/22 Javascript
jQuery中position()方法用法实例
2015/01/16 Javascript
JS+JSP通过img标签调用实现静态页面访问次数统计的方法
2015/12/14 Javascript
window.onload绑定多个事件的两种解决方案
2016/05/15 Javascript
jQuery验证插件validate使用方法详解
2020/09/13 Javascript
jQuery实现公告新闻自动滚屏效果实例代码
2016/07/14 Javascript
JavaScript 限制文本框不可输入英文单双引号的方法
2016/12/20 Javascript
Vue.js+Layer表格数据绑定与实现更新的实例
2018/03/07 Javascript
原生JS进行前后端同构
2018/04/22 Javascript
详解vue中localStorage的使用方法
2018/11/22 Javascript
Vue.js的动态组件模板的实现
2018/11/26 Javascript
关于vue里页面的缓存详解
2019/11/04 Javascript
使用Django Form解决表单数据无法动态刷新的两种方法
2017/07/14 Python
使用python批量修改文件名的方法(视频合并时)
2020/03/24 Python
Python调用shell命令常用方法(4种)
2020/05/11 Python
将"引用"作为函数参数有哪些特点
2013/04/05 面试题
设计总监岗位职责
2013/12/07 职场文书
女大学生自我鉴定
2013/12/09 职场文书
销售员岗位职责范本
2014/02/03 职场文书
自动化专业毕业生求职信
2014/06/18 职场文书
2014年专项整治工作总结
2014/11/17 职场文书
前台接待员岗位职责
2015/04/15 职场文书
Mysql中的触发器定义及语法介绍
2022/06/25 MySQL