{

$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‘);

}

}

}

php tp5支付宝app支付,支付宝APP支付 统一下单 php服务端 tp5相关推荐

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

    /*支付宝第三方支付 * *生成APP支付订单信息 * @param number uid 用户id * @param string token 用户token * @param number oid ...

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

    { $data = input('post.'); Loader::import('/alipay/aop/AopClient',EXTEND_PATH); $aop = new \AopClient ...

  3. 微信支付报错:统一下单和拉起支付的appid不一致(原创)

    微信支付报错:统一下单和拉起支付的appid不一致 错误码:-2 提示参考: 参考统一下单的API (谦信君原创,转载请注明来源) 原因排查: 我们做的是APP微信支付 客户端向我服务端发请求,获取预 ...

  4. 微信支付常见错误和统一下单错误码详情

    微信支付常见错误和统一下单错误码详情 微信支付常见问题描述及解决方法 微信调用统一下单接口,当result_code=FAIL时,错误代码及错误描述 参考链接: 微信支付常见问题描述及解决方法 序号 ...

  5. 微信统一下单 java_微信支付(java版本)_统一下单

    最近工作接触到微信支付,刚开始解决微信支付很神秘,接触之后发现并没有那么神秘,就是有很多坑,在开发的时候需要注意,整理出来: 1.准备工作 首先需要登录微信支付公众平台阅读接口文档,地址:https: ...

  6. Android客户端之“微服私访”App的系统学习(一) 本地服务端环境的搭建和部署

    前言: 每晚睡觉前都会去看看微信公众号中来自各位大神的干货分享,偶然看到鸿洋大神推荐的一篇有关课工厂的一个公开课 高效Android工程师6周培养计划,根据学习内容,整理成笔记.本系列文章意在详细介绍 ...

  7. 支付宝app支付功能-服务端的实现-python3版

    支付宝app支付功能-服务端的实现-python3版 一:需求说明 二:支付宝app支付处理流程 三:所需依赖 3.1 依赖库 3.2 支付配置 3.2.1 沙箱环境配置 3.2.2 正式环境配置 四 ...

  8. vue 微信公众号支付接口_基于vue的h5项目之支付宝支付与微信支付

    本文仅记录基于vue开发h5项目过程中使用支付宝和微信支付过程中的重点与槽点,仅为前端部分,如有疏漏不正之处,请于文末评论探讨.注意:标红部分灰常重要,仔细阅读官方文档非常重要,耐心非常重要,细心非常 ...

  9. android 支付模块封装,Android集成支付----支付宝支付总结与封装

    前言 类似于Android集成支付----微信支付总结与封装(可以查看本人另外一篇文章),本文对支付宝支付进行一个总结与封装.相比于微信支付,支付宝支付没有那么多坑. 集成支付宝支付SDK 这里只是简 ...

最新文章

  1. 文件及文件组备份与还原示例.sql
  2. webpack4导入全局sass文件
  3. windows 编译xvidcore-1.1.3.tar
  4. 高等数学-空间解析几何与向量代数
  5. 万兆交换机用什么网线_现在国内没有万兆宽带,那为什么有万兆网线呢?
  6. STM32f401驱动【语音模块】
  7. 用BVP一比一还原自如客APP裸眼3D效果(Android原生)
  8. 数据错误(循环冗余检查) 各种解决方法
  9. 因果推断what if
  10. [C#] 控制系统音量-第二章
  11. idea编辑区左侧行号背景颜色修改
  12. 卤化铅钙钛矿量子点(LHP-QDs)/N719染料敏化太阳能电池
  13. js实现任意节日倒计时html
  14. windows系统搜索本地文件缓慢怎么办?
  15. Python 汉字转化成拼音
  16. iOS地图定位导航与大头针的简单使用
  17. 【人工智能毕设之基于Python+flask+bilstm的评论情感分析系统-哔哩哔哩】 https://b23.tv/QU56eTl
  18. 2022预推免上岸北京大学计算机学院,我的一些保研经验
  19. 操作系统学习笔记——北京大学陈向群老师课后及习题答案(5)
  20. 腾讯云运维考试题及答案

热门文章

  1. Spring boot 字符集编码
  2. Apache Kylin的核心概念
  3. hibernate3.2多表关联查询常见问题
  4. 用Ajax将checkbox选中的值发送给后台
  5. dsoFramer 的原代码
  6. Android UI事件处理
  7. 虚拟机添加串口设备方法
  8. ES6重点--笔记(转)
  9. bootstrap bootstrapTable 隐藏列
  10. HDU 1430 魔板(康托展开+BFS+预处理)