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下一个非常全面获取图象信息的函数
Nov 20 PHP
linux下 C语言对 php 扩展
Dec 14 PHP
php面向对象全攻略 (六)__set() __get() __isset() __unset()的用法
Sep 30 PHP
php学习笔记 PHP面向对象的程序设计
Jun 13 PHP
php处理斐波那契数列非递归方法
Feb 04 PHP
php防注入,表单提交值转义的实现详解
Jun 10 PHP
在wamp集成环境下升级php版本(实现方法)
Jul 01 PHP
smarty简单入门实例
Nov 28 PHP
PHP 生成N个不重复的随机数
Jan 21 PHP
PHP中的switch语句的用法实例详解
Oct 21 PHP
PHP模拟http请求的方法详解
Nov 09 PHP
PHP的简单跳转提示的实现详解
Mar 14 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
推荐几部必看的DC动画电影
2020/03/03 欧美动漫
PHP+ACCESS 文章管理程序代码
2010/06/21 PHP
php中批量删除Mysql中相同前缀的数据表的代码
2011/07/01 PHP
php中使用接口实现工厂设计模式的代码
2012/06/17 PHP
PHP中把错误日志保存在系统日志中(Windows系统)
2015/06/23 PHP
Prototype使用指南之hash.js
2007/01/10 Javascript
动态标签 悬停效果 延迟加载示例代码
2013/11/21 Javascript
jquery div拖动效果示例代码
2013/12/08 Javascript
如何调试异步加载页面里包含的js文件
2014/10/30 Javascript
node.js解决获取图片真实文件类型的问题
2014/12/20 Javascript
javascript中scrollTop详解
2015/04/13 Javascript
js省市区级联查询(插件版&amp;无插件版)
2017/03/21 Javascript
JS库之ParticlesJS使用简介
2017/09/12 Javascript
JS实现定时任务每隔N秒请求后台setInterval定时和ajax请求问题
2017/10/15 Javascript
在vue中安装使用vux的教程详解
2018/09/16 Javascript
swiper4实现移动端导航栏tab滑动切换
2020/10/16 Javascript
原生小程序封装跑马灯效果
2020/10/21 Javascript
JS画布动态实现黑客帝国背景效果
2020/11/08 Javascript
[12:29]2018国际邀请赛 开幕秀
2018/08/22 DOTA
Pythont特殊语法filter,map,reduce,apply使用方法
2016/02/27 Python
Python Django使用forms来实现评论功能
2016/08/17 Python
Python基于正则表达式实现检查文件内容的方法【文件检索】
2017/08/30 Python
pandas 实现字典转换成DataFrame的方法
2018/07/04 Python
django 环境变量配置过程详解
2019/08/06 Python
python时间time模块处理大全
2020/10/25 Python
HTML5 Blob对象的具体使用
2020/05/22 HTML / CSS
将n个数按输入顺序的逆序排列,用函数实现
2012/11/14 面试题
2014年五四青年节演讲比赛方案
2014/04/22 职场文书
2015公务员试用期工作总结
2014/12/12 职场文书
公司感谢信范文
2015/01/22 职场文书
2015年干部教育培训工作总结
2015/05/15 职场文书
党校团干班培训心得体会
2016/01/06 职场文书
关于python中readlines函数的参数hint的相关知识总结
2021/06/24 Python
千万级用户系统SQL调优实战分享
2022/03/03 MySQL
python实现对doc、txt、xls等文档的读写操作
2022/04/02 Python
Java线程的6种状态与生命周期
2022/05/11 Java/Android