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 相关文章推荐
模仿OSO的论坛(五)
Oct 09 PHP
基于empty函数的输出详解
Jun 17 PHP
解决phpcms更换javascript的幻灯片代码调用图片问题
Dec 26 PHP
php数组添加与删除单元的常用函数实例分析
Feb 16 PHP
一张表搞清楚php is_null、empty、isset的区别
Jul 07 PHP
PHP和Mysql中转UTF8编码问题汇总
Oct 10 PHP
WordPress中获取所使用的模板的页面ID的简单方法
Dec 31 PHP
简单了解将WordPress中的工具栏移到底部的小技巧
Dec 31 PHP
php日期操作技巧小结
Jun 25 PHP
php实现将base64格式图片保存在指定目录的方法
Oct 13 PHP
详解如何在云服务器上部署Laravel
Jun 30 PHP
Laravel6.2中用于用户登录的新密码确认流程详解
Oct 16 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 5.3 下载时 VC9、VC6、Thread Safe、Non Thread Safe的区别分析
2011/03/28 PHP
PHP中SimpleXML函数用法分析
2014/11/26 PHP
php实现随机生成易于记忆的密码
2015/06/19 PHP
PHP编写登录验证码功能 附调用方法
2016/05/19 PHP
Laravel5.1框架注册中间件的三种场景详解
2019/07/09 PHP
js 复制或插入Html的实现方法小结
2010/05/19 Javascript
javascript提取URL的搜索字符串中的参数(自定义函数实现)
2013/01/22 Javascript
js的onload事件及初始化按钮事件示例代码
2013/09/25 Javascript
深入探讨javascript函数式编程
2015/10/11 Javascript
jQuery Dialog对话框事件用法实例分析
2016/05/10 Javascript
Javascript的动态增加类的实现方法
2016/10/20 Javascript
js实现随机数字字母验证码
2017/06/19 Javascript
jQuery开源组件BootstrapValidator使用详解
2017/06/29 jQuery
JS中type=&quot;button&quot;和type=&quot;submit&quot;的区别
2017/07/04 Javascript
vue之将echart封装为组件
2018/06/02 Javascript
JavaScript实现JSON合并操作示例【递归深度合并】
2018/09/07 Javascript
JS中的算法与数据结构之列表(List)实例详解
2019/08/16 Javascript
Python去除列表中重复元素的方法
2015/03/20 Python
PyCharm安装第三方库如Requests的图文教程
2018/05/18 Python
python看某个模块的版本方法
2018/10/16 Python
Python中文件的写入读取以及附加文字方法
2019/01/23 Python
用Cython加速Python到“起飞”(推荐)
2019/08/01 Python
Django实现WebSSH操作物理机或虚拟机的方法
2019/11/06 Python
python中threading和queue库实现多线程编程
2021/02/06 Python
详解CSS3新增的背景属性
2019/12/25 HTML / CSS
压铸汽车模型收藏家:Diecastmodelswholesale.com
2016/12/21 全球购物
说出一些常用的类,包,接口
2014/09/22 面试题
函授教育个人学习的自我评价
2013/12/31 职场文书
服务员自我评价
2014/01/25 职场文书
大学校务公开实施方案
2014/03/31 职场文书
美德少年事迹材料500字
2014/08/19 职场文书
小学竞选班干部演讲稿
2014/08/20 职场文书
老龙头导游词
2015/02/11 职场文书
写作技巧:如何撰写商业计划书
2019/08/08 职场文书
行政后勤人员工作计划应该怎么写?
2019/08/16 职场文书
react 路由Link配置详解
2021/11/11 Javascript