tp5.1 乐百分支付(分期)

网友投稿 851 2022-10-29

tp5.1 乐百分支付(分期)

tp5.1 乐百分支付(分期)

注意:乐百分是分测试与正式帐号的

3,注意事项: 1.交易金额范围(600—50000)元。

2.交易测试账号:接口使用(商户名称、商户编号、接口密码)乐百分管理后台使用(商户登录账号、登录密码、退款密码、PC端登陆地址)。

3.测试环境只能使用测试卡信息表中的卡号、cvn、有效期等信息做测试交易,身份证号可以填写真实个人身份证,若填写真实的卡号等信息是无法做交易的。

4.测试时需要接收短信验证码,因此手机号要为真实有效的手机号码。若无法接收短信,切勿多次触发短信验证码,可检查是否手机网络问题,或同一手机号测试交易过多,换其他手机号测试。

5.为了测试方便测试环境的扣款间隔为两天一期,若需测试退款请在交易第二天(清算后)操作。

6.测试完成,要接到乐百分生产环境时需更换商户编号、商户名称、商户简称、接口密码、生产环境域名,证书不用更换。

两个文件放到 \extend\lfqpay  php文件

LebaifenPay.php

参数都在缓存取得

OpensslAuth.php

_private_key = $key; } function get_private_key() { return $this->_private_key; } function set_public_key($key) { $this->_public_key = $key; } function get_public_key() { return $this->_public_key; } /** * 生成签名 * * @param $salt * @param $private_key * @return string * @throws \Exception */ function generate_signature($salt, $private_key) { $res = openssl_pkey_get_private($private_key); if (!openssl_sign($salt, $signature, $res)) { throw new ErrorException('open ssl error'); } return base64_encode($signature); } /** * 验证签名是否正确 * * @param $salt * @param $public_key * @param $signature * @return bool */ function vertify_signature($salt, $public_key, $signature) { $signature = base64_decode($signature); $res = openssl_pkey_get_public($public_key); if (openssl_verify($salt, $signature, $res) === 1) { return true; } else { return false; } }}

1.PC控制器方法

$params = [ 'choose_installments_num' => $choose_installments_num,//分期数 'body' => $body,//订单名称 商品简单描述 'out_trade_no' => $out_trade_no,//订单号 'total_fee' => $price,//总价格 如果购买多个商品,就是多个商品的总价 , ]; $returnDa = new \lfqpay\LebaifenPay; $result=$returnDa->buildRequestForm($params);

2.移动方法(API接口方式)

参数组成一个网址形式返回给前端网页,收到网址就是打开一个外部连接网址

​​= [ 'choose_installments_num' => $choose_installments_num,//分期数 'body' => $body,//订单名称 商品简单描述 'out_trade_no' => $out_trade_no,//订单号 'total_fee' => $price,//总价格 如果购买多个商品,就是多个商品的总价 , ]; $returnDa = new \lfqpay\LebaifenPay; $result=$returnDa->buildRequestFormApp($params); if(empty($result)){ throw new \Exception(json_encode(array('code'=>7001,'msg'=>'缺少必要参数','out_trade_no'=>$out_trade_no))); } $returnArr['url']=$result['url'].$result['certId'].$result['version'].$result['txnType'].$result['frontUrl'].$result['backUrl'].$result['encoding'].$result['merId'].$result['merName'].$result['merAbbr'].$result['merPwd'].$result['orderId'].$result['txnTime'].$result['txnAmt'].$result['txnTerms'].$result['txnTermsList'].$result['merNote'].$result['userMac'].$result['validTime'].$result['signature'];

重点:签名那里要urlencode($sign),不然网址带+空变是空格的,会验证失败

3.回调

//同步调回接口 乐百分分期 支付 public function lfqpay_notify_url(){ $postStr=input('get.'); if($postStr['respCode']=='0000'){//成功 $this->lfqpayNotify($postStr); }else{ if($postStr['respCode']=='0140'){//单笔交易金额不在规定范围内 $msg=',金额在600-50000元之间'; } $respMsg=$postStr['respMsg'].$msg; $this->error($respMsg,'index/user/order'); } } //异步调回接口 乐百分分期 支付 public function lfqpay_notify(){ $data=input('post.'); $orderId=input('post.orderId'); $respMsg=input('post.respMsg'); $respCode=input('post.respCode'); //收到支付成功通知变更订单状态 if($orderId&&$respMsg=='成功'&&$respCode=='0000'){ //收到支付成功通知变更订单状态 $this->lfqpayNotify($data); //处理完所有订单状态等信息后输出success echo "success"; } } //乐百分分期支付成功后回调共同的操作 public function lfqpayNotify($data){ //判断合法性 $returnDa = new \lfqpay\LebaifenPay; $sign_is=$returnDa->_vertify_sign($data); if(!empty($sign_is)){ //成功 } }

php原生demo我放个到个人百度网盘中,就不分享出来了,,有些证书不适合。。。。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:一个基于vue-element-admin,以vortex-pc为UI框架的demo
下一篇:基于Beego框架从网易财经获取股票日线
相关文章

 发表评论

暂时没有评论,来抢沙发吧~