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 相关文章推荐
粗略计算在线时间,bug:ip相同
Dec 09 PHP
从Web查询数据库之PHP与MySQL篇
Sep 25 PHP
PHP自动识别字符集并完成转码详解
Aug 02 PHP
PHP Switch 语句之学习笔记
Sep 21 PHP
利用中国天气预报接口实现简单天气预报
Jan 20 PHP
PHP的switch判断语句的“高级”用法详解
Oct 01 PHP
php几个预定义变量$_SERVER用法小结
Nov 07 PHP
Thinkphp搭建包括JS多语言的多语言项目实现方法
Nov 24 PHP
php递归调用删除数组空值元素的方法
Apr 28 PHP
PHP翻页跳转功能实现方法
Nov 30 PHP
Laravel框架学习笔记之批量更新数据功能
May 30 PHP
如何在centos8自定义目录安装php7.3
Nov 28 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
简单的页面缓冲技术
2006/10/09 PHP
PHP4和PHP5共存于一系统
2006/11/17 PHP
为IP查询添加GOOGLE地图功能的代码
2010/08/08 PHP
深入解析PHP中SESSION反序列化机制
2017/03/01 PHP
php计数排序算法的实现代码(附四个实例代码)
2020/03/31 PHP
PHP安全之register_globals的on和off的区别
2020/07/23 PHP
jquery 学习之二 属性(html()与html(val))
2010/11/25 Javascript
JavaScript语言核心数据类型和变量使用介绍
2013/08/23 Javascript
优化Jquery,提升网页加载速度
2013/11/14 Javascript
Jquery中的层次选择器与find()的区别示例介绍
2014/02/20 Javascript
jQuery实现的Div窗口震动特效
2014/06/09 Javascript
jQuery自动完成插件completer附源码下载
2016/01/04 Javascript
Java中int与integer的区别(基本数据类型与引用数据类型)
2017/02/19 Javascript
bootstrap轮播图示例代码分享
2017/05/17 Javascript
深入理解Vue router的部分高级用法
2018/08/15 Javascript
Vuejs+vue-router打包+Nginx配置的实例
2018/09/20 Javascript
基于vue v-for 多层循环嵌套获取行数的方法
2018/09/26 Javascript
详解Vue.directive 自定义指令
2019/03/27 Javascript
微信小程序 textarea 层级过高问题简单解决方案
2019/10/14 Javascript
[45:44]完美世界DOTA2联赛PWL S2 FTD vs PXG 第一场 11.27
2020/12/01 DOTA
Python实现的多线程http压力测试代码
2017/02/08 Python
Python数字图像处理之霍夫线变换实现详解
2018/01/12 Python
Python tkinter的grid布局及Text动态显示方法
2018/10/11 Python
Python使用combinations实现排列组合的方法
2018/11/13 Python
python定时任务 sched模块用法实例
2019/11/04 Python
Pytorch中的VGG实现修改最后一层FC
2020/01/15 Python
Django 多对多字段的更新和插入数据实例
2020/03/31 Python
Python文件时间操作步骤代码详解
2020/04/13 Python
教师廉洁自律承诺书
2014/05/26 职场文书
2014年入党积极分子党校培训心得体会
2014/07/08 职场文书
联谊活动总结范文
2015/05/09 职场文书
因个人原因离职的辞职信范文
2015/05/12 职场文书
2015年卫生局工作总结
2015/07/24 职场文书
教你怎么用PyCharm为同一服务器配置多个python解释器
2021/05/31 Python
源码解读Spring-Integration执行过程
2021/06/11 Java/Android
恶魔之树最顶端的三颗果实 震震果实上榜,第一可以制造岩浆
2022/03/18 日漫