CodeIgniter开发实现支付宝接口调用的方法示例


Posted in PHP onNovember 14, 2016

本文实例讲述了CodeIgniter开发实现支付宝接口调用的方法。分享给大家供大家参考,具体如下:

准备:

1、alipay官方下载最新接口类库
2、解压后,将目录"\即时到账交易接口-create_direct_pay_by_user\demo\create_direct_pay_by_user-PHP-UTF-8\lib"复制到 application\third_party目录下,并改名lib为alipay
3、同样复制cacert.pem文件到"application\third_party\alipay"目录下,这个不是必须的,在走ssl通道时用到的证书

代码实例:

以下只列出controller部分代码,view与model根据自己实际需要去编写

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/**
 * alipy支付接口
 * @author onwulc@163.com
 *
 */
class Alipay extends CI_Controller {
  private $alipay_config;
  function __construct(){
    parent::__construct();
    $this->_init_config();
    $this->load->helper('url');
  }
  function index(){
    $this->load->view('alipay');//装载支付视图页面,post到do_alipay
  }
  function do_alipay(){
    require_once(APPPATH.'third_party/alipay/alipay_submit.class.php');
    //构造要请求的参数数组,无需改动
    $parameter = array(
      "service" => "create_direct_pay_by_user",
      "partner" => trim($this->alipay_config['partner']),
      "payment_type"  => '1',
      "notify_url"  => site_url('alipay/do_notify'),
      "return_url"  => site_url('alipay/do_return'),
      "seller_email"  => trim($this->alipay_config['seller_emaill']),//支付宝帐户,
      "out_trade_no"  => $this->input->post('WIDout_trade_no'),//商户订单号
      "subject"  => $this->input->post('WIDsubject'),//订单名称
      "total_fee"  => $this->input->post('WIDtotal_fee'),//必填,付款金额
      "body"  => $this->input->post('WIDbody'),//必填,订单描述
      "show_url"  => $this->input->post('WIDshow_url'),//商品展示地址
      "anti_phishing_key"  => '',//防钓鱼时间戳
      "exter_invoke_ip"  => '',//客户端的IP地址
      "_input_charset"  => trim(strtolower($this->alipay_config['input_charset']))
    );
    //建立请求
    $alipaySubmit = new AlipaySubmit($this->alipay_config);
    $html_text = $alipaySubmit->buildRequestForm($parameter,"get", "确认");
    echo $html_text;
  }
  function do_notify(){
    require_once(APPPATH.'third_party/alipay/alipay_notify.class.php');
  }
  function do_return(){
    require_once(APPPATH.'third_party/alipay/alipay_notify.class.php');
    $alipayNotify = new AlipayNotify($this->alipay_config);
    $verify_result = $alipayNotify->verifyReturn();
    //商户订单号
    $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') {
      //判断该笔订单是否在商户网站中已经做过处理
      //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
      //如果有做过处理,不执行商户的业务程序
      echo '支付成功,交易处理环节';
    }else {
      echo "trade_status=".$_GET['trade_status'];
    }
    echo "验证成功<br />";
  }
  /**
   * 初始化支付宝配置,详细参数请根据自己实际接口修改
   */
  private function _init_config(){
    //支付宝帐户
    $alipay_config['seller_emaill'] = ''; 
    //合作身份者id,以2088开头的16位纯数字
    $alipay_config['partner'] = '2088999999999999';
    //安全检验码,以数字和字母组成的32位字符
    $alipay_config['key'] = 'vhyjvdht3ayxbtx692vlkbwilhXXXXXX';
    //签名方式 不需修改
    $alipay_config['sign_type'] = strtoupper('MD5');
    //字符编码格式 目前支持 gbk 或 utf-8
    $alipay_config['input_charset'] = strtolower('utf-8');
    //ca证书路径地址,用于curl中ssl校验
    //请保证cacert.pem文件在当前文件夹目录中
    $alipay_config['cacert'] = APPPATH.'third_party/alipay/cacert.pem';
    //访问模式,根据自己的服务器是否支持ssl访问,若支持请选择https;若不支持请选择http
    $alipay_config['transport'] = 'http';
    $this->alipay_config = $alipay_config;
  }
}

