• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    PHP接入支付宝接口失效流程详解

    最近在写个需要简单支付的小项目,用到了支付宝接口,现已完成。把php接入支付宝的流程写在这里供像我一样的小白参考。

    1.首先要有一个创建一个应用(选好自己想要的功能,关于支付的功能,貌似都需要签约)


    2.下载SDKDome网址

    https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.CBtzBFtreeId=203articleId=105910docType=1

     

    我选择的是MD5签名方式,下面红框内就是做好的php Demo


    3.打开alipay.config.php


    4.配置完成后这个小例子就能直接访问了

     
     
    通过这个例子,我们就能灵活运用了 开发文档: 

    https://doc.open.alipay.com/docs/doc.htm?treeId=203articleId=105288docType=1

    嵌入thinkphp3.2.3 我保留了


    重新命名为 


    分别给这五个文件加上命名空间

    这四个文件的命名空间改为


    Alipay.class.php 有改动

    ?php
    namespace Extend\Alipay;
    class Alipay {
      public function pay($alipay_config,$args){
        /**************************请求参数**************************/
        //支付类型
      $payment_type = "1";
      //必填,不能修改
      //服务器异步通知页面路径
      $notify_url = $args['notify_url'];
      //需http://格式的完整路径,不能加?id=123这类自定义参数
      //页面跳转同步通知页面路径
      $return_url = $args['return_url'];
      //需http://格式的完整路径,不能加?id=123这类自定义参数,不能写成http://localhost/
        //商户订单号
      $out_trade_no = $args['out_trade_no'];
      //商户网站订单系统中唯一订单号,必填
      //订单名称
      $subject = "测试";
      //必填
      //付款金额
      $total_fee = $args['total'];
      //必填
      //订单描述
      $body = "test";
      //需以http://开头的完整路径,例如:http://www.商户网址.com/myorder.html
      //防钓鱼时间戳
      $anti_phishing_key = "";
      //若要使用请调用类文件submit中的query_timestamp函数
      //客户端的IP地址
      $exter_invoke_ip = "";
      //非局域网的外网IP地址,如:221.0.0.1
      /************************************************************/
      //构造要请求的参数数组,无需改动
      $parameter = array(
        "service" => "create_direct_pay_by_user",
        "partner" => trim($alipay_config['partner']),
        "seller_id" => trim($alipay_config['seller_id']),
        "payment_type" => $payment_type,
        "notify_url"  => $notify_url,
        "return_url"  => $return_url,
        "out_trade_no" => $out_trade_no,
        "subject"    => $subject,
        "total_fee"   => $total_fee,
        "body" => $body,
        "show_url"   => $show_url,
        "anti_phishing_key"   => $anti_phishing_key,
        "exter_invoke_ip"    => $exter_invoke_ip,
        "_input_charset"    => trim(strtolower($alipay_config['input_charset']))
      );
      //建立请求
      $alipaySubmit = new lib\AlipaySubmit($alipay_config);
        $html_text = $alipaySubmit->buildRequestForm($parameter,"get", "确认");
        echo $html_text;
      }
    }

    在config.php配置文件里配置参数


    然后新建控制器TextController.class.php

    ?php
    namespace Home\Controller;
    use Think\Controller;
    use \Extend\Alipay as Alipays;
    class TextController extends Controller {
      public function index(){
        $this->display();
      }
      public function dobuy(){
        $out_trade_no = date('YmdHis');
        $baseurl = 'http://'.$_SERVER['HTTP_HOST'];
        $args = array(
          'out_trade_no'=>$out_trade_no,
          'notify_url'=> $baseurl.'/index.php/Home/Text/notifyurl.html',
          'return_url'=> $baseurl.'/index.php/Home/Text/returnurl.html',
          'total'=> $_POST['WIDtotal_fee'],
          );
        $s = new Alipays\Alipay();
        $s->pay(C('alipay'),$args);
      }
      // 同步跳转
      public function returnurl(){
        $alipay_config = C('alipay');
        //计算得出通知验证结果
        $alipayNotify = new Alipays\lib\AlipayNotify($alipay_config);
        $verify_result = $alipayNotify->verifyReturn();
        if($verify_result) {//验证成功
          //商户订单号
          $out_trade_no = $_GET['out_trade_no'];
          //支付宝交易号
          $trade_no = $_GET['trade_no'];
          //交易状态
          $trade_status = $_GET['trade_status'];
          if($_GET['trade_status'] == 'TRADE_FINISHED' || $_GET['trade_status'] == 'TRADE_SUCCESS') {
            //交易成功        
          }else {
           echo "trade_status=".$_GET['trade_status'];
          }  
          echo "验证成功br />";
          }else {
          //验证失败
          //如要调试,请看alipay_notify.php页面的verifyReturn函数
          echo "验证失败";
        }
      }
      // 异步跳转
      public function notifyurl(){
        $alipay_config = C('alipay');
        //计算得出通知验证结果
        $alipayNotify = new Alipays\AlipayNotify($alipay_config);
        $verify_result = $alipayNotify->verifyNotify();
        if($verify_result) {//验证成功
          $out_trade_no = $_POST['out_trade_no'];
          //支付宝交易号
          $trade_no = $_POST['trade_no'];
          //交易状态
          $trade_status = $_POST['trade_status'];
          if($_POST['trade_status'] == 'TRADE_FINISHED'||$_POST['trade_status'] == 'TRADE_SUCCESS') {
           //交易成功
          }
          echo "success";   //请不要修改或删除
          
        }
        else {
          //验证失败
          echo "fail";
          //调试用,写文本函数记录程序运行情况是否正常
          //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录");
        }
      }
    }

    然后


    这样就成功完成简单的支付功能了

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    您可能感兴趣的文章:
    • PHP封装XML和JSON格式数据接口操作示例
    • PHP调用全国天气预报数据接口查询天气示例
    • php的api数据接口书写实例(推荐)
    • PHP实现chrome表单请求数据转换为接口使用的json数据
    • PHP实现腾讯短网址生成api接口实例
    • PHP语言对接抖音快手小红书视频/图片去水印API接口源码
    • PHP预定义接口——Iterator用法示例
    • php与阿里云短信接口接入操作案例分析
    • PHP开发API接口签名生成及验证操作示例
    • PHP接口类(interface)的定义、特点和应用示例
    • 微信小程序开发之获取用户手机号码(php接口解密)
    • PHP 对象接口简单实现方法示例
    • PHP开发api接口安全验证操作实例详解
    • 如何用PHP编写简单的api数据接口
    上一篇:基于PHP实现用户在线状态检测
    下一篇:PHP mkdir创建文件夹实现方法解析
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    PHP接入支付宝接口失效流程详解 PHP,接入,支付,宝,接口,失效,