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

对于任何一款软件来说,支付功能都是核心的,那么目前的主流支付接口主要是支付宝、微信和银联卡,而大多数开发技术人员对于如何调用支付宝的支付接口还存在很大的困扰,今天就来跟大家分享一下如何正确调用支付宝支付接口的实现,代码如下所示:
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开发报价燚轩科技编辑发布,如需转载请注明原文作者及出处!

原文地址:http://blog.51cto.com/13686158/2113547

时间: 2024-11-03 02:26:15

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

Java调用支付宝支付接口

一.场景:公司需要在网站上进行支付宝支付. 二.API:使用支付宝开放平台的支付能力-即时到账接口.支付宝开放平台链接 三.分析: 1.支付宝的文档比较容易看,主要是有相应的DEMO,我这里看的DEMO是 JAVA-UTF-8版本. ? 2.导入DEMO,在com.alipay.config中填入对应的partner和key(在对应的商户后台获取)就可以直接运行了解支付流程了. ? 3.改写:我这边使用的是springmvc+mybatis.商品发起购买(走支付宝支付).跳转到支付宝.支付宝回调

调用支付宝第三方接口(沙箱环境) SpringMVC+Maven

一.蚂蚁金服开放平台的操作 网址:https://open.alipay.com/platform/home.htm 支付宝扫码登陆 之后配置你的沙箱支付宝 支付宝提供一键生成工具便于开发者生成一对RSA2密钥:https://docs.open.alipay.com/291/105971 注意:生成时一定要选择PKCS8+2048,第一个坑    将应用网关和回调地址更改为:https://www.alipay.com [AES密钥不用管] [然后往下会有支付宝沙箱安卓端工具,下载,以供后续支

支付宝支付接口的调用(转)

支付宝支付接口的调用 2018年04月07日 17:54:51 Forward_duyu 阅读数:15167 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/zoroduyu/article/details/79825880 应公司业务要求,需要调用支付宝的支付接口进行支付的操作,于是将整个调用过程用博客形式记录下来,以供以后使用. 本次调用支付宝采用的是电脑支付,官方文档页面如下: 电脑端调用支付宝,流程很简单,在页面有一个立即支付的按钮,点击

支付宝支付接口开发

1.简单点说就是调用支付宝那边的接口方法,然后传递数据过去,之后会返回一个是否成功的值,然后你拿到之后判断就好了 2.首先你得有淘宝的商铺的合作身份ID,和Key,这个key就是你的密钥.当你的表单提交的时候,表单中的参数会根据这个key来md5加密,同明文参数一同发送到支付宝那边的,然后支付宝那边根据你的key(他们是知道你的key的.因为这个key是他们给你的)来再次加密你的明文参数.如果加密后的数据和你一起传递的密文是相同的话则表示数据在传输过程中没有被修改,就会处理你的请求...处理完之

Android移动开发-集成调用支付宝支付开发的实现

如今移动支付比较火,尤其是在中国的市场.移动支付也称为手机支付,就是允许用户使用其移动终端(通常是手机)对所消费的商品或服务进行账务支付的一种服务方式.单位或个人通过移动设备.互联网或者近距离传感直接或间接向银行金融机构发送支付指令产生货币支付与资金转移行为,从而实现移动支付功能.移动支付将终端设备.互联网.应用提供商以及金融机构相融合,为用户提供货币支付.缴费等金融业务. 谈到移动支付,不得不说阿里旗下的蚂蚁金融的支付以及腾讯旗下的微信支付.那么现在在就谈谈如何Android项目里集成调用支付

PC端支付宝支付接口实现

首先要2个jar包 一个是alipay-sdk--java-4.9.79.ALL.jar 一个是aliyun-java-sdk-dysmsapi-1.0.0 基本配置信息: package com.zhetian.www.alibaba; import java.io.FileWriter; import java.io.IOException; /** * @Copyright (C)遮天网络有限公司 * @Author: YUAN HUAI XING * @Date 2020/3/31 17

微信浏览器中调用支付宝支付

众所周知,在微信浏览器中是无法唤起支付宝的,会提示请在浏览器中打开,如果非要在微信浏览器中调起支付宝的话,只能是跳出微信浏览器,关于这一点,在支付宝官网给出了一个例子.但是,话说回去,后来我仔细想想,其实真的没有必要非要在微信浏览器中调起支付宝支付(当时真是一根筋啊啊啊...) 支付宝手机网站支付的官方文档: https://doc.open.alipay.com/docs/doc.htm?treeId=203&articleId=105288&docType=1 快速接入: https:

调用微信支付接口总结

毕业设计项目里面用到了微信支付的功能,在视频教程里面学习了一下,这里做个总结来记录.教材的模板里面用到的是anglusJS来做前端开发,我这边简化了,用的ajax进行异步的调用,然后业务也直接写在了控制层(不过不应该这么写的..),应该是个简洁明了的模板,主要是让自己理解整个流程. 1 关于在调用微信支付接口之前的一些准备工作,申请公众号,认证,拿到密钥等等操作就不概述了, 微信的在线支付文档中都有描述,这里贴出地址 :https://pay.weixin.qq.com/wiki/doc/api

对接支付宝支付接口开发详细步骤(证书签名方式)

对接支付宝支付接口,官方文档已经写的很清楚了,但是也有很多像我一样的小白,第一次对接支付宝支付接口,会有些迷茫,所以我在此写下这篇文章,给我和我一样的同学,一点思路吧.需要思路的可以私聊我 两大支付平台感觉都有坑人之处吧(终归是学艺不精,哈哈哈哈!!) 不过支付宝相做的较好的一点是有技术和你在线调试,这就很舒服,哈哈. 寻找技术地址:支付宝开放平台 - 开发者中心 - 网页&移动应用 - 右边有个立即咨询 - 智能问答(多发送几次就有技术出来了) 第一步:(先要在支付宝进行操做,拿到我们需要开发