热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PHP记录一下服务端APP支付宝支付

PHP服务端支付宝支付

PHP 服务端支付宝支付

namespace app\api\controller;use app\common\master\Task;
use app\common\user\User;
use app\common\user\UserGoodsLog;
use app\common\web\Goods;
use app\common\web\Order;
use think\Controller;
use think\Db;
use think\facade\Env;//引入必要文件
require Env::get('root_path') . 'extend/aop/AopClient.php';
require Env::get('root_path') . 'extend/aop/request/AlipayTradeAppPayRequest.php';class AliPay extends Controller
{function getPrePayOrder($body, $order_sn, $total_fee){header("Content-type:text/html;charset=utf-8");// 调用支付宝配置文件$API = config('sf_config.alipay_config');//构造业务请求参数的集合(订单信息)$content = array();$content['subject'] = $body; // 商品标题$content['body'] = 'APP支付'; // 商品描述 非必须$content['out_trade_no'] = $order_sn; // 订单号$content['total_amount'] = $total_fee; // 要求必须为浮点型,订单金额$content['product_code'] = "QUICK_MSECURITY_PAY"; //销售产品码,固定值$con = json_encode($content); //$content是biz_content的值,将之转化成json字符串//公共参数$Client = new \AopClient(); //实例化支付宝sdk里面的AopClient类,下单时需要的操作,都在这个类里面$param = array();$param['app_id'] = $API['appid']; //支付宝分配给开发者的应用ID$param['method'] = $API['method']; //接口名称$param['charset'] = $API['charset']; //请求使用的编码格式$param['sign_type'] = $API['sign_type']; //商户生成签名字符串所使用的签名算法类型$param['timestamp'] = date("Y-m-d H:i:s"); //发送请求的时间$param['version'] = $API['version']; //调用的接口版本,固定为:1.0$param['notify_url'] = request()->domain() . '/api.php/AliPay_notify.json'; //支付宝服务器主动通知地址$param['biz_content'] = $con; //业务请求参数的集合,长度不限,json格式$paramStr = $Client->getSignContent($param);//组装请求签名参数 到此步目前没有问题$sign = $Client->alonersaSign($paramStr, $API['rsaPrivateKey'], 'RSA2'); //生成签名$param['sign'] = $sign;$str = $Client->getSignContentUrlencode($param); //最终请求参数return $str;}public function aliPay_notify(){$_POST = $_REQUEST;if ($_POST == null) {$_POST = file_get_contents("php://input");}if ($_POST == null) {$_POST = isset($GLOBALS['HTTP_RAW_POST_DATA']) ? $GLOBALS['HTTP_RAW_POST_DATA'] : '';}file_put_contents("ali_back.txt", file_get_contents("php://input"));//验证签名$aop = new \AopClient;$aop->alipayrsaPublicKey = config('sf_config.alipay_config.alipayrsaPublicKey');$flag = $aop->rsaCheckV1($_POST,$aop->alipayrsaPublicKey, "RSA2");
// file_put_contents("ali_back2.txt", $flag);
// file_put_contents("ali_back3.txt", $_POST);//验签
// if ($flag) {
// file_put_contents("ali_back4.txt", '我进来了');//处理业务,并从$_POST中提取需要的参数内容if ($_POST['trade_status'] == 'TRADE_SUCCESS' || $_POST['trade_status'] == 'TRADE_FINISHED') {//处理交易完成或者支付成功的通知die('success');//响应success表示业务处理成功,告知支付宝无需在异步通知} else {//已支付 或者不能再支付die('success');//响应success表示业务处理成功,告知支付宝无需在异步通知}}
// }}
}


推荐阅读
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • ASP.NET2.0数据教程之十四:使用FormView的模板
    本文介绍了在ASP.NET 2.0中使用FormView控件来实现自定义的显示外观,与GridView和DetailsView不同,FormView使用模板来呈现,可以实现不规则的外观呈现。同时还介绍了TemplateField的用法和FormView与DetailsView的区别。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • iOS Swift中如何实现自动登录?
    本文介绍了在iOS Swift中如何实现自动登录的方法,包括使用故事板、SWRevealViewController等技术,以及解决用户注销后重新登录自动跳转到主页的问题。 ... [详细]
  • 本文介绍了在iOS开发中使用UITextField实现字符限制的方法,包括利用代理方法和使用BNTextField-Limit库的实现策略。通过这些方法,开发者可以方便地限制UITextField的字符个数和输入规则。 ... [详细]
  • 移动端常用单位——rem的使用方法和注意事项
    本文介绍了移动端常用的单位rem的使用方法和注意事项,包括px、%、em、vw、vh等其他常用单位的比较。同时还介绍了如何通过JS获取视口宽度并动态调整rem的值,以适应不同设备的屏幕大小。此外,还提到了rem目前在移动端的主流地位。 ... [详细]
  • 图像因存在错误而无法显示 ... [详细]
  • 如何在HTML中获取鼠标的当前位置
    本文介绍了在HTML中获取鼠标当前位置的三种方法,分别是相对于屏幕的位置、相对于窗口的位置以及考虑了页面滚动因素的位置。通过这些方法可以准确获取鼠标的坐标信息。 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有