本文为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. Multi-View 3D Reconstruction with Geometry and Shading——Part-1

    From PhDTheses Multi-View 3D Reconstruction with Geometry and Shading 计算机视觉的主要任务就是利用图像信息能智能理解周围的世界. ...

  2. Vue状态管理之Vuex

    Vuex是专为Vue.js设计的状态管理模式.采用集中存储组件状态它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化. 1.首先让我们从一个vue的计数应用开始 ...

  3. 0. Java虚拟机系列备忘预览图

    打算把Java虚拟机这块单独弄一个主题出来,做做备忘,结构如图所示: 后面还有一部分待更新...

  4. [面试]死锁-最简单的死锁demo

    死锁 什么是死锁 (百度百科) 死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产生了死锁 ...

  5. JavaScript的Document ,Histroy,Location对象

    1.  Document对象: a)         属性: 名称 描述 alinkColor 设置或检索文档中所有活动链接的颜色 bgColor 设置或检索 Document 对象的背景色 body ...

  6. Python 数据分析5

    数据规整化 清理 转换 合并 重塑 数据库风格的DataFrame合并 pd.merge(df1, df2) # 默认会将重叠列的列名当作键,最好显式的指定下,另外merge默认是使用的inner j ...

  7. springSecurity有毒啊啊啊啊啊啊啊

    心累 的一天呀 昨天跑的demo 怎么都不拦截 我服: 第二天 又重新 建立 了个 重新做了 一遍  就神奇的 拦击了 我 ......有毒 我哩个去..抓狂 !!!!! <吐血总结,好想死&g ...

  8. Jmeter、Postman 、 loadrunner SoapUI 接口测试工具

    一. loadrunner  简称 LR 二. Jmeter 1.安装包:apache-jmeter-4.0.tgz   解压.学会此工具的使用  和POSTman 一样的. 2.本机测试:双击apa ...

  9. SVM小白教程(2):拉格朗日对偶

    在上一篇文章中,我们推导出了 SVM 的目标函数: \[ \underset{(\mathbf{w},b)}{\operatorname{min}} ||\mathbf{w}|| \\ \operat ...

  10. 多个python版本共存

    windows下多个python版本共存 了解python的人都知道python有2.x版本和3.x版本,而python3.x版本不向下兼容,但是根据具体的需要,有时候要2.x和3.x共存,pytho ...