支付宝 统一支付 php,支付宝APP支付 统一下单 php服务端 tp5

{

$data = input(‘post.‘);

Loader::import(‘/alipay/aop/AopClient‘,EXTEND_PATH);

$aop = new \AopClient();

$aop->appId = config("alipay_app_id");

$aop->rsaPrivateKey = config(‘alipay_private_key‘);

$aop->alipayrsaPublicKey = config(‘alipay_public_key‘);//对应填写

$aop->signType = "RSA2";

//实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay

Loader::import(‘/alipay/aop/request/AlipayTradeAppPayRequest‘,EXTEND_PATH);

$request = new \AlipayTradeAppPayRequest();

//SDK已经封装掉了公共参数,这里只需要传入业务参数

$bizcontent = json_encode(array(

‘body‘ => $data[‘body‘], //商品描述

‘subject‘ => $data[‘title‘], //支付的标题,

‘out_trade_no‘ => $data[‘ordernum‘], //支付宝订单号必须是唯一的,只能生成一次

‘total_amount‘ => $data[‘money‘], //金额

"timeout_express" => "30m", //订单支付有效时间 m分钟 h小时

‘product_code‘ => ‘QUICK_MSECURITY_PAY‘

));

$request->setNotifyUrl("http://tapi.zuozuobang.com/notifyurl");//你在应用那里设置的异步回调地址

$request->setBizContent($bizcontent);

//这里和普通的接口调用不同,使用的是sdkExecute

$response = $aop->sdkExecute($request);

//htmlspecialchars是为了输出到页面时防止被浏览器将关键参数html转义,实际打印到日志以及http传输不会有这个问题

/* echo htmlspecialchars($response);*///就是orderString 可以直接给客户端请求,无需再做处理。

if($response){

return_msg(‘200‘,‘支付宝请求成功!‘,$response);

}else{

return_msg(‘100‘,‘支付请求失败!‘,$response);

}

}

/*

* 支付宝支付回调

*/

public function notifyurl()

{

Loader::import(‘/alipay/aop/AopClient‘,EXTEND_PATH);

$aop = new \AopClient();

$aop->alipayrsaPublicKey =config(‘alipay_public_key‘);//对应填写

$flag = $aop->rsaCheckV1($_POST, NULL, "RSA2");

if ($flag) {

//校验通知数据的正确性

$out_trade_no = $_POST[‘out_trade_no‘]; //商户订单号

$trade_no = $_POST[‘trade_no‘]; //支付宝交易号

$trade_status = $_POST[‘trade_status‘]; //交易状态trade_status

$total_amount = $_POST[‘total_amount‘]; //订单的实际金额

$order = Db::table("shfw_order")->where(‘ordernum‘, $out_trade_no)->find();

if ($order) {

//只有交易通知状态为TRADE_SUCCESS或TRADE_FINISHED时,支付宝才会认定为买家付款成功。

if ($trade_status != ‘TRADE_FINISHED‘ && $trade_status != ‘TRADE_SUCCESS‘) {

return ‘fail‘;

}

//2、判断total_amount是否确实为该订单的实际金额(即商户订单创建时的金额);

if ($total_amount != $order[‘money‘]) {

return ‘fail‘;

}

//校验成功后在response中返回success,校验失败返回failure

$update = array(

‘status‘ => ‘2‘, //修改支付状态

‘zhi_time‘ => time(), //添加支付时间

‘pay_type‘ => 1); //添加支付类型

$result = Db::table("shfw_order")->where(‘ordernum‘, $out_trade_no)->update($update);

$res = Db::table("shfw_order")->where(‘ordernum‘, $out_trade_no)->field(‘id,mid,ordernum,nickname,addtime,pay_type‘)->find();

// $member = Db::table(‘shfw_member‘)->where(‘id‘,$res[‘mid‘])->find();

//添加充值记录

$res[‘payorder‘] = $trade_no;

$res[‘money‘] = $total_amount;

$addpay = $this->addpay($res);

if ($result && $addpay) {

return "success";

} else {

return ‘fail‘;

}

} else {

exit(‘fail‘);

}

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/303305.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

近期资料分享汇总,还不快来看看你漏了哪份没拿?

相信,一直关注着我们的同学们都知道,小思妹分享了好多好多的资料给大家。为了方便新来的同学自取,小思妹又重新整理了一遍,直接点以下标题即可跳转!这是我见过的最全的训练数据集,没有之一!送你…

WebView 访问 url asset sd 网页

引用:http://www.oschina.net/code/snippet_54100_6227 [代码] [Java]代码 01//打开本包内asset目录下的index.html文件02 03wView.loadUrl(" file:///android_asset/index.html "); 04 05//打开本地sd卡内的index.html文件06 07wView.loadUrl("con…

oracle天数加个随机数,如何给一个表某列加上指定的随机数

如何给一个表某列加上指定的随机数一、原始数据create table #test (name varchar(10),ddate datetime,date1 datetime,date2 datetime)insert into #testselect 张三,2013-09-01,2013-09-01 09:00:00.000,2013-09-01 17:00:00.000 union allselect 张三,2013-09-02,2013-09-0…

MS Learn 宝藏资源库 - 学习经验分享

点击蓝字关注我们作者:刘轶民大家好,我是东北电力大学的一名在校学生,我叫刘轶民,很高兴能以 MS Learn 的受益者的身份,来分享一些经验与看法。作为正在上学的我来讲,很多时候我可能更多的去面临着新技术的…

你必须知道的28个HTML5特征、窍门和技术

Jeffrey Way曾发表过一篇博文《28 HTML5 Features, Tips, and Techniques you Must Know 》讲述了28个HTML5特征、窍门和技术,张鑫旭将本文进行了翻译,现转载于此,全文如下:前端的发展如此之迅猛,一不留神,…

一起读懂传说中的经典:受限玻尔兹曼机

尽管性能没有流行的生成模型好,但受限玻尔兹曼机还是很多读者都希望了解的内容。这不仅是因为深度学习的复兴很大程度上是以它为前锋,同时它那种逐层训练与重构的思想也非常有意思。本文介绍了什么是受限玻尔兹曼机,以及它的基本原理&#xf…

NET问答: 发布 asp.net core 时如何修改 ASPNETCORE_ENVIRONMENT 环境变量?

咨询区 Dario:当我把 asp.net core web 发布到本地文件时,我发现程序读的是 appsettings.Production.json ,也就说明当前的 ASPNETCORE_ENVIRONMENT Production。请问如何动态修改 ASPNETCORE_ENVIRONMENT 的值,这样的话在 调试 和 发布 阶段…

oracle 如何筛选重复,求sql--筛选A字段相同,B字段不同且不重复的记录

测试数据:create table PRICE(ID VARCHAR2(10),PRICE NUMBER,SYSID VARCHAR2(10));insert into price (ID, PRICE, SYSID)values (10, 1000, 1);insert into price (ID, PRICE, SYSID)values (10, 1000, 2);insert into price (ID, PRICE, SYSID)values (20, 200…

注释里的诅咒:哪种语言遭受最多的咒骂?

导读:原文作者Scott Gilbertson在webmonkey.com发表一篇《Cussing in Commits: Which Programming Language Inspires the Most Swearing?》,由外刊IT评论整理翻译《注释里的诅咒:哪种语言遭受最多的咒骂?》。内容如下:任何一个程…

php tp3 操作绑定到类,操作绑定到类 · ThinkPHP3.2.3完全开发手册 · 看云

## 定义ThinkPHP3.2版本提供了把每个操作方法定位到一个类的功能,可以让你的开发工作更细化,可以设置参数**ACTION_BIND_CLASS**,例如:~~~ACTION_BIND_CLASS > True,~~~设置后,我们的控制器定义有所改变&#xff0c…

怎样快速掌握深度学习TensorFlow框架?

TensorFlow是Google基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理。Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow实际上就是张量从流…

牛X,.NET6又双叒叕新版本,这是要起飞吗?

.NET6又双叒叕出新版本了,2月17号Preview1、3月11号Preview2、4月8号又Preview3了,密集的版本发布,各种新技术和改进优化,不禁要问一句,.NET6是要起飞吗?下面给大家科普下.NET6将带来的几大核心变化&#x…

外媒:谷歌攻击码由中国作者发布

英国金融时报(The Financial Times)报导,一名中国的自由安全顾问,撰写了利用IE6浏览器的攻击代码,而后被用来攻击谷歌等美国公司。 根据金融时报的报导,这名身份尚未曝光的程序设计师,将部分攻击…

用python挖一挖知乎上宅男们最喜欢的1000个妹子

在文章开始前,先来一张图给大家热热身。这里是宅男们最喜欢的妹子中排名前200位的头像(实际193张图,部分不规则的图已被二胖过滤)。排名不分先后哈!快来看看有没有你们熟悉的面孔。找到眼熟的人了吗?说不定…

在 .NET 6 Preview 3 ASP.NET Core 更新

.NET 6 Preview 3现在可用了,其中包括对ASP.NET Core的许多重大改进。这是此预览版本中的新增功能:更小的SignalR,Blazor Server和MessagePack scripts启用 Redis 分析会话HTTP/3 endpoint TLS配置初版的 .NET Hot Reload 支持Razor编译器不再…

matlab求滤波器的冲激响应,在TMS320C5410上用MATLAB实现有限冲激响应滤波器

在TMS320C5410上用MATLAB实现有限冲激响应滤波器许辉;许红【期刊名称】《计算机应用与软件》【年(卷),期】2003(020)007【摘要】介绍在TMS320C5410上尝试MATLAB语言编程实现FIR数字滤波器的方案,阐明其开发基本原理,并给出了具体程序实例.【总页数】3页(41-42,79)【关键词】数字…

单点登录在项目中的实现 转.

最近在做一个登录功能,纠结了好几天,一直在找一个能优雅的实现单点登录的功能。博客园有看到某人写了又臭又长的八股文式的文章,没看到有价值的东西。 其实单点登录最终要解决的是多个不同域名间共享cookie的问题。但是要在不同域名间共享coo…

趣图:程序员桌面对比,iOS vs 安卓

程序员桌面对比,iOS vs 安卓↓↓↓数据与算法之美用数据解决不可能长按扫码关注

如何在 ASP.Net Core 中使用 HTTP.sys WebServer ?

ASP.Net Core 是一个开源的,跨平台的,轻量级模块化框架,可用它来构建高性能的Web程序,大家都知道 Kestrel 是 ASP.Net Core 内置的跨平台web服务器,但是它有一定的局限性,比如不支持 端口共享 , WebSockets…

php图片上传 thinkphp5,thinkphp5图片上传接口

public function avatarUpload(){$file request()->file(‘file‘);$filePath ‘avatar‘;$width 200;$height 200;if($file){$filePaths ROOT_PATH . ‘public‘ . DS . ‘uploads‘ . DS .$filePath;if(!file_exists($filePaths)){mkdir($filePaths,0777,true);}$inf…