laravel 对接支付宝

作者: klouskingsley | 来源:发表于2016-05-27 08:02 被阅读2365次

使用的库

omnipay-alipay

申请支付宝支付

这个就不说了, 不明白如何下手的伙伴让运营去和支付宝客服联系吧

composer 安装git库

将以下代码添加到 composer.json

  { "require": { "lokielse/omnipay-alipay": "dev-master" }}

执行composer命令更新依赖

$ curl -s http://getcomposer.org/installer | php
$ php composer.phar update

用法

该库提供了 6 种不同的接口,各种接口有不同的配置和用法,我用过Alipay_Express 和 Alipay_WapExpress,下面会有这两种支付的步骤。

  • Alipay_Express (Alipay Express Checkout) 支付宝即时到账接口
  • Alipay_Secured (Alipay Secured Checkout) 支付宝担保交易接口
  • Alipay_Dual (Alipay Dual Function Checkout) 支付宝双功能交易接口
  • Alipay_WapExpress (Alipay Wap Express Checkout) 支付宝WAP客户端接口
  • Alipay_MobileExpress (Alipay Mobile Express Checkout) 支付宝无线支付接口
  • Alipay_Bank (Alipay Bank Checkout) 支付宝网银快捷接口

Alipay_EXpress

支付 控制器中:


use Omnipay\Omnipay;

//调用支付网关, 这一步其实就是配置参数,可以写成通用函数
$gateway = Omnipay::create('Alipay_Express');  //创建网关类
$gateway->setPartner('8888666622221111');  //合作者id
$gateway->setKey('your**key**here');   //支付key
$gateway->setSellerEmail('merchant@example.com');  收款账户email
$gateway->setReturnUrl('http://www.example.com/return');  //返回url, 用户支付后会跳转到这个地址, 可以定义支付成功或者支付失败等页面返回增加用户体验
$gateway->setNotifyUrl('http://www.example.com/notify');   //通知url,每次支付完成后, 支付宝服务器会向这个地址发请求,返回支付状态
  
//设置订单
$options = [ 
    'out_trade_no' => date('YmdHis') . mt_rand(1000,9999),  //你自己网站的唯一订单号
    'subject' => 'test', //订单标题
    'total_fee' => '0.01', //订单价格  
    //这里也可以带上其他参数,支付完之后支付宝会返回该参数和对应的值,不过设置了之后后面处理支付状态需要多一步操作。我一般会设置'paytype' => 'alipay',
];    

//跳转支付
$response = $gateway->purchase($options)->send();  
$response->redirect();

处理支付状态

这个可以写在支付是指定的returnurl或者notifyurl对应到控制器里面

use Omnipay\Omnipay;

$gateway = Omnipay::create('Alipay_Express');
$gateway->setPartner('8888666622221111');
$gateway->setKey('your**key**here');
$gateway->setSellerEmail('merchant@example.com');

$options = [ 'request_params' => $_REQUEST, ];    //这条语句前提是你在前面支付的时候没有带其他到参数,如果带了, 需要将其他参数unset, 比如我一般会带上一个&paytype=alipay用来标识是支付宝支付, 所以我就需要在这条语句前先执行unset($_REQUEST['paytype']);  

if ( $response->isSuccessful() && $response->isTradeStatusOk() ) {
    echo "支付成功"; 
    //写自己的逻辑, 比如把支付状态写入订单表里面
} else { 
    echo "支付失败"; 
}
  

测试

如果你都配置好了的话那就测试吧
应该是手机浏览器访问支付链接会先访问pc版支付宝页面后跳转到支付宝app里面,
pc访问的话就是访问pc页面扫码支付

Alipay_WapExpress

支付 控制器中:

//和上面基本没什么差别 , 差别就是需要带上你的服务器使用openssl生成的rsa私钥和支付宝的公钥, 
//另外在此之前需要先上传你的rsa公钥到支付宝,[上传RSA公钥](https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.7n6Wbd&treeId=58&articleId=103578&docType=1)   

use Omnipay\Omnipay;

//调用支付网关, 这一步其实就是配置参数,可以写成通用函数
$gateway = Omnipay::create('Alipay_Express');
$gateway->setPartner('8888666622221111');  //合作者id
$gateway->setKey('your**key**here');   //支付key
$gateway->setSellerEmail('merchant@example.com');  收款账户email

