php tp 支付宝 支付,php实现的支付宝网页支付功能示例【基于TP5框架】
本文实例讲述了php实现的支付宝网页支付功能。分享给大家供大家参考,具体如下:
1.提交支付请求
require_once './payment/zfb/pagepay/service/AlipayTradeService.php';
require_once './payment/zfb/pagepay/buildermodel/AlipayTradePagePayContentBuilder.php';
$payInfo=Db::name('pay_type')->where(['pay_id'=>1])->find();
$zfb=json_decode($payInfo['pay_json'],true);
$config=[
'app_id'=>$zfb['app_id'],
'merchant_private_key'=>$zfb['merchant_private_key'],
'notify_url'=>config('z_notify_url'),
'return_url'=>config('z_return_url'),
'charset'=>config('charset'),
'sign_type'=>config('sign_type'),
'gatewayUrl'=>config('gatewayUrl'),
'alipay_public_key'=>$zfb['alipay_public_key']
];
//商品订单号
$out_trade_no=$orderData['order_number'];
//订单名称,必填
$subject='充值订单';
//付款金额
$total_amount=$money;
//商品描述
$body = $out_trade_no . '-' . $this->agent_id.'-'.$money;
$payRequestBuilder = new \AlipayTradePagePayContentBuilder();
$payRequestBuilder->setBody($body);
$payRequestBuilder->setSubject($subject);
$payRequestBuilder->setTotalAmount($total_amount);
$payRequestBuilder->setOutTradeNo($out_trade_no);
$aop = new \AlipayTradeService($config);
$response = $aop->pagePay($payRequestBuilder,$config['return_url'],$config['notify_url']);
echo $response;
2.异步回调支付宝参数认证
$pay=Db::name('pay_type')->where(['pay_id'=>1])->find();
$zfb=json_decode($pay['pay_json'],true);
$config = [
'app_id' => $zfb['app_id'],
'merchant_private_key' => $zfb['merchant_private_key'],
'notify_url' => config('z_notify_url'),
'return_url' => config('z_return_url'),
'charset' => config('charset'),
'sign_type' => config('sign_type'),
'gatewayUrl' => config('gatewayUrl'),
'alipay_public_key' => $zfb['alipay_public_key']
];
$arr=$_POST;
$alipaySevice = new \AlipayTradeService($config);
$alipaySevice->writeLog(var_export($_POST,true));
$result = $alipaySevice->check($arr);
/* 实际验证过程建议商户添加以下校验。
1、商户需要验证该通知数据中的out_trade_no是否为商户系统中创建的订单号,
2、判断total_amount是否确实为该订单的实际金额(即商户订单创建时的金额),
3、校验通知中的seller_id(或者seller_email) 是否为out_trade_no这笔单据的对应的操作方(有的时候,一个商户可能有多个seller_id/seller_email)
4、验证app_id是否为该商户本身。
*/
if($result) {//验证成功
/
//请在这里加上商户的业务逻辑程序代
//——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
//获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表
//商户订单号
$out_trade_no = $_POST['out_trade_no'];
//支付宝交易号
$trade_no = $_POST['trade_no'];
//交易状态
$trade_status = $_POST['trade_status'];
//交易金额
$total_amount = $_POST['total_amount'];
if($_POST['trade_status'] == 'TRADE_FINISHED') {
//判断该笔订单是否在商户网站中已经做过处理
//如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
//请务必判断请求时的total_amount与通知时获取的total_fee为一致的
//如果有做过处理,不执行商户的业务程序
//注意:
//退款日期超过可退款期限后(如三个月可退款),支付宝系统发送该交易状态通知
} else if ($_POST['trade_status'] == 'TRADE_SUCCESS') {
//判断该笔订单是否在商户网站中已经做过处理
//如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
//请务必判断请求时的total_amount与通知时获取的total_fee为一致的
//如果有做过处理,不执行商户的业务程序
//注意:
//付款完成后,支付宝系统发送该交易状态通知
//此处应该更新一下订单状态,商户自行增删操作
这里写你的逻辑程序
}
//——请根据您的业务逻辑来编写程序(以上代码仅作参考)——
echo 'success';
}else {
//验证失败
echo "fail";
}
}
3.同步回调页面跳转处理 同步只是做一个跳转处理 不要写任何数据处理
$pay=Db::name('pay_type')->where(['pay_id'=>1])->find();
$zfb=json_decode($pay['pay_json'],true);
$config = [
'app_id' => $zfb['app_id'],
'merchant_private_key' => $zfb['merchant_private_key'],
'notify_url' => config('z_notify_url'),
'return_url' => config('z_return_url'),
'charset' => config('charset'),
'sign_type' => config('sign_type'),
'gatewayUrl' => config('gatewayUrl'),
'alipay_public_key' => $zfb['alipay_public_key']
];
$arr=$_GET;
$alipaySevice = new \AlipayTradeService($config);
$result = $alipaySevice->check($arr);
/* 实际验证过程建议商户添加以下校验。
1、商户需要验证该通知数据中的out_trade_no是否为商户系统中创建的订单号,
2、判断total_amount是否确实为该订单的实际金额(即商户订单创建时的金额),
3、校验通知中的seller_id(或者seller_email) 是否为out_trade_no这笔单据的对应的操作方(有的时候,一个商户可能有多个seller_id/seller_email)
4、验证app_id是否为该商户本身。
*/
if($result) {//验证成功
/
//请在这里加上商户的业务逻辑程序代码
//——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
//获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表
//商户订单号
$out_trade_no = htmlspecialchars($_GET['out_trade_no']);
//支付宝交易号
$trade_no = htmlspecialchars($_GET['trade_no']);
$this->success("支付成功",url('Index/index'));
//——请根据您的业务逻辑来编写程序(以上代码仅作参考)——
/
}
else {
//验证失败
echo "验证失败";
}
希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。
php tp 支付宝 支付,php实现的支付宝网页支付功能示例【基于TP5框架】相关推荐
- 支付宝---支付功能 支付宝即时到帐接口的python实现,示例采用django框架
支付宝即时到帐接口的python实现,示例采用django框架 支付宝即时到帐接口的python实现,示例采用django框架 因工作需要研究了支付宝即时到帐接口,并成功应用到网站上,把过程拿出来分享 ...
- php tp 微信支付,PHP实现的微信APP支付功能示例【基于TP5框架】
本文实例讲述了PHP实现的微信APP支付功能.分享给大家供大家参考,具体如下: 1.进行支付请求 他给的DEMO 用的时候有时候会报错 1)我遇到的情况 把 WxPay.Api.php这个文件的 p ...
- 微信支付之微信公众号网页支付(各种总结)
微信支付除了坑,就是坑!!! 网上也还是好多吐槽的,各种签名问题,文档也比较乱.重点是,安卓最后报错就只报chooseWXPay failed.什么具体错误也不显示.最后还是喊朋友的苹果机远程帮忙测试 ...
- 微信接口支付接口html,微信 - JSAPI 网页支付
JSAPI 网页支付 说明 使用前先再 XorPay 后台 设置域名支付目录,最多设置5个支付授权目录, 且域名必须通过 ICP 备案 先通过 获取openid 接口获得用户 openid 然后请求接 ...
- php实现网站支付,php银联网页支付实现方法
php银联网页支付实现方法 php银联网页支付实现方法,实例分析了php操作银联网支付接口的技巧,具有一定参考借鉴价值,需要的朋友可以参考下. 这里介绍的`银联WAP支付功能,仅限消费功能. 1. P ...
- 支付宝支付 第六集:生成支付二维码
支付宝支付 第六集:生成支付二维码 一.资源 支付宝沙箱显示APP-ID错误:我的原因是支付宝网关地址写错了 支付宝沙箱环境报 invalid-app-id 错误原因: 无效的AppID参数 错误 支 ...
- java 支付宝h5网页支付接口,移动端h5网页调用支付宝支付接口
领导第一次让我做h5支付宝支付的时候,去了支付宝开放平台,一顿上上下下左左右右,看完了长呼一口气.这个支付好像没我啥事儿啊!小伙伴儿们自行查看:https://opendocs.alipay.com/ ...
- 移动app部分机型无法唤起h5支付宝支付_案例分析:H5支付交互体验设计
随着互联网技术和手机软硬件的高速发展,手机的使用场景已经融入到日常生活的点滴中.购物用淘宝下单,饿了在美团点外卖,出行滴滴一下--这些关联衣食住行的应用,都离不开一个核心环节:线上支付. 手机支付通常 ...
- python支付程序源码_python项目中实现支付宝网页支付
支付流程 在一次项目中需要引入支付宝接口实现支付宝支付,使用场景如下: 用户在我方商户系统中选择了购买商品,我方商户系统生成一张支付订单,用户点击订单的支付按钮后,页面会跳转到一个支付二维码的界面. ...
最新文章
- Scala模式匹配细节说明
- [计组]压缩BCD码指二进制编码的十进制
- c语言定义的几种易错的说明
- javascript 面试题之一
- ipad如何与计算机连接网络连接不上,平板电脑网络连接不上怎么办
- mysql-5.6.24-win32.zip 下载 安装 配置 创建数据库
- ISA 对比 PCI(ISA vs PCI)
- nbu备份本机oracle,大话nbu九(nbu异机备份恢复oracle)
- 运放放大倍数计算公式_16个问题讲透了运算放大器基础的知识点
- 计算机一级荷塘月色操作题,《荷塘月色》课后习题及答案
- 2023届计算机保研面试基础专业问题(数据结构、算法、计算机语言、计算机网络、数据库、操作系统、数学)
- MySQL生成自增的流水号
- bootstrapTable动态渲染数据获取
- d3dcompiler_47.dll缺失怎么修复?D3DCompiler_47.dll修复工具下载
- DGA 域名生成和检测算法
- 手游运营需网络文化经营许可证?1000万资本金门槛
- j计算机专业毕业论文摘要,★计算机毕业论文摘要范文计算机毕业论文摘要写(6页)-原创力文档...
- FIR滤波器系数重载
- 浏览器证书过期,你的时钟快了
- js控制页面div盒子移动
热门文章
- centos mysql php tomcat_Linux 安装JDK Tomcat MySQL的教程(使用Mac远程访问)
- vue 兄弟组件之间的传值
- 一文通读传感器到算法原理,机器人、视觉避障(附源码)
- vlookup练习_大胆合并吧!VLOOKUP坐字法专做单元格合并查找
- js如何获取html图片,JS/JQuery获取网页或文章或某DIV所有图片
- linux chattr 无权限,从零开始学习Linux(二十八):文件权限之chattr权限
- 【APICloud系列|25】 easeChat模块(环信-即时通讯)的实现
- html中文字过长 自动隐藏,css 实现文字过长自动隐藏功能
- 重置手机_【轻松办税】ITS客户端申报密码重置不会操作?看过来,3分钟包你会!...
- Slip.js – 在触摸屏上实现 Swipe 对列表重新排序