做电商网站的朋侪都知道在线付出功能是必不可少的,作为如今线上付出巨头“付出宝付出”,“微信付出”是一个电商网站的标配。本日我们就来一起学习一下在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)是国内知名商城系统及商城网站建设提供商,其中销客多小程序系统为商家提供小程序商城开发、小程序分销系统、微分销系统、商城系统、电商网站建设、微信分销系统、小程序商城等多端商城及电子商务行业解决方案> 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |