ThinkPHP 5如何接入支付宝支付功能
2017-11-17 18:33
666 查看
做电商网站的朋友都知道在线支付功能是必不可少的,作为现在线上支付巨头“支付宝支付”,“微信支付”是一个电商网站的标配。今天我们就来一起学习一下在thinkphp5 中“支付宝即时支付”是如何实现。这里我们以WSTMart开源系统为例来分享:在thinkphp5 中如何接入支付宝功能。
准备工作:
1. 开通支付宝商户号,
2. 登录蚂蚁金服开发平台创建应用,并签约电脑网站支付
3. 将商户信息配置到系统中
以上准备工作做好了,我们来看看代码是如何实现的:
在wstmart\home\controller\Alipays.php支付宝控制器中,首生会初始化获取到配置信息
接下来会通过getAlipaysUrl()方法来是组建调起支付宝所需要的参数,并通过返回一个json数组将数据传到页面,然后跳转url,调起支付宝进行支付
当用户支付完成后,支付宝会异步调用商户网站回调地址,WSTMart的回调地址是“home/alipays/aliNotify”,在aliNotify中会通过notify方法对支付宝进行签名验证,验证通过后再对订单状态进行改变。【注:回调地址中不能出现“xxx?xx=1”这样的带参url】
验证成功后就可以接入tp5站点对订单逻辑的处理了,这里就不多说了,希望对大家有所帮助!!
准备工作:
1. 开通支付宝商户号,
2. 登录蚂蚁金服开发平台创建应用,并签约电脑网站支付
3. 将商户信息配置到系统中
以上准备工作做好了,我们来看看代码是如何实现的:
在wstmart\home\controller\Alipays.php支付宝控制器中,首生会初始化获取到配置信息
/** * 初始化 */ private$aliPayConfig; publicfunction _initialize() { $this->aliPayConfig = array(); $m = new M(); $this->aliPayConfig = $m->getPayment("alipays"); }
接下来会通过getAlipaysUrl()方法来是组建调起支付宝所需要的参数,并通过返回一个json数组将数据传到页面,然后跳转url,调起支付宝进行支付
/** * 生成支付代码 */ functiongetAlipaysUrl(){ 这里代码省略… 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】
/** * 支付回调验证接口 */ functionnotify($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; }
验证成功后就可以接入tp5站点对订单逻辑的处理了,这里就不多说了,希望对大家有所帮助!!
相关文章推荐
- ThinkPHP 5如何接入支付宝支付功能
- ThinkPHP接入支付宝支付功能
- ThinkPHP接入支付宝支付功能
- ThinkPHP接入支付宝支付功能
- ThinkPHP5.0 实现 app支付宝支付功能
- 互联网产品接入支付功能如何测试?
- 如何给你的网站接入第三方支付功能
- Android接入支付宝实现支付功能
- 如何完成支付宝的支付功能?
- Android接入支付宝实现支付功能
- Android接入支付宝实现支付功能
- 2017安卓开发接入支付宝支付功能详解,真正做到完全翻译支付宝sdk开发应用
- 如何完成支付宝的支付功能?
- 接入支付宝支付功能思路总结
- ThinkPHP5.0 实现支付宝支付功能(app端)
- Android接入支付宝实现支付功能
- thinkphp框架中的支付宝支付功能简单介绍
- Android接入支付宝实现支付功能实例
- 如何完成支付宝的支付功能?
- Android接入支付宝实现支付功能