/*
*生成APP支付订单信息
* @param number uid 用户id
* @param string token 用户token
* @param number oid 订单id
* @param string title 标题
* @param string body 商品描述
* @parma float money 金额
* @param number ordernum 订单编号
*/
public function zfb_pay()
{
$data = input('post.');
$member = new Member();
//验证token是否有效 是否过期
/* $verify_tn = $member->verify_token($data['uid'],$data['token']);
if(!$verify_tn){
return_msg("100","token已失效,请重新登陆!");
}*/
// $orderinfo = Db::table('shfw_order')->where('id',$data['oid'])->field('id,ordernum,money')->find();
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://test.111.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');
}
}
}

App支付宝支付--PHP处理代码的更多相关文章

  1. ThinkPHP5.0 实现 app支付宝支付功能

    前几天做项目,要求要用到支付宝接口,第一次做,弄了好几天 各种坑啊,简单写一下我做支付宝支付的过程,希望对也是第一次做支付宝支付的童鞋有帮助, 不懂的可以先去支付平台看一下支付宝支付的文档,我是下的d ...

  2. app支付宝支付java服务端代码

    app支付java服务端生成支付单文档 public String aliPay(String amount,Map<String,Object> body){ //实例化客户端 Alip ...

  3. HTML5 开发APP( 支付宝支付)

    我们搞app有一个重要的功能那就是支付功能.无论是微信支付,支付宝,还是银联支付总要有一样支付手段来支持我们网上付款.实现完整的功能.我们公司app的支付方式经过大家开会讨论选择了支付宝支付(其实是当 ...

  4. APP支付宝支付接入

    1.app支付简介 买家可以在手机,掌上电脑等无线设备的应用程序内,通过支付宝(支付宝app或网页版支付宝)付款购买商品,且资金实行实时到账. 2.申请条件 1.申请前必须拥有经过实名认证的支付宝账户 ...

  5. MUI 微信 和支付宝支付 (前台代码)

    <!-- 校园公告详情界面 用于显示校园公告的详情信息 在校园公告界面点击某一条目后 进入本界面查看详情 --> <!DOCTYPE html> <html> &l ...

  6. 客服端与服务端APP支付宝支付接口联调的那些坑

    根据支付宝官方提供的文档的建议: TIPS:这一步应在商户服务端完成,商户服务端直接将组装和签名后的请求串orderString传给客户端,客户端直接传给SDK发起请求.文档和Demo是为了示例效果在 ...

  7. APP支付宝登录--PHP处理代码

    1.首先需要参数: aucth_code  udid re_id极光推送id 2.https://open.alipay.com/platform/keyManage.htm 配置公钥私钥 3.需要s ...

  8. app 支付宝 支付 alipaySdk

    function pay(P1: JString; P2: Boolean): JString; cdecl;    function fetchOrderInfoFromH5PayUrl(P1: J ...

  9. PHP----------支付宝支付的一些注意事项。该博客只适用于20180209之后,的app支付宝支付。

    1.签名方式: 2.设置应用公钥.也就是开发者公钥.

随机推荐

  1. 【MM系列】SAP S/4 HANA的物料编码40位设置

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP S/4 HANA的物料编码4 ...

  2. ES6 中 let 和 const 总结

    目录 let const 1. let要好好用 1. 基本用法 2. let声明的变量不存在变量提升 3. TDZ(temporal dead zone)暂时性死区 4. 不允许重复声明 2. 块级作 ...

  3. kolla安装Queens版本OpenStack(ceph后端)

    OpenStack all-in-one部署: 本次部署为OpenStack Queens版本部署,使用All-in-one,单节点部署. 物理资源:8核,32GB,硬盘400GB(3个盘),2网卡. ...

  4. Linux 时间以及时间间隔的简单处理.

    最近想知道自己的一个部署脚本的耗时, 中午时间看了一下最简单的Linux 时间函数的处理 我这里的处理非常简单, 仅仅是够用而已. 处理过程. 1. 获取当前时间: time1=`date` 或者是 ...

  5. [转帖]为微软效力15年的微软前员工解释Windows 10为什么问题这么多

    为微软效力15年的微软前员工解释Windows 10为什么问题这么多 https://www.cnbeta.com/articles/tech/892109.htm . 测试团队已经被裁撤 . 自动化 ...

  6. 控制台程序转化为windows服务

    首先我们创建一个控制台应用程序WriteLog,然后添加windows服务LogService 新增的windows服务切换到代码视图,我这边用log4net进行的日志的记录 OnStart方式是服务 ...

  7. Win10 收件箱添加QQ邮箱(2019年5月19日)

    Emmm弄的时候没截图,就语言描述吧,非常简单. 登录到网页端QQ邮箱.点我登录 登录之后,界面上端的Logo右边有个"设置"(字有点小).点它 邮箱设置下面有一堆标签,点击&qu ...

  8. C#获取客户端Ip工具类

    string pcname = Dns.GetHostName(); string ip = Dns.GetHostAddresses(pcname).First().ToString(); usin ...

  9. asp.net类似于js中的setTimeOut()的函数作用?

    asp.net类似于js中的setTimeOut()的函数作用? 插入这行即可,定时2秒,再运行下一步: System.Threading.Thread.Sleep(); 加个随机数 Random r ...

  10. C#使用HtmlAgilityPack快速爬虫

    HtmlAgilityPack真是一把网抓利器,可以迅速地从网页抓到想要的文本或数据,使用起来十分方便,引用时在NuGet安装添加并在头部引用using HtmlAgilityPack;即可. 针对网 ...