本文为CI集成支付宝即时到账支付接口

1、下载支付宝官方demo ;即时到账交易接口(create_direct_pay_by_user)(DEMO下载) 原文地址:https://doc.open.alipay.com/doc2/detail?treeId=62&articleId=103566&docType=1

2、登录支付宝https://www.alipay.com/  下载CA证书。将证书放在下载的demo文件夹的根目录下。
2、将下载的create_direct_pay_by_user-PHP-UTF-8文件夹改为AliPay;并到到CI框架libraries/ 目录下。

3、在libraries/ 目录下新建CI_Alipay.php 文件,内容如下:

  1. <?php
  2. defined('BASEPATH') OR exit('No direct script access allowed');
  3. // 加载支付宝支付
  4. require_once APPPATH.'libraries/AliPay/lib/alipay_submit.class.php';
  5. /**
  6. * 为CI扩展支付宝支付类
  7. */
  8. class CI_Alipay extends AlipaySubmit {
  9. public function __construct(){
  10. parent::__construct();
  11. }
  12. }
 

4、在CI框架application/config/目录下 新建alipay_config.php  内容如下:

  1. <?php
  2. defined('BASEPATH') OR exit('No direct script access allowed');
  3. /* *
  4. * 配置文件
  5. * 版本:3.4
  6. * 修改日期:2016-03-08
  7. * 说明:
  8. * 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。
  9. * 该代码仅供学习和研究支付宝接口使用,只是提供一个参考。
  10. * 安全校验码查看时,输入支付密码后,页面呈灰色的现象,怎么办?
  11. * 解决方法:
  12. * 1、检查浏览器配置,不让浏览器做弹框屏蔽设置
  13. * 2、更换浏览器或电脑,重新登录查询。
  14. */
  15. //↓↓↓↓↓↓↓↓↓↓请在这里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
  16. //合作身份者ID,签约账号,以2088开头由16位纯数字组成的字符串,查看地址:https://b.alipay.com/order/pidAndKey.htm
  17. $config['partner']      = '';
  18. //收款支付宝账号,以2088开头由16位纯数字组成的字符串,一般情况下收款账号就是签约账号
  19. $config['seller_id']    = $config['partner'];
  20. // MD5密钥,安全检验码,由数字和字母组成的32位字符串,查看地址:https://b.alipay.com/order/pidAndKey.htm
  21. $config['key']          = '';
  22. // 服务器异步通知页面路径  需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
  23. $config['notify_url'] = 'http://'.$_SERVER['HTTP_HOST'].'/order/alipayNotifyUrl';
  24. // 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
  25. $config['return_url'] = 'http://'.$_SERVER['HTTP_HOST'].'/order/alipayReturnUrl';
  26. //签名方式
  27. $config['sign_type']    = strtoupper('MD5');
  28. //字符编码格式 目前支持 gbk 或 utf-8
  29. $config['input_charset']= strtolower('utf-8');
  30. //ca证书路径地址,用于curl中ssl校验
  31. //请保证cacert.pem文件在当前文件夹目录中
  32. $config['cacert']    = APPPATH.'libraries/AliPay/cacert.pem';
  33. //访问模式,根据自己的服务器是否支持ssl访问,若支持请选择https;若不支持请选择http
  34. $config['transport']    = 'http';
  35. // 支付类型 ,无需修改
  36. $config['payment_type'] = "1";
  37. // 产品类型,无需修改
  38. $config['service'] = "create_direct_pay_by_user";
  39. //↑↑↑↑↑↑↑↑↑↑请在这里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
  40. //↓↓↓↓↓↓↓↓↓↓ 请在这里配置防钓鱼信息,如果没开通防钓鱼功能,为空即可 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
  41. // 防钓鱼时间戳  若要使用请调用类文件submit中的query_timestamp函数
  42. $config['anti_phishing_key'] = "";
  43. // 客户端的IP地址 非局域网的外网IP地址,如:221.0.0.1
  44. $config['exter_invoke_ip'] = "";
  45. //↑↑↑↑↑↑↑↑↑↑请在这里配置防钓鱼信息,如果没开通防钓鱼功能,为空即可 ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

