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实现框架(二)
Oct 09 PHP
献给php初学者(入门学习经验谈)
Oct 12 PHP
php设计模式 Delegation(委托模式)
Jun 26 PHP
php 判断是否是中文/英文/数字示例代码
Sep 30 PHP
ThinkPHP实现二级循环读取的方法
Nov 03 PHP
php生成过去100年下拉列表的方法
Jul 20 PHP
JavaScript与HTML结合的基本使用方法整理
Oct 12 PHP
大家须知简单的php性能优化注意点
Jan 04 PHP
php 解决扫描二维码下载跳转问题
Jan 13 PHP
PHP简单实现模拟登陆功能示例
Sep 15 PHP
php curl获取到json对象并转成数组array的方法
May 31 PHP
Yii框架常见缓存应用实例小结
Sep 09 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
透析PHP的配置文件php.ini
2006/10/09 PHP
discuz加密解密函数使用方法和中文注释
2014/01/21 PHP
php通过array_unshift函数添加多个变量到数组前端的方法
2015/03/18 PHP
10个超级有用的PHP代码片段果断收藏
2015/09/23 PHP
用PHP将Unicode 转化为UTF-8的实现方法(推荐)
2017/02/08 PHP
理清PHP在Linxu下执行时的文件权限方法
2017/06/07 PHP
input的focus方法使用
2010/03/13 Javascript
利用jquery操作select下拉列表框的代码
2010/06/04 Javascript
JavaScript中为元素加上name属性的方法
2011/05/09 Javascript
javascript学习笔记(十四) window对象使用介绍
2012/06/20 Javascript
修复jQuery tablesorter无法正确排序的bug(加千分位数字后)
2016/03/30 Javascript
jquery+CSS3实现3D拖拽相册效果
2016/07/18 Javascript
Javascript从数组中随机取出不同元素的两种方法
2016/09/22 Javascript
简单实现IONIC购物车功能
2017/01/10 Javascript
基于vue 添加axios组件,解决post传参数为null的问题
2018/03/05 Javascript
vue实现拖拽的简单案例 不超出可视区域
2019/07/25 Javascript
OpenLayer学习之自定义测量控件
2020/09/28 Javascript
详解vue中使用transition和animation的实例代码
2020/12/12 Vue.js
python嵌套函数使用外部函数变量的方法(Python2和Python3)
2016/01/31 Python
Python与Java间Socket通信实例代码
2017/03/06 Python
编写多线程Python服务器 最适合基础
2018/09/14 Python
python3.5 cv2 获取视频特定帧生成jpg图片
2019/08/28 Python
python TK库简单应用(实时显示子进程输出)
2019/10/29 Python
从0到1使用python开发一个半自动答题小程序的实现
2020/05/12 Python
python名片管理系统开发
2020/06/18 Python
python 绘制场景热力图的示例
2020/09/23 Python
python生成word合同的实例方法
2021/01/12 Python
浅谈HTML5 defer和async的区别
2016/06/07 HTML / CSS
美国一站式电动和手动工具商店:International Tool
2020/11/26 全球购物
优秀教师获奖感言
2014/01/31 职场文书
会计专业职业规划:规划自我赢取未来
2014/02/12 职场文书
五年后的职业生涯规划
2014/03/04 职场文书
教师网络培训感言
2014/03/09 职场文书
承德避暑山庄导游词
2015/02/03 职场文书
Vue3.0中Ref与Reactive的区别示例详析
2021/07/07 Vue.js
python模拟浏览器 使用selenium进入好友QQ空间并留言
2022/04/12 Python