App支付宝支付--PHP处理代码
/*
*生成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处理代码的更多相关文章
- ThinkPHP5.0 实现 app支付宝支付功能
前几天做项目,要求要用到支付宝接口,第一次做,弄了好几天 各种坑啊,简单写一下我做支付宝支付的过程,希望对也是第一次做支付宝支付的童鞋有帮助, 不懂的可以先去支付平台看一下支付宝支付的文档,我是下的d ...
- app支付宝支付java服务端代码
app支付java服务端生成支付单文档 public String aliPay(String amount,Map<String,Object> body){ //实例化客户端 Alip ...
- HTML5 开发APP( 支付宝支付)
我们搞app有一个重要的功能那就是支付功能.无论是微信支付,支付宝,还是银联支付总要有一样支付手段来支持我们网上付款.实现完整的功能.我们公司app的支付方式经过大家开会讨论选择了支付宝支付(其实是当 ...
- APP支付宝支付接入
1.app支付简介 买家可以在手机,掌上电脑等无线设备的应用程序内,通过支付宝(支付宝app或网页版支付宝)付款购买商品,且资金实行实时到账. 2.申请条件 1.申请前必须拥有经过实名认证的支付宝账户 ...
- MUI 微信 和支付宝支付 (前台代码)
<!-- 校园公告详情界面 用于显示校园公告的详情信息 在校园公告界面点击某一条目后 进入本界面查看详情 --> <!DOCTYPE html> <html> &l ...
- 客服端与服务端APP支付宝支付接口联调的那些坑
根据支付宝官方提供的文档的建议: TIPS:这一步应在商户服务端完成,商户服务端直接将组装和签名后的请求串orderString传给客户端,客户端直接传给SDK发起请求.文档和Demo是为了示例效果在 ...
- APP支付宝登录--PHP处理代码
1.首先需要参数: aucth_code udid re_id极光推送id 2.https://open.alipay.com/platform/keyManage.htm 配置公钥私钥 3.需要s ...
- app 支付宝 支付 alipaySdk
function pay(P1: JString; P2: Boolean): JString; cdecl; function fetchOrderInfoFromH5PayUrl(P1: J ...
- PHP----------支付宝支付的一些注意事项。该博客只适用于20180209之后,的app支付宝支付。
1.签名方式: 2.设置应用公钥.也就是开发者公钥.
随机推荐
- 解决 OpenCV with CUDA 编译提示缺少 nvcuvid.h 的问题
系统环境: 操作系统:Ubuntu 18.04.01 显卡型号:GeForce GTX 1060 6G CMake 版本:3.10.2 GCC 版本:7.4.0 GNU Make 版本:4.1 CUD ...
- 使用自定义Comparator对TreeSet中的数据进行多条件排序
代码记录(需求:根据店铺等级和店铺到某个点的距离进行排序,其中店铺等级由高到低,距离由近及远) 需要排序的对象Store,Store.java package com.zhipengs.work.te ...
- markdown转移字符表
本片转的ASCII码,主要针对$,另外我为了不让"&#xxx;"被转移成字符,我在分号";"前加了个空格,复制的时候注意一下 字符 转义 0 空格 @ ...
- LC 417. Linked List Cycle II
题目描述 Given a linked list, return the node where the cycle begins. If there is no cycle, return null. ...
- Vue 设置style样式
1.直接添加行内样式 2.通过绑定设置style样式 3.将vue的属性设置为样式 4将多个vue属性设置为样式 <div id="box"> <!--直接添加样 ...
- python笔记005-字符串-列表-元组
目录 1 上次作业补充拓展... 1 1.1 进制转换... 1 1.2 类型判断... 1 2 今日学习内容... 2 2.1 格式化输出... 2 2.2 基本运算符... 2 2.2.1 算术运 ...
- 网络模式: host-only & NAT & 桥接
基本上,Host-only相当于虚拟机和宿主机通过交叉线相连:NAT,宿主机相当于虚拟机的路由器:桥接,相当于把宿主机和虚拟机同时接到交换机上,然后交换机接到外网. 连接性上说,可参考下表: 连接 宿 ...
- django静态文件配置和使用
一.首先需要了解的知识点是: 1.出于对效率和安全的考虑,django管理静态文件的功能仅限于在开发阶段的debug模式下使用,且需要在配置文件的INSTALLED_APPS中加入django.con ...
- 给初学PHP的学习线路和建议
直入主题 1.熟悉HTML/CSS/JS等网页基本元素,完成阶段可自行制作简单的网页,对元素属性相对熟悉. 2.理解动态语言的概念和运做机制,熟悉基本的PHP语法. 3.学习如何将PHP与HTML结 ...
- 安装Docker step by step
1. 系统要求 centos7以上 使用cat /etc/redhat-release查看系统版本,我的Centos 7.6 centos-extra 仓库 enable,默认是打开的 2.安装d ...