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中cookie的作用域
Mar 27 PHP
php 中英文语言转换类代码
Aug 11 PHP
php面向对象 字段的声明与使用
Jun 14 PHP
解析php如何将日志写进syslog
Jun 28 PHP
浅析php变量修饰符static的使用
Jun 28 PHP
windows中为php安装mongodb与memcache
Jan 06 PHP
Laravel框架实现发送短信验证功能代码
Jun 06 PHP
PHP会员找回密码功能的简单实现
Sep 05 PHP
PHP实现对二维数组某个键排序的方法
Sep 14 PHP
PHP5.5安装PHPRedis扩展及连接测试方法
Jan 22 PHP
PHP实现链表的定义与反转功能示例
Jun 09 PHP
PHP一个简单的无需刷新爬虫
Jan 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
使PHP自定义函数返回多个值
2006/11/26 PHP
php Try Catch异常测试
2009/03/01 PHP
PHP UTF8编码内的繁简转换类
2009/07/20 PHP
PHP多个版本的分析解释
2011/07/21 PHP
兼容ie6浏览器的php下载文件代码分享
2014/07/14 PHP
PHP中的session安全吗?
2016/01/22 PHP
PHP Try-catch 语句使用技巧
2016/02/28 PHP
关于PHP内置的字符串处理函数详解
2017/02/04 PHP
在视频前插入广告
2006/11/20 Javascript
js+FSO遍历文件夹下文件并显示
2007/03/07 Javascript
JS不能跨域借助jquery获取IP地址的方法
2014/08/20 Javascript
javascript 小数乘法结果错误的处理方法
2016/07/28 Javascript
JS中静态页面实现微信分享功能
2017/02/06 Javascript
在ABP框架中使用BootstrapTable组件的方法
2017/07/31 Javascript
Vue 多层组件嵌套二种实现方式(测试实例)
2017/09/08 Javascript
nodejs中安装ghost出错的原因及解决方法
2017/10/23 NodeJs
20行JS代码实现粘贴板复制功能
2018/02/06 Javascript
node实现的爬虫功能示例
2018/05/04 Javascript
Vuejs 实现简易 todoList 功能 与 组件实例代码
2018/09/10 Javascript
基于Vue和Element-Ui搭建项目的方法
2019/09/06 Javascript
java遇到微信小程序 &quot;支付验证签名失败&quot; 问题解决
2019/12/22 Javascript
Vue2.x和Vue3.x的双向绑定原理详解
2020/11/05 Javascript
解决vue elementUI 使用el-select 时 change事件的触发问题
2020/11/17 Vue.js
Python实现查找匹配项作处理后再替换回去的方法
2017/06/10 Python
python3 对list中每个元素进行处理的方法
2018/06/29 Python
pytorch中的embedding词向量的使用方法
2019/08/18 Python
HTML5实现视频弹幕功能
2019/08/09 HTML / CSS
屈臣氏乌克兰:Watsons UA
2019/10/29 全球购物
递归计算如下递归函数的值(斐波拉契)
2012/02/04 面试题
西式婚礼证婚词
2014/01/12 职场文书
美发店5.1活动方案
2014/01/24 职场文书
教师党员公开承诺书
2014/03/25 职场文书
诚信考试倡议书
2014/04/15 职场文书
规范化管理年活动总结
2014/08/29 职场文书
刑事辩护授权委托书格式
2014/10/13 职场文书
保安辞职信范文
2015/02/28 职场文书