希望本文所述对大家基于CodeIgniter框架的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP 根据IP地址控制访问的代码
Apr 22 PHP
PHP之COOKIE支持详解
Sep 20 PHP
关于PHP实现异步操作的研究
Feb 03 PHP
php 根据url自动生成缩略图并处理高并发问题
Jan 23 PHP
CodeIgniter框架数据库事务处理的设计缺陷和解决方案
Jul 25 PHP
php mb_substr()函数截取中文字符串应用示例
Jul 29 PHP
10条php编程小技巧
Jul 07 PHP
Zend Framework动作助手Json用法实例分析
Mar 05 PHP
PHP实现登陆表单提交CSRF及验证码
Jan 24 PHP
实例分析基于PHP微信网页获取用户信息
Nov 24 PHP
PHP容器类的两种实现方式示例
Jul 24 PHP
PHP的介绍以及优势详细分析
Sep 05 PHP
PHP实现无限分类的实现方法
Nov 14 #PHP
php mysql获取表字段名称和字段信息的三种方法
Nov 13 #PHP
PHP编写daemon process 实例详解
Nov 13 #PHP
php版微信小店API二次开发及使用示例
Nov 12 #PHP
PHP Mysqli 常用代码集合
Nov 12 #PHP
PHP版微信小店接口开发实例
Nov 12 #PHP
PHP错误和异常处理功能模块示例
Nov 12 #PHP
You might like
转生史莱姆:萌王第一次撸串开心到飞起,哥布塔撸串却神似界王神
2018/11/30 日漫
访问编码后的中文URL返回404错误的解决方法
2014/08/20 PHP
PHP论坛实现积分系统的思路代码详解
2020/06/01 PHP
用函数式编程技术编写优美的 JavaScript_ibm
2008/05/16 Javascript
js中typeof的用法汇总
2013/12/12 Javascript
JavaScript中获取高度和宽度函数总结
2014/10/08 Javascript
浅谈angularJS中的事件
2016/07/12 Javascript
AngularJs Understanding the Model Component
2016/09/02 Javascript
D3.js实现直方图的方法详解
2016/09/25 Javascript
微信小程序滚动Tab实现左右可滑动切换
2017/08/17 Javascript
原生js实现简单的焦点图效果实例
2017/12/14 Javascript
Vue项目中跨域问题解决方案
2018/06/05 Javascript
新手入门js闭包学习过程解析
2019/10/08 Javascript
JS将指定的某个字符全部转换为其他字符实例代码
2020/10/13 Javascript
Vue中computed和watch有哪些区别
2020/12/19 Vue.js
Python查询阿里巴巴关键字排名的方法
2015/07/08 Python
Python解析json文件相关知识学习
2016/03/01 Python
对numpy和pandas中数组的合并和拆分详解
2018/04/11 Python
python中类的属性和方法介绍
2018/11/27 Python
详解python中sort排序使用
2019/03/23 Python
在django view中给form传入参数的例子
2019/07/19 Python
python实现知乎高颜值图片爬取
2019/08/12 Python
pytorch判断是否cuda 判断变量类型方式
2020/06/23 Python
Python实现简单的2048小游戏
2021/03/01 Python
css3圆角样式分享自定义按钮样式
2013/12/27 HTML / CSS
CSS3 重置iphone浏览器按钮input,select等表单元素的默认样式
2014/10/11 HTML / CSS
CSS3下的渐变文字效果实现示例
2018/03/02 HTML / CSS
HTML5新特性之用SVG绘制微信logo
2016/02/03 HTML / CSS
韩国爱茉莉太平洋化妆品美国站:Amore Pacific US
2016/10/28 全球购物
应聘自荐信
2013/12/14 职场文书
社区中秋节活动方案
2014/01/29 职场文书
装修设计师求职信
2014/02/26 职场文书
私人委托书格式
2014/09/10 职场文书
党员发展大会主持词
2015/07/03 职场文书
关于应聘教师的自荐信
2016/01/28 职场文书
解决SpringCloud Feign传对象参数调用失败的问题
2021/06/23 Java/Android