marttype加载到word中不能用_WSTMart三级分销系统是怎么接入支付宝支付的
WSTMart三级分销系统为例分享支付宝支付是如何接入thinkphp5框架的
做电商网站的朋友都知道在线支付功能是必不可少的,作为现在线上支付巨头“支付宝支付”,“微信支付”是一个电商网站的标配。今天我们就来一起学习一下在thinkphp5中“支付宝即时支付”是如何实现。这里我们以WSTMart为例来讲解一下:
1.首先你在支付宝开通支付宝商户号,
2.登录蚂蚁金服开发平台创建应用,并签约电脑网站支付
3.将商户信息配置到系统中
以上准备工作做好了,我们来看看WSTMart三级分销系统代码是如何实现的:
在wstmart\home\controller\Alipays.php支付宝控制器中,首生会初始化获取到配置信息
/**
*初始化
*/
private
$aliPayConfig;
public
function _initialize() {
$this->aliPayConfig = array();
$m = new M();
$this->aliPayConfig = $m->getPayment("alipays");
}
接下来会通过WSTMart三级分销系统的getAlipaysUrl()方法来是组建调起支付宝所需要的参数,并通过返回一个json数组将数据传到页面,然后跳转url,调起支付宝进行支付。
/**
*生成支付代码
*/
function
getAlipaysUrl(){
这里代码省略…
if($data["status"]==1){
$return_url =
url("home/alipays/response","",true,true);
$notify_url = url("home/alipays/aliNotify","",true,true);
$parameter = array(
'extra_common_param'=>
$extra_common_param,//扩展参数
'service' => 'create_direct_pay_by_user',
'partner' =>
$this->aliPayConfig['parterID'],
'_input_charset' => "utf-8",
'notify_url' => $notify_url,
'return_url' => $return_url,
/*业务参数*/
'subject' => $subject,
'body' => $body,
'out_trade_no' => $out_trade_no,
'total_fee' => $orderAmount,
'quantity' => 1,
'payment_type' => 1,
/*物流参数*/
'logistics_type' => 'EXPRESS',
'logistics_fee' => 0,
'logistics_payment'
=> 'BUYER_PAY_AFTER_RECEIVE',
/*买卖双方信息*/
'seller_email' => $this->aliPayConfig['payAccount']
);
ksort($parameter);
reset($parameter);
$param = '';
$sign = '';
foreach ($parameter AS $key
=> $val){
$param .=
"$key=" .urlencode($val). "&";
$sign .= "$key=$val&";
}
$param = substr($param, 0, -1);
$sign = substr($sign, 0, -1).
$this->aliPayConfig['parterKey'];
$url =
'https://mapi.alipay.com/gateway.do?'.$param.
'&sign='.md5($sign).'&sign_type=MD5';
$data["url"] = $url;
}
return $data;
}
当用户支付完成后,支付宝会异步调用商户网站回调地址,WSTMart三级分销系统的回调地址文件目录是“home/alipays/aliNotify”,在aliNotify中会通过notify方法对支付宝进行签名验证,验证通过后再对订单状态进行改变。【注:回调地址中不能出现“xxx?xx=1”这样的带参url】
/**
*支付回调验证接口
*/
function
notify($request){
$returnRes =
array('info'=>'','status'=>false);
$request = $this->argSort($request);
//检查数字签名是否正确
$isSign = $this->getSignVeryfy($request);
if (!$isSign){//签名验证失败
$returnRes['info'] = '签名验证失败';
return $returnRes;
}
if ($request['trade_status'] ==
'TRADE_SUCCESS' || $request['trade_status'] == 'TRADE_FINISHED'){
$returnRes['status'] = true;
}
return $returnRes;
}
验证成功后就是商户网站对订单逻辑的处理了,WSTMart三级分销系统在这里就不多说了,希望对大家有所帮助!!
marttype加载到word中不能用_WSTMart三级分销系统是怎么接入支付宝支付的相关推荐
- python变量区变量保存与加载_python – Flask:使用全局变量将数据文件加载到内存中...
我有一个大的 XML文件,它被打开,加载到内存中,然后由 Python类关闭.简化示例如下所示: class Dictionary(): def __init__(self,filename): f ...
- html页面判断其他div为空,将外部html加载到div中 - 页面加载然后变为空白
我确信这将会变成一件愚蠢的事情,但是自从我成为JavaScript noob以来,这里就变成了一件愚蠢的事情.将外部html加载到div中 - 页面加载然后变为空白 我想外部HTML内容加载到我的索引 ...
- SoapUI利用Groovy把外部数据加载到request中
默认已经用Groovy把外部数据给读取出来了,关键是读取出来后,如何加载到request中去?这里提供了两种方法: 1.该Groovy脚本的名称是"setUp" def num = ...
- 开机启动加载驱动过程中调用PostMessage函数出错
今天在WINCE5.0+S3C2440系统调试检测出租车是否载客的驱动的时候遇到这样的问题: 发现在开机启动加载驱动过程中调用PostMessage函数时会导致调用的线程崩溃,比如如果下面的线程在创建 ...
- 在.NET2.0中如何更简单的使用委托将方法加载到事件中去
我们知道在System命名空间中,.NET为我们提供了EventHandler的委托,它的原型是delegate void EventHandler(object sender,EventArgs e ...
- java中的类加载器有,Java自定义的类加载器,java自定义加载,在java中类加载器有以...
Java自定义的类加载器,java自定义加载,在java中类加载器有以 在java中类加载器有以下几种java虚拟机自带的加载器 1)根类加载器(Bootstrap,c++实现)2)扩展类加载器(Ex ...
- linux文件 内存映射 锁,linux – mmap:将映射文件立即加载到内存中吗?
不,是的,也许吧.这取决于. 调用mmap通常只意味着对应用程序而言,映射文件的内容将映射到其地址空间,就像文件已加载到那里一样.或者,好像该文件确实存在于内存中,就好像它们是同一个(包括更改被写回磁 ...
- 中yeti不能加载_将 PQ 查询加载到 Excel 中进行分析的三种常用的方式
点击上方蓝字 关注星标★不迷路 岁月本长,忙者自促 虽然大部分时候经过PQ清洗的数据都是加载到Excel工作表中,但是PQ中还有另外两种将数据返回Excel中进行分析的方法. 三种不同的数据加载方式: ...
- spring预加载与懒加载_通过Spring将继承树加载到List中
spring预加载与懒加载 我注意到有趣的Spring功能. 我的一位同事使用它将Spring Bean的整个继承树加载到列表中. 在学习Spring文档时错过了这一点. 让我们来看看Spring b ...
最新文章
- Linux常用指令---ps(查看进程)
- 基于python的快速傅里叶变换FFT(一)
- RAP、Mock.js、Vue.js、Webpack
- Opengl-帧缓冲(一个新的缓冲对象,想一下深度和模板缓冲)
- Failed to bind NettyServer on /192.168.**.*:20880, cause: Failed to bind to: /0.0.0.0:20880
- linux应用开发:日志记录
- 通信原理速学02:随机过程
- [课程相关]homework-06
- 【C++深度剖析教程40】使用数值型模板技术计算1+2+3+...+N的值
- Spring 5的最终功能发行版即将来临
- PAT乙级 1061 判断题
- java iso-8859-1_如何在Java中的ISO-8859-1和UTF-8之间转换?
- openlayers添加按钮_OpenLayers3加载常用控件使用方法详解
- 远程桌面连接-GPU加速
- 数学建模:层次分析法实例以及代码
- Cocos2dx-lua组件tableView的简单用法
- 液压传动理论教学实训
- APP日志的抓取方法——转载
- 计算机可以谭音乐吗,谭晶怎么被叫谭哈哈 《歌手》谭晶演唱什么歌曲
- bilibili自动上传视频脚本(纯ruby)
热门文章
- 界面组件——按钮(Button)与图片按钮(ImageButton)
- java转码及页面乱码原因分析
- [Azure]经典模式下关于云服务配置多个VIP的使用说明
- APS高级计划排程(生产计划排产)系统的算法规则和异常处理策略
- 15.学习Camera之——camera理论基础和工作原理
- 解决:provider:Named Pipes Provider error:40无法打开SQL Server的连接
- 阿里物联网平台的使用
- 新手入门人工智能领域的历程 --干货
- 关关于android 微信sdk 分享 图片 到 朋友圈 的问题
- TypeError: invalid destination position for blit