{

$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,支付宝APP支付 统一下单 php服务端 tp5相关推荐

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

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

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

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

  3. springboot 银联支付(手机app支付)

    springboot 银联支付(手机app支付) 应用:在手机app中使用银联支付,支持安卓.ios 官方文档:https://open.unionpay.com/tjweb/acproduct/li ...

  4. 成品app直播源码,服务端与客户端传输视频文件

    成品app直播源码,服务端与客户端传输视频文件相关的代码 Server端 #define WIN32_LEAN_AND_MEAN #define _WINSOCK_DEPRECATED_NO_WARN ...

  5. java 支付宝支付(手机APP支付、电脑网站支付)

    基础配置类 import com.alipay.api.AlipayClient;/* **类名:AlipayConfig*功能:基础配置类*详细:设置帐户有关信息及返回路径*修改日期:2017-04 ...

  6. 支付宝 实现 移动网页支付、PC网页支付、混合APP支付(支持微信支付)

    1.移动网页支付 支付宝开放平台中申创建移动网页应用: 前端比较省事 1.若后台返回的是form表单执行以下代码,每次用完及时销毁: 当然不想写承载页的还有其他方法调起支付,具体逻辑具体分析,根据不同 ...

  7. android个人支付功能,个人app支付接入(三分钟搞定个人微信支付,支付宝支付问题)---贝贝支付...

    前言 想必很多人个人开发者和我有同样的感触,想要在自己开发的app中接入微信支付和支付宝支付,仅仅是去申请支付接口就把我们挡在了门外,微信和支付宝都只对接企业的,那不是想逼死我们个人开发者吗?一开始使 ...

  8. 个人支付接入-个人app支付微信支付、支付宝支付接入(2分钟完成接入)

    作为一个个人开发者,一开始在个人的应用中接入广告,慢慢的这种方式越来越被摒弃了,下面简单介绍一下我最近使用的一款感觉很不错的个人聚合支付的平台的接入流程,其实很简单,分为两步即可. 贝贝支付官网:ht ...

  9. JAVA微信扫码支付及微信App支付开发(模式二)完整功能实现

    一,准备工作 事前申请一个商家版的微信公众号(目前微信支付只有商家版公众号可开通),然后开通微信支付功能,并做相应的配置. 申请开通微信公众号和开通微信支付需要等待审核,一般都5个工作日左右.开通成功 ...

最新文章

  1. ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  2. libevent源码安装及Linux自动编译功能总结
  3. AcWing 831. KMP字符串(模板)
  4. GIT项目管理工具(part8)--版本控制
  5. css h5移动端背景铺满
  6. DOS命令、Java语言开发环境(JVM、JDK、JRE)
  7. 飞鸽传书2012是否发布了?
  8. 机器学习笔记十之聚类
  9. BASH 比较运算小结[转载 小蜗牛五二]
  10. 桌面虚拟化之用户评估指南 (翻译)
  11. 去除eclipse打开后不断update的问题
  12. node mysql商城开发_GitHub - Ssipon/nideshop: NideShop:基于Node.js+MySQL开发的开源免费商城(api服务器端)...
  13. 笔记:Hadoop权威指南 第9章 构建Hadoop集群
  14. 基于角色得后台权限管理系统设计(一、表设计)
  15. 用RNN做MNIST分类
  16. Ajax的简历技能如何写,web前端开发工程师简历专业技能怎么写
  17. compat-mysql安装_Centos7 rpm方式安装Percona Mysql 8
  18. sharding-jdbc之SQL改写
  19. BOJ 427. 学姐逗学弟
  20. 如何删除MacOS自带的输入法的自造词(Catalina)

热门文章

  1. Azure School与开源
  2. asp.net core mvc中如何把二级域名绑定到特定的控制器上
  3. .NET Core 2.0版本预计于2017年春季发布
  4. [转]图片格式WEBP全面解析
  5. 【CASS精品教程】CASS9.1等高线的绘制完整案例教程
  6. ArcGIS 10.6字段计算器(Field Calculator)字段任意填充编码序列(奇数、偶数序列、自定义间隔)
  7. 【计算机图形学】实验:VB.net环境下的绘制贝赛尔(Bezier)自由曲线完整实验操作步骤
  8. C语言试题二十九之编写函数int function(int lim,int aa[max])求出小于或等于lim的所有素数并放在aa数组中,该函数返回所求的素数的个数。
  9. python 写游戏好简单啊,我用键盘可以随意控制角色了【python 游戏实战 04】
  10. 《零基础看得懂的C语言入门教程 》——(二)C语言没那么难简单开发带你了解流程