5、在项目控制器controllers/ 目录下新建order.php   内容如下:

  1. <?php
  2. defined('BASEPATH') OR exit('No direct script access allowed');
  3. /**
  4. * Order Controller
  5. * 订单控制器
  6. */
  7. class Order extends MY_Controller {
  8. public function __construct(){
  9. $this->isNeedLogin = TRUE;
  10. parent::__construct();
  11. }
  12. /**
  13. * aliPay 【支付宝支付接口】
  14. * @param  int $id 订单ID
  15. * @author lyne
  16. */
  17. public function aliPay($id){
  18. // 调用支付宝支付接口配置信息
  19. $this->load->config('alipay_config',TRUE);
  20. /*>>>>>>>>>>>>> 查预先生成的订单信息,根据自己情况 <<<<<<<<<<<<<<
  21. 根据订单ID查询预订单信息
  22. 包括:
  23. 订单总额、订单编号、订单商品等。
  24. >>>>>>>>>>>>> 根据自己情况 END <<<<<<<<<<<<<<<<<*/
  25. // 加载支付宝支付请求类库
  26. $this->load->library('CI_Alipay',$this->config->item('alipay_config'));
  27. $parameter = array(
  28. 'service'           => $this->config->item('service','alipay_config'),
  29. 'partner'           => $this->config->item('partner','alipay_config'),
  30. 'payment_type'      => $this->config->item('payment_type','alipay_config'),
  31. 'notify_url'        => $this->config->item('notify_url','alipay_config'),
  32. 'return_url'        => $this->config->item('return_url','alipay_config'),
  33. 'seller_id'         => $this->config->item('seller_id','alipay_config'),
  34. 'out_trade_no'      => '订单编号',     // 订单编号
  35. 'subject'           => '填写订单商品', // 订单商品
  36. 'total_fee'         => '订单总额',     // 订单总额
  37. 'body'              => '商品描述',     // 商品描述
  38. 'show_url'          => '',             // 选填
  39. 'anti_phishing_key' => '',             // 选填
  40. 'exter_invoke_ip'   => '',             // 选填
  41. '_input_charset'    => $this->config->item('input_charset','alipay_config')
  42. );
  43. $body = $this->ci_alipay->buildRequestForm($parameter,"get","确认");
  44. echo $body;
  45. }
  46. }

6、以上步骤完成,下面支付就交给支付宝了。可以选择直接扫二维码支付,可以登录支付宝账号后操作

7、支付完成后,支付宝会通过异步通知地址(即alipay_config.php文件中的$config['notify_url']地址),随后支付宝通过同步通知地址(即alipay_config.php文件中的$config['return_url']地址)。

7-1、那么一般情况我们会在异步通知内接收到支付成功信息后处理业务逻辑。注意:在异步通知内收到通知后,一定要返回success告知支付宝我已经收到你的通知,让它闭嘴。否则它会在25小时以内完成8次通知(通知的间隔频率一般是:4m,10m,10m,1h,2h,6h,15h);

7-2、通过同步通知下收到成功信息后处理一些简单验证后跳转或提示成功信息。

8、异步通知  内容如下:我也写在了order控制器内了。看你心情哈

  1. /**
  2. * alipayNotifyUrl 异步(处理支付成功后逻辑)
  3. */
  4. public function alipayNotifyUrl(){
  5. require_once(APPPATH."/libraries/AliPay/lib/alipay_notify.class.php");
  6. // 调用支付宝支付接口配置信息
  7. $this->load->config('alipay_config');
  8. $alconfig['partner']=$this->config->item('partner');                // 合作身份者ID
  9. $alconfig['seller_id']=$this->config->item('seller_id');            // 收款支付宝账号
  10. $alconfig['key']=$this->config->item('key');                        // MD5密钥,安全检验码
  11. $alconfig['notify_url']=$this->config->item('notify_url');          // 服务器异步通知页面路径
  12. $alconfig['return_url']=$this->config->item('return_url');          // 页面跳转同步通知页面路径
  13. $alconfig['input_charset']=$this->config->item('input_charset');    // 字符编码格式
  14. $alconfig['cacert']=$this->config->item('cacert');                  // ca证书路径地址
  15. $alconfig['transport']=$this->config->item('transport');            // 访问模式
  16. $alconfig['payment_type']=$this->config->item('payment_type');      // 支付类型
  17. $alconfig['service']=$this->config->item('service');                // 产品类型
  18. $alconfig['sign_type']=$this->config->item('sign_type');            // 签名方式
  19. //计算得出通知验证结果
  20. $alipayNotify = new AlipayNotify($alconfig);
  21. $verify_result = $alipayNotify->verifyNotify();
  22. // log_message('error',$verify_result); 可以用ci自带日志调试或使用支付宝的logResult();
  23. if($verify_result) {//验证成功
  24. //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表
  25. //商户订单号
  26. $out_trade_no = $_POST['out_trade_no'];
  27. //支付宝交易号
  28. $trade_no = $_POST['trade_no'];
  29. //交易状态
  30. $trade_status = $_POST['trade_status'];
  31. if($_POST['trade_status'] == 'TRADE_SUCCESS') {
  32. // 支付成功处理业务逻辑,例如修改订单支付状态等等
  33. // >>>>>>>>>>>>>>>> 根据自身情况,处理业务逻辑 <<<<<<<<<<<<<<<<<<<
  34. }
  35. echo "success";     //请不要修改或删除
  36. } else {
  37. //验证失败
  38. echo "fail";
  39. //调试用,写文本函数记录程序运行情况是否正常
  40. //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录");
  41. }
  42. }

