对于任何一款软件来说,支付功能都是核心的,那么目前的主流支付接口主要是支付宝、微信和银联卡,而大多数开发技术人员对于如何调用支付宝的支付接口还存在很大的困扰,今天就来跟大家分享一下如何正确调用支付宝支付接口的实现,代码如下所示:
public function zfbpay1(){
require_once './ThinkPHP/Extend/Vendor/alipay1/config.php';
require_once './ThinkPHP/Extend/Vendor/alipay1/pagepay/service/AlipayTradeService.php';
require_once './ThinkPHP/Extend/Vendor/alipay1/pagepay/buildermodel/AlipayTradePagePayContentBuilder.php';
$model=M('zfbpay');
$add['oid']=I('nid');
$add['type']=1;
$add['WIDout_trade_no']=trim($_POST['WIDout_trade_no']);
$add['WIDtotal_amount']=trim($_POST['WIDtotal_amount']);
$add['WIDsubject']=trim($_POST['WIDsubject']);
// dump($_POST);die;
$re=$model->add($add);
if($re){
//商户订单号,商户网站订单系统中唯一订单号,必填
$out_trade_no = trim($_POST['WIDout_trade_no']);
//订单名称,必填
$subject = trim($_POST['WIDsubject']);
//付款金额,必填
// $total_amount = trim($_POST['WIDtotal_amount']);
$total_amount = 0.01;
//商品描述,可空
$body = trim($_POST['WIDbody']);
//构造参数
$payRequestBuilder = new AlipayTradePagePayContentBuilder();
$payRequestBuilder->setBody($body);
$payRequestBuilder->setSubject($subject);
$payRequestBuilder->setTotalAmount($total_amount);
$payRequestBuilder->setOutTradeNo($out_trade_no);

        $aop = new AlipayTradeService($config);/*** pagePay 电脑网站支付请求* @param $builder 业务参数,使用buildmodel中的对象生成。* @param $return_url 同步跳转地址,公网可以访问* @param $notify_url 异步通知地址,公网可以访问* @return $response 支付宝返回的信息*/$response = $aop->pagePay($payRequestBuilder,$config['return_url'],$config['notify_url']);$map['nid']=I('nid');$map['out_trade_no']=$out_trade_no;M('need')->save($map);//输出表单var_dump($response);          }

}

回调
public function updatezfb(){
require_once './ThinkPHP/Extend/Vendor/alipay1/config.php';
require_once './ThinkPHP/Extend/Vendor/alipay1/pagepay/service/AlipayTradeService.php';
$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) {//验证成功///请在这里加上商户的业务逻辑程序代// $add['content']=$_POST['out_trade_no'];// M('a')->add($add);// $add['content']=json_encode($_POST);// M('a')->add($add);//——请根据您的业务逻辑来编写程序(以下代码仅作参考)——//获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表//商户订单号$out_trade_no = $_POST['out_trade_no'];//支付宝交易号$trade_no = $_POST['trade_no'];//交易状态$trade_status = $_POST['trade_status'];if($_POST['trade_status'] == 'TRADE_FINISHED') {$zfbmodel=M('zfbpay');$arr=$zfbmodel->where("WIDout_trade_no=$out_trade_no")->find();if($arr){$type=$arr['type'];//1购买商品 2充值余额 3做单支付if($type==1){//购买商品$nid=$arr['id'];$model=M('need');$orderinfo=$model->where("nid=$nid")->find();$tuoguan=$orderinfo['tuoguan'];$province=$orderinfo['province'];$finish_state=$orderinfo['finish_state'];$arr1['tuoguan']=1;if($finish_state==1){$arr1['finish_state']=2;}if ($orderinfo['money']!=0) {$arr1['money']=$orderinfo['money'];}else{$arr1['money']=intval($orderinfo['money'])+intval($arr['WIDtotal_amount']);}$arr1['paytype']=1;$res=$model->save($arr1);}elseif($type==2){//余额充值$rid=$arr['id'];//获取充值信息$model=M('recharge');$usermodel=M('user');$rechargeinfo=$model->where("rid=$rid")->find();$paystate=$rechargeinfo['paystate'];if($paystate==0){$uid=$rechargeinfo['uid']; $num=$rechargeinfo['amoney'];      //更新订单状态$update['paystate']=1;$res=$model->where("rid=$rid")->save($update);            if($res){//更新用户余额$re2=$usermodel->where("id=$uid")->setInc('yue',$num);}}                        }elseif($type==3){}}//判断该笔订单是否在商户网站中已经做过处理//如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序//请务必判断请求时的total_amount与通知时获取的total_fee为一致的//如果有做过处理,不执行商户的业务程序//注意://退款日期超过可退款期限后(如三个月可退款),支付宝系统发送该交易状态通知}else if ($_POST['trade_status'] == 'TRADE_SUCCESS') {$zfbmodel=M('zfbpay');$arr=$zfbmodel->where("WIDout_trade_no=$out_trade_no")->find();if($arr){$type=$arr['type'];//1购买商品 2充值余额 3做单支付if($type==1){//购买商品$oid=$arr['id'];$model=M('order_goods');$orderinfo=$model->where("oid=$oid")->find();$paystate=$orderinfo['paystate'];if($paystate==0){$update['paystate']=1;$res=$model->where("oid=$oid")->save($update);//更新惠点 $umod=M('user');$ordersone=$model->where("oid=$oid")->find();$uid=$ordersone['uid'];$usertel=$umod->where("id=$uid")->find();$sys=M('sys')->find();     $mmp['id']=$usertel['id'];      $mmp['money']=$usertel['money']+$ordersone['oprice'];$mmp['huidian']=floor($mmp['money']/$sys['zshd']);$userSave=$umod->save($mmp);}}elseif($type==2){//余额充值$rid=$arr['id'];//获取充值信息$model=M('recharge');$usermodel=M('user');$rechargeinfo=$model->where("rid=$rid")->find();$paystate=$rechargeinfo['paystate'];if($paystate==0){$uid=$rechargeinfo['uid']; $num=$rechargeinfo['amoney'];      //更新订单状态$update['paystate']=1;$res=$model->where("rid=$rid")->save($update);            if($res){//更新用户余额$re2=$usermodel->where("id=$uid")->setInc('yue',$num);}} }elseif($type==3){}}//判断该笔订单是否在商户网站中已经做过处理//如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序//请务必判断请求时的total_amount与通知时获取的total_fee为一致的//如果有做过处理,不执行商户的业务程序      //注意://付款完成后,支付宝系统发送该交易状态通知}//——请根据您的业务逻辑来编写程序(以上代码仅作参考)——echo "success"; //请不要修改或删除}else {//验证失败echo "fail";}
}

  好了,看到这里相信各位技术开发人员已经知道自己的问题出现在哪些地方了,那么大家可以赶紧去尝试一下,如果还存在其他方面问题的话,可以留言咨询我们哦。

  本文由专业的app开发报价燚轩科技编辑发布,如需转载请注明原文作者及出处!

转载于:https://blog.51cto.com/13686158/2113547

php编程之如何调用支付宝支付接口的实现相关推荐

  1. php开发支付宝支付密码忘记了怎么办_php编程之如何调用支付宝支付接口的实现...

    对于任何一款软件来说,支付功能都是核心的,那么目前的主流支付接口主要是支付宝.微信和银联卡,而大多数开发技术人员对于如何调用支付宝的支付接口还存在很大的困扰,今天就来跟大家分享一下如何正确调用支付宝支 ...

  2. python 支付宝接口_python调用支付宝支付接口流程

    项目演示: 一.输入金额 二.跳转到支付宝付款 三.支付成功 四.跳转回自己网站 在使用支付宝接口的前期准备: 1.支付宝公钥 2.应用公钥 3.应用私钥 4.APPID 5.Django 1.11. ...

  3. java 调用支付宝支付接口

    最近公司在做支付模块,在接入过程中遇到了很多坑,费了不少事,现在分享一下接入方法,也记录一下,以后可能还用的到.用的是支付宝的即时到帐支付功能和微信的扫码支付功能,相比起来,个人感觉支付宝的文档和接入 ...

  4. python调用支付宝支付接口详细示例—附带Django demo代码

    项目演示: 一.输入金额 二.跳转到支付宝付款 三.支付成功 四.跳转回自己网站 在使用支付宝接口的前期准备: 1.支付宝公钥 2.应用公钥 3.应用私钥 4.APPID 5.Django 1.11. ...

  5. java 支付宝h5网页支付接口,移动端h5网页调用支付宝支付接口

    领导第一次让我做h5支付宝支付的时候,去了支付宝开放平台,一顿上上下下左左右右,看完了长呼一口气.这个支付好像没我啥事儿啊!小伙伴儿们自行查看:https://opendocs.alipay.com/ ...

  6. 移动端h5网页调用支付宝支付接口

    来源 | https://www.dsiab.com/post/4181 领导第一次让我做h5支付宝支付的时候,去了支付宝开放平台,一顿上上下下左左右右,看完了长呼一口气. 这个支付好像没我啥事儿啊! ...

  7. Java调用支付宝支付接口

    一.场景:公司需要在网站上进行支付宝支付. 二.API:使用支付宝开放平台的支付能力-即时到账接口.支付宝开放平台链接 三.分析: 1.支付宝的文档比较容易看,主要是有相应的DEMO,我这里看的DEM ...

  8. 使用 node 调用支付宝支付接口

    这篇文章中,我将简单介绍下在 node 中使用支付宝沙箱. 文章目录 1.起步 2.生成密钥 3.初始化项目 4.代码编写 5.支付商品 6.结束 1.起步 先注册支付宝开放平台账号:https:// ...

  9. 使用支付宝开放平台沙盒环境调用支付宝支付接口

    这一段时间一直想搞个支付的小demo,碰巧最近狂神的 kuangstudy 出了一期支付宝支付的教程,我立马就买了课程,但是当我看到一半的时候发现只有企业才能调用,心想完蛋了,搞不成了.就在我万念俱灰 ...

最新文章

  1. 磁盘占用百分百?Windows 10必做各项优化
  2. MyBatis构建sql时动态传入表名以及字段名
  3. 【金三银四】启动mysql服务器
  4. Jenkins操作手册
  5. 我的docker随笔30:C++程序的自动化构建
  6. gradient descent,计算图,backpropagation
  7. 【Scala】使用Scala语言定义函数和函数使用(比较两个数的大小代码)
  8. python socket-tcp逻辑
  9. 【设计模式学习笔记】之 开山篇
  10. 第11章 支撑向量机 SVM 学习笔记 下 SVM思路解决回归问题
  11. docker容器持久化卷讲解
  12. 计算机组成与结构 第四版pdf,计算机组成与体系结构(原书第4版)
  13. AdminLTE的介绍与使用(详细流程)-----前端框架
  14. 亚马逊美国站审核便携式火炉逊、户外烧烤架ASTM F3363测试项目
  15. 集群通信组件Tribes之整体介绍
  16. 有哪些好用的渲染软件?12个业内顶级渲染软件推荐
  17. 不撞南墙不回头----深度优先搜索
  18. 2019八泉峡第二届国际露营大会圆满落幕 创新举措引爆景区
  19. 论文阅读八:SDN 交换机转发规则 TCAM 存储优化综述
  20. 今日头条-新年集卡分2亿,每晚8:45红包雨

热门文章

  1. ABP框架详解(六)Aspects
  2. redis 配置文件翻译
  3. RDB 和 AOF 持久化的原理是什么?我应该用哪一个?它们的优缺点? 1
  4. PIE SDK 坐标系创建、定义、对比
  5. 深入理解 Laravel 管道
  6. Shell学习笔记一
  7. loadrunner-4-4事务摘要分析
  8. 一维数状数组区间修改,查询
  9. JPush极光推送Java服务器端API
  10. WCF Service Configuration Editor的使用