咨询热线:18076568990、0755-25823180

ThinkPHP 5如何接入支付宝支付功能

2020-8-28 09:20| 发布者: shopwt| 查看: 772| 评论: 0

简介: 做电商网站的朋侪都知道在线付出功能是必不可少的,作为如今线上付出巨头“付出宝付出”,“微信付出”是一个电商网站的标配。本日我们就来一起学习一下在thinkphp5 中“付出宝即时付出”是怎样实现。这里我们以Sho

做电商网站的朋侪都知道在线付出功能是必不可少的,作为如今线上付出巨头“付出宝付出”,“微信付出”是一个电商网站的标配。本日我们就来一起学习一下在thinkphp5 中“付出宝即时付出”是怎样实现。这里我们以ShopWT开源体系为例来分享:在thinkphp5 中怎样接入付出宝功能。

预备工作:

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;
}
 


当用户付出完成后,付出宝会异步调用商户网站回调地点,ShopWT的回调地点是“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站点对订单逻辑的处理处罚了,这里就不多说了,盼望对各人有所资助!!


ShopWT(www.shopwt.com)是国内知名商城系统及商城网站建设提供商,其中销客多小程序系统为商家提供小程序商城开发、小程序分销系统、微分销系统、商城系统、电商网站建设、微信分销系统、小程序商城等多端商城及电子商务行业解决方案>
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
收藏 分享 邀请

鲜花

握手

雷人

路过

鸡蛋

精彩阅读

更多+

最新活动

联系我们

产品及方案咨询:18076568990、0755-25823180

电子邮箱:web@shopwt.com、客服微信:shopwtcom

公司地址:深圳市罗湖区人民南路3002号国贸大厦B座1608楼

  • 官方公众号

  • 微信客服