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 相关文章推荐
如何在WIN2K下安装PHP4.04
Oct 09 PHP
Smarty+QUICKFORM小小演示
Feb 25 PHP
PHP 面向对象 PHP5 中的常量
May 05 PHP
学习php笔记 字符串处理
Oct 19 PHP
教你如何快捷的使用cmd访问mysql小技巧
May 26 PHP
php图片添加文字水印实现代码
Mar 15 PHP
Yii2中如何使用modal弹窗(基本使用)
May 30 PHP
ThinkPHP实现更新数据实例详解(demo)
Jun 29 PHP
[原创]php实现数组按拼音顺序排序的方法
May 03 PHP
php检测mysql表是否存在的方法小结
Jul 20 PHP
利用PHPStorm如何开发Laravel应用详解
Aug 30 PHP
WordPress伪静态规则设置代码实例
Dec 10 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实现的获取网页中的图片并保存到本地的代码
2010/01/05 PHP
克隆一个新项目的快捷方式
2013/04/10 PHP
php判断页面是否是微信打开的示例(微信打开网页)
2014/04/25 PHP
ThinkPHP页面跳转success与error方法概述
2014/06/25 PHP
datePicker——日期选择控件(with jquery)
2007/02/20 Javascript
JS动态获取当前时间,并写到特定的区域
2013/05/03 Javascript
用javascript关闭本窗口技巧小结
2014/09/05 Javascript
JavaScript 事件绑定及深入
2015/04/13 Javascript
javascript解析xml实现省市县三级联动的方法
2015/07/25 Javascript
javascript如何实现360度全景照片问题汇总
2016/04/04 Javascript
JavaScript中日期函数的相关操作知识
2016/08/03 Javascript
Vue.js 表单校验插件
2016/08/14 Javascript
判断js的Array和Object的实现方法
2016/08/29 Javascript
微信小程序 空白页重定向解决办法
2017/06/27 Javascript
javascript将url解析为json格式的两种方法
2017/08/18 Javascript
vue实现某元素吸顶或固定位置显示(监听滚动事件)
2017/12/13 Javascript
React Router v4 入坑指南(小结)
2018/04/08 Javascript
使用vue-cli3新建一个项目并写好基本配置(推荐)
2019/04/24 Javascript
JavaScript实现星级评价效果
2019/05/17 Javascript
javascript事件循环event loop的简单模型解释与应用分析
2020/03/14 Javascript
神经网络理论基础及Python实现详解
2017/12/15 Python
Python用于学习重要算法的模块pygorithm实例浅析
2018/08/16 Python
在Pycharm中设置默认自动换行的方法
2019/01/16 Python
python生成带有表格的图片实例
2019/02/03 Python
Python基本数据结构与用法详解【列表、元组、集合、字典】
2019/03/23 Python
python之pygame模块实现飞机大战完整代码
2020/11/29 Python
基于Python中Remove函数的用法讨论
2020/12/11 Python
Java工程师面试集锦之Spring框架
2013/06/16 面试题
法院实习人员自我鉴定
2013/09/26 职场文书
霸气队列口号
2014/06/18 职场文书
移交协议书
2014/08/19 职场文书
新颖的化妆品活动方案
2014/08/21 职场文书
国家机关领导干部民主生活会对照检查材料思想汇报
2014/09/17 职场文书
建筑工地文明标语
2014/10/09 职场文书
部门经理助理岗位职责
2015/04/13 职场文书
Java 超详细讲解IO操作字节流与字符流
2022/03/25 Java/Android