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 相关文章推荐
实时抓取YAHOO股票报价的代码
Oct 09 PHP
Discuz! Passport 通行证整合
Mar 27 PHP
php json_encode奇怪问题说明
Sep 27 PHP
php自动注册登录验证机制实现代码
Dec 20 PHP
完美解决令人抓狂的zend studio 7代码提示(content Assist)速度慢的问题
Jun 20 PHP
PHP登陆后跳转到登陆前页面实现思路及代码
Jan 17 PHP
php缓冲 output_buffering和ob_start使用介绍
Jan 30 PHP
php汉字转拼音的示例
Feb 27 PHP
php的declare控制符和ticks教程(附示例)
Mar 21 PHP
PHP判断是否连接上网络的方法
Jul 01 PHP
php利用递归实现删除文件目录的方法
Sep 23 PHP
laravel 实现设置时区的简单方法
Oct 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与C#分别格式化文件大小的代码
2011/05/14 PHP
组合算法的PHP解答方法
2012/02/04 PHP
PHP+MySQL删除操作实例
2015/01/21 PHP
PHP错误机制知识汇总
2016/03/24 PHP
php getcwd与dirname(__FILE__)区别详解
2016/09/24 PHP
php cookie 详解使用实例
2016/11/03 PHP
PHP使用ActiveMQ实例
2018/02/05 PHP
Jquery easyui 下loaing效果示例代码
2013/08/12 Javascript
js算法中的排序、数组去重详细概述
2013/10/14 Javascript
javascript右下角弹层及自动隐藏(自己编写)
2013/11/20 Javascript
javascript移出节点removeChild()使用介绍
2014/04/03 Javascript
javascript运算符——位运算符全面介绍
2016/07/14 Javascript
Vue.js每天必学之过滤器与自定义过滤器
2016/09/07 Javascript
JS实现一个简单的日历
2017/02/22 Javascript
Vue常用指令V-model用法
2017/03/08 Javascript
NodeJS实现微信公众号关注后自动回复功能
2017/05/31 NodeJs
解决ztree搜索中多级菜单展示不全问题
2017/07/05 Javascript
bootstrap响应式工具使用详解
2017/11/29 Javascript
解决使用bootstrap的dropdown部件时报错:error:Bootstrap dropdown require Popper.js问题
2018/08/30 Javascript
7个好用的JavaScript技巧分享(译)
2019/05/07 Javascript
详解ECMAScript2019/ES10新属性
2019/12/06 Javascript
[44:50]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第二局
2016/02/26 DOTA
python中根据字符串调用函数的实现方法
2016/06/12 Python
浅谈机器学习需要的了解的十大算法
2017/12/15 Python
Python random模块用法解析及简单示例
2017/12/18 Python
python fuzzywuzzy模块模糊字符串匹配详细用法
2019/08/29 Python
python多进程重复加载的解决方式
2019/12/13 Python
Python selenium如何打包静态网页并下载
2020/08/12 Python
Python 内存管理机制全面分析
2021/01/16 Python
详解Canvas 跨域脱坑实践
2018/11/07 HTML / CSS
百联网上商城:i百联
2017/01/28 全球购物
泰国排名第一的家居用品中心:HomePro
2020/11/18 全球购物
如何开发一个JQuery插件
2016/07/28 面试题
公司介绍信范文
2015/01/31 职场文书
故意杀人罪辩护词
2015/05/21 职场文书
如何用python插入独创性声明
2021/03/31 Python