9、同步通知  内容如下:我也写在了order控制器内了。看你心情哈

  1. /**
  2. * alipayReturnUrl 支付宝页面跳转同步通知页面(处理支付成功后提示页面)
  3. * @author lyne
  4. */
  5. public function alipayReturnUrl(){
  6. require_once(APPPATH."/libraries/AliPay/lib/alipay_notify.class.php");
  7. // 调用支付宝支付接口配置信息
  8. $this->load->config('alipay_config');
  9. $alconfig['partner']=$this->config->item('partner');             // 合作身份者ID
  10. $alconfig['seller_id']=$this->config->item('seller_id');         // 收款支付宝账号
  11. $alconfig['key']=$this->config->item('key');                     // MD5密钥,安全检验码
  12. $alconfig['notify_url']=$this->config->item('notify_url');       // 服务器异步通知页面路径
  13. $alconfig['return_url']=$this->config->item('return_url');       // 页面跳转同步通知页面路径
  14. $alconfig['input_charset']=$this->config->item('input_charset'); // 字符编码格式
  15. $alconfig['cacert']=$this->config->item('cacert');               // ca证书路径地址
  16. $alconfig['transport']=$this->config->item('transport');         // 访问模式
  17. $alconfig['payment_type']=$this->config->item('payment_type');   // 支付类型
  18. $alconfig['service']=$this->config->item('service');             // 产品类型
  19. $alconfig['sign_type']=$this->config->item('sign_type');         // 签名方式
  20. //计算得出通知验证结果
  21. $alipayNotify = new AlipayNotify($alconfig);
  22. $verify_result = $alipayNotify->verifyReturn();
  23. if($verify_result) {//验证成功
  24. //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表
  25. //商户订单号
  26. $out_trade_no = $_GET['out_trade_no'];
  27. //支付宝交易号
  28. $trade_no = $_GET['trade_no'];
  29. //交易状态
  30. $trade_status = $_GET['trade_status'];
  31. if($_GET['trade_status'] == 'TRADE_FINISHED' || $_GET['trade_status'] == 'TRADE_SUCCESS') {
  32. //判断该笔订单是否在商户网站中已经做过处理
  33. //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
  34. // echo '交易成功!跳转成功页面';
  35. //如果有做过处理,不执行商户的业务程序
  36. }else {
  37. echo "trade_status=".$_GET['trade_status'];
  38. }
  39. } else {
  40. //验证失败
  41. //如要调试,请看alipay_notify.php页面的verifyReturn函数
  42. echo "验证失败";
  43. }
  44. }

10、即时到账有密退款接口也都差不多,我这里就不多说了。想必做到这里你也玩转支付宝支付了吧。是不是so easy~

转:http://blog.csdn.net/lyne_007/article/details/51752068


支付宝网页即时到账功能,可让用户在线向开发者的支付宝账号支付资金,交易资金即时到账,帮助开发者快速回笼资金。 
交易步骤少,简单、方便。 
交易资金三个月内可退款,提升买家购物保障。

本产品涵盖以下接口功能:

    • 即时到账交易接口(create_direct_pay_by_user)
    • 即时到账批量退款有密接口(refund_fastpay_by_platform_pwd)
    • 应用范例更新时间:2017-05-17

      1. 买家选择心仪产品

      2. 跳转到收银台页面
        0. 用户可以打开手机钱包选择“扫一扫”,对准屏幕扫码,待手机提示付款后选择支付工具输入密码支付即可;

        0. 如果不想使用手机支付,可以点击上图所示页面右侧的“登录账户付款”,输入支付宝账号和密码登录。

      3. 买家选择付款方式

      4. 付款成功

      注意:本流程仅为示例,开发者可根据自身网站进行调整。

