laravel支付宝sdk接入

自己学习使的 仅供参考

一、打开蚂蚁金服开放平台 找到研发服务->沙箱应用
设置沙箱应用保证可以使用
在这里插入图片描述
二、找到sdkdemo下载放到本地环境并改名为alipay配置里面的config 注释有详细的讲解仔细看
三、(这里是我的习惯)放到laravel的app下
四、去config下面新建一个alipay.php将本地修改好的config放到中间
在这里插入图片描述
五、复制alipay/pagepay里面的pagepay.php代码到自己的支付方法里面需要修改(发生错误的顺序没分先后)
1、出现一个AopCline的一个each的错误(这个一般是laravel5.以上才会发生)
修改为

	foreach ($para_temp as $key=>$val) {if (false === $this->checkEmpty($val)) {//$val = $this->characet($val, $this->postCharset);$val = str_replace("'","&apos;",$val);//$val = str_replace("\"","&quot;",$val);$sHtml.= "<input type='hidden' name='".$key."' value='".$val."'/>";}}

2.出现一个encrypt或者decrypt冲突的错误(因为laravel自带encrypt和decrypt方法)修改alipay/aop/AopEncrypt.php的方法名即可 如:
在这里插入图片描述

*** 加密方法* @param string $str* @return string*/function alipay_encrypt($str,$screct_key){//AES, 128 模式加密数据 CBC$screct_key = base64_decode($screct_key);$str = trim($str);$str = addPKCS7Padding($str);$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128,MCRYPT_MODE_CBC),1);$encrypt_str =  mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $screct_key, $str, MCRYPT_MODE_CBC);return base64_encode($encrypt_str);
}/*** 解密方法* @param string $str* @return string*/function alipay_decrypt($str,$screct_key){//AES, 128 模式加密数据 CBC$str = base64_decode($str);$screct_key = base64_decode($screct_key);$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128,MCRYPT_MODE_CBC),1);$encrypt_str =  mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $screct_key, $str, MCRYPT_MODE_CBC);$encrypt_str = trim($encrypt_str);$encrypt_str = stripPKSC7Padding($encrypt_str);return $encrypt_str;}

3.会出现一个AlipayTradePagePayContentBuilder()错误 找到这个位置前面加个\

到这里基本就结束了 附上自己测试代码

   //支付方法public function pay($order_id){require_once app_path("Packages/alipay/pagepay/service/AlipayTradeService.php");require_once app_path("Packages/alipay/pagepay/buildermodel/AlipayTradePagePayContentBuilder.php");$config = config("alipay");//商户订单号,商户网站订单系统中唯一订单号,必填$out_trade_no = date('YmdHis').rand(50,200).Str::random(10);//订单名称,必填$subject = trim("go团队测试");//付款金额,必填$total_amount = rand(10,100);//商品描述,可空$body = "";//构造参数$payRequestBuilder = new \AlipayTradePagePayContentBuilder();$payRequestBuilder->setBody($body);$payRequestBuilder->setSubject($subject);$payRequestBuilder->setTotalAmount($total_amount);$payRequestBuilder->setOutTradeNo($out_trade_no);$aop = new \AlipayTradeService($config);/*** pagePay 电脑网站支付请求* @param $builder 业务参数,使用buildmodel中的对象生成。* @param $return_url 同步跳转地址,公网可以访问* @param $notify_url 异步通知地址,公网可以访问* @return $response 支付宝返回的信息*/$response = $aop->pagePay($payRequestBuilder,$config['return_url'],$config['notify_url']);//输出表单var_dump($response);}

4、同步跳转

    //同步跳转public function success(){//引入配置文件$config = config('alipay');//引入ALipayTradeService文件require_once app_path("Packages/alipay/pagepay/service/AlipayTradeService.php");//接到支付宝同步跳转所返回的所有值 都将验签使用$arr = $_GET;//实例化AlipayTradeService 前面加个\ 传配置文件过去$alipaySevice = new \AlipayTradeService($config);//调用验签方法         这里特别说明一下 如果验签失败。请去AlipayTradeService文件中找到check方法做一下修改$ischeck = $alipaySevice->check($arr);//判断验签是否成功if($ischeck){//成功跳转到订单成功页面 用于提示用户return view("order.success");}else{//验签失败echo "fail";}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/547274.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图片动画横条广告带上下滚动

查看效果&#xff1a;http://keleyi.com/keleyi/phtml/flash/ 以下是HTML文件代码&#xff1a; 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">2 <html xmlns&q…

mysqli与pdo防sql注入源码

1.mysqli防注入 <?php//定义配置文件$config [//地址"host" > "127.0.0.1",//数据库名称"dbname" > "xxxx",//用户名"user" > "xxxx",//密码"pass" > "xxx"];//连接数据库…

npm上传自己的项目

npm安装就不介绍了&#xff0c;自行度娘。本文介绍npm上传 先初始化&#xff1a;npm init 根据提示填完系统介绍信息&#xff08;package.json&#xff09;&#xff1b; 再登录npmjs&#xff1a; npm login 效果如图&#xff1a; 输入注册的用户名、密码、邮箱&#xff0c;…

PyQt5 打包问题解决 Unable to find “D:\anaconda3\lib\site-packages\PyQt5\Qt\translations\qtwebengine_locale

PyQt5 打包问题解决 Unable to find "D:\anaconda3\lib\site-packages\PyQt5\Qt\translations\qtwebengine_locale 今天用pyinstaller打包Pyqt5程序报了以下错误&#xff0c;通过在网上查询得到了解决方案 Unable to find "D:\anaconda3\lib\site-packages\PyQt5\Qt…

融于心而表于行 之 程序的执行问题

2.4 程序的执行问题Linux的多用户说完了&#xff0c;还需要进行下一个话题&#xff0c;那就是多任务的问题。所谓多任务&#xff0c;就是同一时刻能够执行多个程序。这个问题其实对于大多数Windows用户它都不是个问题&#xff0c;因为我们经常会一边浏览网页&#xff0c;一边用…

使用ffmpeg 将mp4文件转化未hls文件

使用laravel-admin后台先写一个视频上传 protected function form(){$form new Form(new Video());$form->text(video_title, __(Video title));// uniqueName(随机生成一个文件名) move(放入的文件夹)$form->file(video_url, __(Video url))->uniqueName()->mov…

WebStorm文件类型关联设置

无意中创造了一个没有扩展名的文件&#xff0c;我选择了错误的文件类型关联。是js类型的&#xff0c;我却选成了文本&#xff0c;Ws每次编辑类型就成了txt文本&#xff0c;这个问题让我很苦恼&#xff0c;以下是我的解决方案。 错选的弹出框如下&#xff1a; 解决方案如下&…

题目1369:字符串的排列

题目1369&#xff1a;字符串的排列 时间限制&#xff1a;1 秒 内存限制&#xff1a;32 兆 题目描述&#xff1a;输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 输入&…

WebStorm按Tab建快速生成代码模块

WS中&#xff0c;比如调试每次都要写的console.log(xxx);每次都要敲一遍&#xff0c;还有if模块&#xff0c;for循环模块&#xff0c;难道没有快捷键&#xff0c;可以生成代码模块吗&#xff0c;答案是“有”。 操作步骤如下&#xff08;汉化版WS&#xff09;&#xff1a; 1、…

python根据开头和结尾字符串获取中间字符串的方法

python根据开头和结尾字符串获取中间字符串的方法 本文实例讲述了python根据开头和结尾字符串获取中间字符串的方法。分享给大家供大家参考。具体分析如下&#xff1a; 这里给定一个字符串&#xff0c;指定开头和结尾的字符串&#xff0c;返回中间包夹的字符串&#xff0c;比…

iterm2一键登陆服务器(门神权限不用每次都输密码进行验证)

1、新建文件 vim ~/.ssh/config 在打开的文件中输入以下内容 Host * ControlMaster auto ControlPath ~/.ssh/master-%r%h:%p ControlPersist yes ServerAliveInterval 60 #保持持久链接 每60s 发送一个请求检测2、 新建文件 并赋予可执行权限&#xff…

STM32 cubeMX 光敏电阻AD转化实验

文章代码使用 HAL 库。 文章目录 前言一、光敏电阻介绍二、光敏电阻原理图解析三、ADC采样介绍1. 工作原理&#xff1a;2. ADC精度&#xff1a; 四、STM32 cubeMX配置ADC采样五、代码编写总结 前言 实验开发板&#xff1a;STM32F051K8。所需软件&#xff1a;keil5 &#xff0c;…

SQLServer 2012重启服务后,自增1的标识列一次增长了1000左右

sql2012我重启了下sql服务&#xff0c;然后自增列Id居然一下子跳了1000&#xff0c;怎么回事啊&#xff1f;如果第一条数据是1&#xff0c;我重启服务&#xff0c;再添加就是1001&#xff0c;如果继续添加不重启服务的话就是1002&#xff0c;如果再次重启的话就是2001.重启下就…

Sphinx+MySQL5.1x+SphinxSE+mmseg

一.不停止mysql的情况下安装SphinxSE1.确定mysql版本,下载对应源码包此处下载5.1.69的mysql源码包#wget ftp://ftp.ntu.edu.tw/pub/MySQL/Downloads/MySQL-5.1/mysql-5.1.69.tar.gz 解压2.下载sphinx:#wget http://sphinxsearch.com/downloads/sphinx-0.9.9.tar.gz 解压3.拷贝m…

Python3实现从txt文件中读取指定行的方法

Python3实现从txt文件中读取指定行的方法 本文实例讲述了Python3实现从文件中读取指定行的方法。分享给大家供大家参考。具体实现方法如下&#xff1a;def getline(the_file_path, line_number):if line_number < 1:return for cur_line_number, line in enumerate(open(the…

tls握手浅析

首先上图&#xff1a; tcp三次握手完毕 tls&#xff1a; 1、client hello client random 支持的tls 支持的算法 2、server hello server random 选择的tls协议 选择的算法 证书 公钥 3、client 公&#x1f511;加密后的。 premaster secret server 私钥解密得到 premas…

第二题:坦克游戏1.0(方法:动态规划)

stO 在此给某位靠打01背包处理射程并AC的大神跪了 Orz 问题描述&#xff1a; henry公司最近推出了一款新的坦克游戏。在游戏中&#xff0c;你将操纵一辆坦克&#xff0c;在一个NM的区域中完成一项任务。在此的区域中&#xff0c; 将会有许多可攻击的目标&…

ip、子网掩码、网络地址、广播地址、主机数公式

了解ip地址组成 IP地址&#xff1a;4段十进制&#xff0c;共32位二进制&#xff0c;如&#xff1a;192.168.1.1 二进制就是&#xff1a;11000000&#xff5c;10101000&#xff5c;00000001&#xff5c;00000001 子网掩码可以看出有多少位是网络号&#xff0c;有多少位是主机号…

linux 使用systemctl 设置java进程开机启动,管理springboot开机进程

该过程默认已经安装jdk。java程序启动方式有多重&#xff0c;列出如下几种。 1、java -jar demo.jar 使用该命令程序在控制台输出启动&#xff0c;当按下CtrlC和关闭终端时&#xff0c;程序会终止。输出日志&#xff0c;在后面加上 > 文件名&#xff0c;如&#xff1a;java…

golang开发环境配置及Beego框架安装

配置环境&#xff1a;Windows7推荐IDE&#xff1a;LiteIDEGO下载地址&#xff1a;http://www.golangtc.com/downloadBeego开发文档地址&#xff1a;http://beego.me/docs/intro/ 安装步骤&#xff1a; 一、GO环境安装 二、配置系统变量 三、Beego安装 一、GO环境安装 根据上…