laravel 对接支付宝

栏目: PHP · 发布时间: 6年前

内容简介:laravel 对接支付宝

使用的库

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的处理是类似的,希望此篇文章对你以后的开发有帮助。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

浪潮之巅

浪潮之巅

吴军 / 电子工业出版社 / 2011-8 / 55.00元

近一百多年来,总有一些公司很幸运地、有意识或无意识地站在技术革命的浪尖之上。在这十几年间,它们代表着科技的浪潮,直到下一波浪潮的来临。 从一百年前算起,AT&T 公司、IBM 公司、苹果公司、英特尔公司、微软公司、思科公司、雅虎公司和Google公司都先后被幸运地推到了浪尖。虽然,它们来自不同的领域,中间有些已经衰落或正在衰落,但是它们都极度辉煌过。本书系统地介绍了这些公司成功的本质原因及科......一起来看看 《浪潮之巅》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

URL 编码/解码
URL 编码/解码

URL 编码/解码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具