***CodeIgniter框架集成支付宝即时到账支付SDK的更多相关文章

  1. *CodeIgniter框架集成支付宝即时到账SDK

    客户的网站需要支付功能,我们选择了业界用的最多的支付宝即时到账支付.申请了两次将近两周的时间终于下来了,于是我开始着手测试SDK整合支付流程. SDK中的代码并不复杂,就是构造请求发送,接收并验证签名 ...

  2. thinkphp框架对接支付宝即时到账接口回调的代码

    关于支付宝即时收款接口的对接过程,很简单,也有很多人发过,我这里就不在啰嗦了,对接完成后,在线支付成功后的回调,相对来说,是个难点,,我重点分享下我的经验. 我在开发二代旅游CMS(http://ww ...

  3. 实战 Spring MVC接入支付宝即时到账 (部分代码)

    下面就拿我项目中的部分代码来实践一下. 支付请求 首先,是提交表单 fund.jsp(这里我表单只需要用户填交易金额,其他的订单号之类的全部后台生成) <form id="deposi ...

  4. 支付宝即时到账DEMO配置与使用

    支付宝网页即时到账功能,可让用户在线向开发者的支付宝账号支付资金,交易资金即时到账,帮助开发者快速回笼资金. 当用户进行支付操作时候可以直接跳转到支付宝支付页面进行支付 1. 准备 关于支付宝签约即时 ...

  5. PHP实现支付宝即时到账功能

    本文实例为大家分享了PHP支付宝即时到账功能的实现代码,供大家参考,具体内容如下 首先需要下载即时到账交易接口,传送门https://doc.open.alipay.com/doc2/detail?t ...

  6. PHP 接入支付宝即时到账功能

    首先请到支付宝那边申请一个及时到账的接口账户,需要提交相关材料申请.然后根据即时到账的API文档进行接入.API文档提供了各种语言版本的demo,我这里是下的php版demo,然后再进行相关修改操作. ...

  7. PHP九大接口视频教程( 支付宝,QQ,短信接口,微信接口开发, 支付宝即时到账接口开发三级分销全套)

    PHP九大接口视频教程(  支付宝,QQ,短信接口,微信接口开发, 支付宝即时到账接口开发三级分销全套) 需要的联系我:QQ: 1844912514 PHP九大接口视频教程(  支付宝,QQ,短信接口 ...

  8. java 支付宝 第三方即时到账支付 接口

    alipay 的几个内核功能文件:=================================================================================== ...

  9. tp框架集成支付宝,中转页变成gbk编码

    tp框架中集成支付宝的功能,将支付宝的demo例子存在到下图位置\Extend\Vendor\Alipay 生成支付订单 /** * 支付订单 */ public function pay() { h ...

随机推荐

  1. 洛谷 P1903 [国家集训队]数颜色 / 维护队列

    墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问.墨墨会向你发布如下指令: 1. \(Q\) \(L\) \(R\) 代表询问你从第L支画笔到第R支画笔中共有几种不同 ...

  2. LOJ 6281 数列分块入门 5

    简化版题意 给出一个长为n的数列,以及n个操作,操作涉及区间开方(每个数都向下取整),区间求和,保证所有数都为有符号32位正整数. N<=50000 Solution 首先我们先思考: 一个有符 ...

  3. 集合源码分析[2]-AbstractList 源码分析

    AbstractList 类型:抽象类 接口的继承以及实现关系 继承AbstractCollection 实现List接口 典型方法实现解析 public List<E> subList( ...

  4. postgresql某个字段值按照指定规则排序

    select id,serial_group_id,state from ap_model order by serial_group_id asc, ( case when state=1 then ...

  5. mysql 严格模式 Strict Mode说明(text 字段不能加默认或者 不能加null值得修改方法)

    mysql 严格模式 Strict Mode说明 1.开启与关闭Strict Mode方法找到mysql安装目录下的my.cnf(windows系统则是my.ini)文件 在sql_mode中加入ST ...

  6. EF Code First一对一、一对多、多对多关联关系配置

    1.EF Code First一对一关联关系 项目结构图: 实体类: Account.cs using System; using System.Collections.Generic; using ...

  7. JGUI源码:实现简单MVVM单项绑定学习笔记(15)

    前面几节都是jquery界面方面的东西,本节研究些数据方面的东西:MVVM. MVVM由三部分组成:Model <=> ViewModel <=> View,当Model数据改 ...

  8. [Reinforcement Learning] 马尔可夫决策过程

    在介绍马尔可夫决策过程之前,我们先介绍下情节性任务和连续性任务以及马尔可夫性. 情节性任务 vs. 连续任务 情节性任务(Episodic Tasks),所有的任务可以被可以分解成一系列情节,可以看作 ...

  9. CORS跨域 Ajax headers 问题

    今天我们遇到了一个CORS跨域的问题Ajax如下 var url = "http://localhost:11980/api/Demo/GetString"; //api地址 $. ...

  10. PHP中的数组

    一.数组的基础 php数组的分类 按照下标的不同,php分为关联数组与索引数组: 索引数组:下标从零依次增长(以前那种) 关联数组:下标为字符串格式,每个下标字符串与数组的值一一关联对应(有点儿像对象 ...