//  private key : [RSA私钥及公钥生成](https://doc.open.alipay.com/doc2/detail?treeId=58&articleId=103242&docType=1)  

//alipay public key : 支付宝公钥,
//查看地址为:b.alipay.com->我的商家服务->[查看PID、Key](https://b.alipay.com/order/serviceIndex.htm),
//找到合作伙伴密钥管理->查看支付宝公钥。
//**注:PHP和.NET使用DEMO中已有的alipay_public_key.pem密钥文件。**  
//demo下载地址[https://doc.open.alipay.com/doc2/detail?treeId=54&articleId=103419&docType=1](https://doc.open.alipay.com/doc2/detail?treeId=54&articleId=103419&docType=1)

$gateway->setPrivateKey('这里是一大串rsa钥匙');
$gateway->setAlipayPublicKey('这里是一大串支付宝的公钥');

$gateway->setReturnUrl('http://www.example.com/return');  //返回url, 用户支付后会跳转到这个地址, 可以定义支付成功或者支付失败等页面返回增加用户体验
$gateway->setNotifyUrl('http://www.example.com/notify');   //通知url,每次支付完成后, 支付宝服务器会向这个地址发请求,返回支付状态
  
//设置订单
$options = [ 
    'out_trade_no' => date('YmdHis') . mt_rand(1000,9999),  //你自己网站的唯一订单号
    'subject' => 'test', //订单标题
    'total_fee' => '0.01', //订单价格  
];    

//跳转支付
$response = $gateway->purchase($options)->send();  
$response->redirect();

处理支付状态

和Alipay_Express的没有区别

测试

只用手机测试过, 跳转到支付宝手机网页支付的页面。

文章结束

支付宝文档可能会更新,文档地址链接可能不能用,本文链接更新时间为20160527

其他php框架或者原生php的处理是类似的,希望此篇文章对你以后的开发有帮助。

相关文章

  • laravel 对接支付宝

    使用的库 omnipay-alipay 申请支付宝支付 这个就不说了, 不明白如何下手的伙伴让运营去和支付宝客服联...

  • 对接支付宝支付接口开发笔记

    支付宝对接学习笔记: 功能介绍: 支付宝对接 支付宝回调 查询支付状态(略过不讲) 要求: 熟悉支付宝对接核心文档...

  • NodeJS对接支付宝沙箱PC支付

    最近想对接对接支付宝接口, 支付宝接口可以使用沙箱测试代码地址: https://github.com/klren...

  • Laravel中获取真实ip

    起因 最近在开发微信支付,微信扫码付以及微信公众号支付对接都是比较顺利,因为 laravel 中 laravel-...

  • 快速入门支付宝支付

    1、概述 昨天聊了聊微信支付的对接流程与实现,今天咱们聊聊支付宝支付的对接与实现。 2、准备工作 在支付宝开放平台...

  • 支付宝支付对接

    有个项目在对接支付宝时遇到了很多问题,总结下对接过程中需要检查的东西 一、能力签约(此处以公众号开发使用支付宝手机...

  • laravel 接入支付宝 报check sign Fail 错

    采用laravel 接入支付宝sdk 后,在填写商户秘钥 与 支付宝公钥后请求支付宝,请求成功了但签名验证一直报错...

  • 支付宝对接-java后端

    支付宝官方文档1.创建应用并获取APPID2.配置应用 集成开发 本文使用支付宝sdk进行支付宝对接,请到支付宝j...

  • 支付宝接口申请

    对接支付宝接口开发详细步骤 - tang_cong的博客 - CSDN博客

  • 定了!支付宝正式被“收编”!

    支付宝正式接入网联,被国家“收编”! 支付宝接入网联 正式被“收编” 近日,支付宝宣布:已与网联完成全面系统对接,...

网友评论

  • 443ba8fb0ebf:即时到账有没有扫码支付呢?没找到相应的方法
    klouskingsley:@443ba8fb0ebf 有啊,即时到帐会自动根据浏览器环境来判断,手机的话就会跳到支付宝APP,电脑的话会显示付款二维码

本文标题:laravel 对接支付宝

本文链接:https://www.haomeiwen.com/subject/ovgxdttx.html