***CodeIgniter框架集成支付宝即时到账支付SDK
本文为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 文件,内容如下:
- <?php
- defined('BASEPATH') OR exit('No direct script access allowed');
- // 加载支付宝支付
- require_once APPPATH.'libraries/AliPay/lib/alipay_submit.class.php';
- /**
- * 为CI扩展支付宝支付类
- */
- class CI_Alipay extends AlipaySubmit {
- public function __construct(){
- parent::__construct();
- }
- }
4、在CI框架application/config/目录下 新建alipay_config.php 内容如下:
- <?php
- defined('BASEPATH') OR exit('No direct script access allowed');
- /* *
- * 配置文件
- * 版本:3.4
- * 修改日期:2016-03-08
- * 说明:
- * 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。
- * 该代码仅供学习和研究支付宝接口使用,只是提供一个参考。
- * 安全校验码查看时,输入支付密码后,页面呈灰色的现象,怎么办?
- * 解决方法:
- * 1、检查浏览器配置,不让浏览器做弹框屏蔽设置
- * 2、更换浏览器或电脑,重新登录查询。
- */
- //↓↓↓↓↓↓↓↓↓↓请在这里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
- //合作身份者ID,签约账号,以2088开头由16位纯数字组成的字符串,查看地址:https://b.alipay.com/order/pidAndKey.htm
- $config['partner'] = '';
- //收款支付宝账号,以2088开头由16位纯数字组成的字符串,一般情况下收款账号就是签约账号
- $config['seller_id'] = $config['partner'];
- // MD5密钥,安全检验码,由数字和字母组成的32位字符串,查看地址:https://b.alipay.com/order/pidAndKey.htm
- $config['key'] = '';
- // 服务器异步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
- $config['notify_url'] = 'http://'.$_SERVER['HTTP_HOST'].'/order/alipayNotifyUrl';
- // 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
- $config['return_url'] = 'http://'.$_SERVER['HTTP_HOST'].'/order/alipayReturnUrl';
- //签名方式
- $config['sign_type'] = strtoupper('MD5');
- //字符编码格式 目前支持 gbk 或 utf-8
- $config['input_charset']= strtolower('utf-8');
- //ca证书路径地址,用于curl中ssl校验
- //请保证cacert.pem文件在当前文件夹目录中
- $config['cacert'] = APPPATH.'libraries/AliPay/cacert.pem';
- //访问模式,根据自己的服务器是否支持ssl访问,若支持请选择https;若不支持请选择http
- $config['transport'] = 'http';
- // 支付类型 ,无需修改
- $config['payment_type'] = "1";
- // 产品类型,无需修改
- $config['service'] = "create_direct_pay_by_user";
- //↑↑↑↑↑↑↑↑↑↑请在这里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
- //↓↓↓↓↓↓↓↓↓↓ 请在这里配置防钓鱼信息,如果没开通防钓鱼功能,为空即可 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
- // 防钓鱼时间戳 若要使用请调用类文件submit中的query_timestamp函数
- $config['anti_phishing_key'] = "";
- // 客户端的IP地址 非局域网的外网IP地址,如:221.0.0.1
- $config['exter_invoke_ip'] = "";
- //↑↑↑↑↑↑↑↑↑↑请在这里配置防钓鱼信息,如果没开通防钓鱼功能,为空即可 ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
5、在项目控制器controllers/ 目录下新建order.php 内容如下:
- <?php
- defined('BASEPATH') OR exit('No direct script access allowed');
- /**
- * Order Controller
- * 订单控制器
- */
- class Order extends MY_Controller {
- public function __construct(){
- $this->isNeedLogin = TRUE;
- parent::__construct();
- }
- /**
- * aliPay 【支付宝支付接口】
- * @param int $id 订单ID
- * @author lyne
- */
- public function aliPay($id){
- // 调用支付宝支付接口配置信息
- $this->load->config('alipay_config',TRUE);
- /*>>>>>>>>>>>>> 查预先生成的订单信息,根据自己情况 <<<<<<<<<<<<<<
- 根据订单ID查询预订单信息
- 包括:
- 订单总额、订单编号、订单商品等。
- >>>>>>>>>>>>> 根据自己情况 END <<<<<<<<<<<<<<<<<*/
- // 加载支付宝支付请求类库
- $this->load->library('CI_Alipay',$this->config->item('alipay_config'));
- $parameter = array(
- 'service' => $this->config->item('service','alipay_config'),
- 'partner' => $this->config->item('partner','alipay_config'),
- 'payment_type' => $this->config->item('payment_type','alipay_config'),
- 'notify_url' => $this->config->item('notify_url','alipay_config'),
- 'return_url' => $this->config->item('return_url','alipay_config'),
- 'seller_id' => $this->config->item('seller_id','alipay_config'),
- 'out_trade_no' => '订单编号', // 订单编号
- 'subject' => '填写订单商品', // 订单商品
- 'total_fee' => '订单总额', // 订单总额
- 'body' => '商品描述', // 商品描述
- 'show_url' => '', // 选填
- 'anti_phishing_key' => '', // 选填
- 'exter_invoke_ip' => '', // 选填
- '_input_charset' => $this->config->item('input_charset','alipay_config')
- );
- $body = $this->ci_alipay->buildRequestForm($parameter,"get","确认");
- echo $body;
- }
- }
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控制器内了。看你心情哈
- /**
- * alipayNotifyUrl 异步(处理支付成功后逻辑)
- */
- public function alipayNotifyUrl(){
- require_once(APPPATH."/libraries/AliPay/lib/alipay_notify.class.php");
- // 调用支付宝支付接口配置信息
- $this->load->config('alipay_config');
- $alconfig['partner']=$this->config->item('partner'); // 合作身份者ID
- $alconfig['seller_id']=$this->config->item('seller_id'); // 收款支付宝账号
- $alconfig['key']=$this->config->item('key'); // MD5密钥,安全检验码
- $alconfig['notify_url']=$this->config->item('notify_url'); // 服务器异步通知页面路径
- $alconfig['return_url']=$this->config->item('return_url'); // 页面跳转同步通知页面路径
- $alconfig['input_charset']=$this->config->item('input_charset'); // 字符编码格式
- $alconfig['cacert']=$this->config->item('cacert'); // ca证书路径地址
- $alconfig['transport']=$this->config->item('transport'); // 访问模式
- $alconfig['payment_type']=$this->config->item('payment_type'); // 支付类型
- $alconfig['service']=$this->config->item('service'); // 产品类型
- $alconfig['sign_type']=$this->config->item('sign_type'); // 签名方式
- //计算得出通知验证结果
- $alipayNotify = new AlipayNotify($alconfig);
- $verify_result = $alipayNotify->verifyNotify();
- // log_message('error',$verify_result); 可以用ci自带日志调试或使用支付宝的logResult();
- if($verify_result) {//验证成功
- //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表
- //商户订单号
- $out_trade_no = $_POST['out_trade_no'];
- //支付宝交易号
- $trade_no = $_POST['trade_no'];
- //交易状态
- $trade_status = $_POST['trade_status'];
- if($_POST['trade_status'] == 'TRADE_SUCCESS') {
- // 支付成功处理业务逻辑,例如修改订单支付状态等等
- // >>>>>>>>>>>>>>>> 根据自身情况,处理业务逻辑 <<<<<<<<<<<<<<<<<<<
- }
- echo "success"; //请不要修改或删除
- } else {
- //验证失败
- echo "fail";
- //调试用,写文本函数记录程序运行情况是否正常
- //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录");
- }
- }
9、同步通知 内容如下:我也写在了order控制器内了。看你心情哈
- /**
- * alipayReturnUrl 支付宝页面跳转同步通知页面(处理支付成功后提示页面)
- * @author lyne
- */
- public function alipayReturnUrl(){
- require_once(APPPATH."/libraries/AliPay/lib/alipay_notify.class.php");
- // 调用支付宝支付接口配置信息
- $this->load->config('alipay_config');
- $alconfig['partner']=$this->config->item('partner'); // 合作身份者ID
- $alconfig['seller_id']=$this->config->item('seller_id'); // 收款支付宝账号
- $alconfig['key']=$this->config->item('key'); // MD5密钥,安全检验码
- $alconfig['notify_url']=$this->config->item('notify_url'); // 服务器异步通知页面路径
- $alconfig['return_url']=$this->config->item('return_url'); // 页面跳转同步通知页面路径
- $alconfig['input_charset']=$this->config->item('input_charset'); // 字符编码格式
- $alconfig['cacert']=$this->config->item('cacert'); // ca证书路径地址
- $alconfig['transport']=$this->config->item('transport'); // 访问模式
- $alconfig['payment_type']=$this->config->item('payment_type'); // 支付类型
- $alconfig['service']=$this->config->item('service'); // 产品类型
- $alconfig['sign_type']=$this->config->item('sign_type'); // 签名方式
- //计算得出通知验证结果
- $alipayNotify = new AlipayNotify($alconfig);
- $verify_result = $alipayNotify->verifyReturn();
- if($verify_result) {//验证成功
- //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表
- //商户订单号
- $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'];
- }
- } else {
- //验证失败
- //如要调试,请看alipay_notify.php页面的verifyReturn函数
- echo "验证失败";
- }
- }
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
买家选择心仪产品
跳转到收银台页面
0. 用户可以打开手机钱包选择“扫一扫”,对准屏幕扫码,待手机提示付款后选择支付工具输入密码支付即可;
0. 如果不想使用手机支付,可以点击上图所示页面右侧的“登录账户付款”,输入支付宝账号和密码登录。买家选择付款方式
付款成功
注意:本流程仅为示例,开发者可根据自身网站进行调整。
***CodeIgniter框架集成支付宝即时到账支付SDK的更多相关文章
- *CodeIgniter框架集成支付宝即时到账SDK
客户的网站需要支付功能,我们选择了业界用的最多的支付宝即时到账支付.申请了两次将近两周的时间终于下来了,于是我开始着手测试SDK整合支付流程. SDK中的代码并不复杂,就是构造请求发送,接收并验证签名 ...
- thinkphp框架对接支付宝即时到账接口回调的代码
关于支付宝即时收款接口的对接过程,很简单,也有很多人发过,我这里就不在啰嗦了,对接完成后,在线支付成功后的回调,相对来说,是个难点,,我重点分享下我的经验. 我在开发二代旅游CMS(http://ww ...
- 实战 Spring MVC接入支付宝即时到账 (部分代码)
下面就拿我项目中的部分代码来实践一下. 支付请求 首先,是提交表单 fund.jsp(这里我表单只需要用户填交易金额,其他的订单号之类的全部后台生成) <form id="deposi ...
- 支付宝即时到账DEMO配置与使用
支付宝网页即时到账功能,可让用户在线向开发者的支付宝账号支付资金,交易资金即时到账,帮助开发者快速回笼资金. 当用户进行支付操作时候可以直接跳转到支付宝支付页面进行支付 1. 准备 关于支付宝签约即时 ...
- PHP实现支付宝即时到账功能
本文实例为大家分享了PHP支付宝即时到账功能的实现代码,供大家参考,具体内容如下 首先需要下载即时到账交易接口,传送门https://doc.open.alipay.com/doc2/detail?t ...
- PHP 接入支付宝即时到账功能
首先请到支付宝那边申请一个及时到账的接口账户,需要提交相关材料申请.然后根据即时到账的API文档进行接入.API文档提供了各种语言版本的demo,我这里是下的php版demo,然后再进行相关修改操作. ...
- PHP九大接口视频教程( 支付宝,QQ,短信接口,微信接口开发, 支付宝即时到账接口开发三级分销全套)
PHP九大接口视频教程( 支付宝,QQ,短信接口,微信接口开发, 支付宝即时到账接口开发三级分销全套) 需要的联系我:QQ: 1844912514 PHP九大接口视频教程( 支付宝,QQ,短信接口 ...
- java 支付宝 第三方即时到账支付 接口
alipay 的几个内核功能文件:=================================================================================== ...
- tp框架集成支付宝,中转页变成gbk编码
tp框架中集成支付宝的功能,将支付宝的demo例子存在到下图位置\Extend\Vendor\Alipay 生成支付订单 /** * 支付订单 */ public function pay() { h ...
随机推荐
- Python 实现 Html 转 Markdown(支持 MathJax 数学公式)
因为需要转 html 到 markdown,找了个 python 的库,该库主要是利用正则表达式实现将 Html 转为 Markdown. 数学公式需要自己修改代码来处理. 我 fork 的项目地址: ...
- Python中布尔值是False的所有值
在python中以下都是False:为0的,空集合,空字符串,空值None >>> bool(0) False >>> bool(-0) False >> ...
- 洛谷P4643 [国家集训队]阿狸和桃子的游戏(思维题+贪心)
思维题,好题 把每条边的边权平分到这条边的两个顶点上,之后就是个sb贪心了 正确性证明: 如果一条边的两个顶点被一个人选了,一整条边的贡献就凑齐了 如果分别被两个人选了,一作差就抵消了,相当于谁都没有 ...
- SpringMVC 监听文件上传进度
Spring MVC 监听文件上传进度 具体实现分三个步骤: 接管CommonsMultipartResolver,重写针对文件上传的请求. 在第一步中写入监听,以获取上传进度. 修改上传部分的配置文 ...
- I2C(三) linux3.4(内核分析)
目录 I2C(三) linux3.4(内核分析) (一)总线流程 bus.probe match i2c_device_probe (二)client注册 方式(一)静态加载 方式(二)指定设备 方式 ...
- 微信小程序 开发文档
官方开发文档: 小程序公众平台 小程序开发者指南 小程序开发者文档 学习资源: 微信:官方入门教程 微信:WeUI 是一套同微信原生视觉体验一致的基础样式库 微信:微信小程序示例 视频: 学堂在线:学 ...
- 《Java》第八周学习总结
第八周学习内容:课本第15章节的内容泛型与集合框架 主要内容有 -泛型-链表-堆栈-散列映射-树集-树映射 重点和难点-重点:泛型和集合的使用码云:https://gitee.com/ShengHu ...
- linxu上安装mongodb3.6实战
根据linux 版本到官网下载对应mongodb版本 查看服务器版本:cat /proc/version 查看linux发行版本:cat /etc/redhat-release 我用的阿里云服务器,对 ...
- 毕业设计——Django表单重复提交问题
1. 先记录一些正常情况:在填写表单页面(如注册.登录页面)时刷新页面时数据清空是正常的,此时就是重新发送了一个页面请求. 2. 问题一:用户登录后,刷新登陆后的页面(如首页)时会出现表单重复提交问题 ...
- 【迅为电子】迷你工控机_24小时运行_无线WIFI_超多接口
全封闭防尘_迅为嵌入式工控主机_运行Linux-QT4.7操作系统 技术规格参数: 设备型号:eTOP-A7-MANNV10 CPU:Cortex-A7 内存:512MDDR 存储:8G EMMC 电 ...