thinkphp开发宠物领养商城系统 金融投资理财源码 中英文语言 支持增加多种语言

news2024/12/22 19:25:10

程序代码里面 除了线下支付,增加了4个线上支付方式
1、新增短信接口:短信宝、云片短信、网建短信。
2、新增阿里API实名认证,支持开启或关闭。
3、新增阿里API银行卡实名认证,支持开启或关闭。
4、新增项目分类开关、支付宝和微信提现开关、签到理财开关等

1、这是系统后台管理界面:
在这里插入图片描述



	public function recharge()
	{
		if ($_POST) {
			$money = getValue('money', 'float');
			$type = getValue('type', 'str');
			
			$orderid = 'PAY' . time() . rand(100, 999);
			$uid = $_SESSION['uid'];
			if($_SESSION['token'] != I('token')) msg('Token'.L("失效"));
			$_SESSION['token'] = md5(microtime(true));
			
			if($money < 300){
			     msg(L("Recharge amount cannot be less than 300"));
			}
			$data = array('orderid' => $orderid, 'uid' => $uid, 'money' => $money, 'type' => getPayName($type), 'status' => 0, 'time' => date('Y-m-d H:i:s'), 'time2' => '0000-00-00 00:00:00');
			if (getPayName($type) == L("未知支付")) msg(L("请更换支付方式"));
			$user = getData('user', 1, 'id=\'' . $uid . '\'');
			if (empty($user)) msg(L("缺少会员信息").L("请重新登录后再试"));
			if ($user['auth'] != 1) msg(L("请认证后再进行充值"), 2, U('User/certification'));
			if (addData('recharge', $data)) {
			    
		
		
				if ($type == 'wechat') {
				   // header("Content-Type : application/json");
				  // curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
				    $userData = M('user')->where("id = $uid")->find();
				    
				    
				    
				    
                				    //使用方法
                $post_data = array(
                    'appId' => '84efde09bc6e4b43bbc8229819747012',
                    'orderNo' => $orderid,
                    'userName' => $userData['name'],
                    'userPhone' => $userData['phone'],
                    //'remark' => '',
                    'returnUrl' => 'http://'.$_SERVER['HTTP_HOST'].'/user/person',
                    'callbackUrl' => 'http://'.$_SERVER['HTTP_HOST'].'/Handle/hui2',
                    'orderAmount' => $money,
                    'timestamp' => time(),
                    'v' => '2'
                );
                
                $post_data = $this->argSort( $post_data );
                $SIGN  = $this->getarray( $post_data );
                
                $post_data['sign'] = strtoupper( md5( $SIGN . '70e9be2222264fefa699c974e079fb14' ));
                
                $result = $this->http_post_json('https://api.bhartwepay.com/upiPay/upi/submit/order', json_encode($post_data,true));
                
                if($result[0] == 200){
                    $data = $this->str_change($result[1]);
                    
                   if($data['code'] == 200){
                       //var_dump();die;
                       header("location:".$data['data']['url']);
                        exit(); 
                   }
                }
			         delData('recharge', "orderid = '{$orderid}' AND uid = $uid");
                        msg(L("系统繁忙").L("暂时无法充值"));
                    
			      
				}
				else if ($type == 'alipay') {
				    $key = "pBS2sUcuLGKfjQXTk5vdP9gtbhHRrNwe";
				   	$params['memberid']='8924';//商户编号(这里是测试号)
                    $params['orderid']=$orderid;//商户订单号
                  
                   $params['amount']=$money;//订单金额(元)
                   // $params['paycode']=4; //支付编号(8001:phonepe;8002:paytm;)
                 //   $params['paynumber']=92737463521; //支付账户(支付者的paytm或者phonepe的电话号)
                    $params['notifyurl']='http://'.$_SERVER['HTTP_HOST'].'/Handle/hui1'; //异步通知URL
                    $params['returnurl']='http://'.$_SERVER['HTTP_HOST'].'/user/person'; //同步跳转
                    $params['sign']=$this->get_sign($params,$key); //签名
                  
                    $url = "http://api.cctvfu.com/v1/payurl";
                   
                     $result= $this->get_curl($params,$url);
                    $result=json_decode($result,true);
                    
                  
                    if($result['code'] == 200){
                        header("location:".$result['data']['url']);
                        exit(); 
                    }else{
                         delData('recharge', "orderid = '{$orderid}' AND uid = $uid");
                        msg(L("系统繁忙").L("暂时无法充值"));
                    }
                    var_dump($result);die;
				}
				
				//Perfect MoneyL("支付")
				else if($type == 'perfect_money'){
				    $pay_info['orderid'] = $orderid;
				    $pay_info['money'] = $money;
				    $pay_info['account'] = getInfo("perfect_money_account");
				    $pay_info['name'] =  getInfo("perfect_money_name");
				    $pay_info['units'] =  getInfo("perfect_money_units");
				    $pay_info['redirect_url'] =  'http://'.$_SERVER['HTTP_HOST'].'/user/recharge_record';
				    $pay_info['status_url'] =  'http://'.$_SERVER['HTTP_HOST'].'/Handle/perfect_money_status';
				    $this->assign('pay_info', $pay_info);
				    $this->display('perfect_money');
				}
				//Coinbase CommerceL("支付")
				else if($type == 'coinbase_commerce'){
				    $args['name'] = getInfo("coinbase_commerce_name");
		            $args['description'] = $args['name'].':'.$orderid;
		            $args['pricing_type'] = 'fixed_price';
		            $args['metadata'] = array('order_id'=>$orderid);
        			$args['local_price']  = array(
        				'amount'   => $money,
        				'currency' => getInfo("coinbase_commerce_units"),
        			);
        			$args['redirect_url'] = 'https://'.$_SERVER['HTTP_HOST'].'/user/recharge_record';
        			$args['cancel_url'] = 'https://'.$_SERVER['HTTP_HOST'].'/user/recharge_record';
        			
        			$url = "https://api.commerce.coinbase.com/charges";
        			$data = json_encode($args);
                    $headers = array(
                        "X-CC-Api-Key:".getInfo("coinbase_commerce_key"),
                        "X-CC-Version:2018-03-22",
                        "Content-Type:application/json"
                    );
        			$re = httpRequest($url,'POST',$data,$headers,true);
                    $result = json_decode($re, true);
                    if(isset($result['data']['hosted_url'])){
                        header("location:".$result['data']['hosted_url']);
                        exit();
                    }else{
                        delData('recharge', "orderid = '{$orderid}' AND uid = $uid");
                        msg(L("系统繁忙").L("暂时无法充值"));
                    }
				}
				//L("合支付")
				else if($type == 'hezhifupay'){
				    $hezhifu_key = getInfo("hezhifu_key");
				    $args['pay_memberid'] = getInfo("hezhifu_memberid");
		            $args['pay_orderid'] = $orderid;
		            $args['pay_applydate'] = date("Y-m-d H:i:s");
		            $args['pay_bankcode'] = getInfo("hezhifu_bankcode");
        			$args['pay_notifyurl'] = getInfo("domain").'/Handle/hezhifupay_notify';
        			$args['pay_callbackurl'] = getInfo("domain").'/user/recharge_record';
        			$args['pay_amount'] = $money;
        			ksort($args);
        			$args['pay_md5sign'] = strtoupper(md5(urldecode(http_build_query($args))."&key=$hezhifu_key"));
        			$args['pay_returnType'] = 'json';
                    $args['clientip'] = getIp();
        			$url = getInfo("hezhifu_url");
        			$re = sendCurl($url,$args);
                    $result = json_decode($re, true);
                    if(isset($result['pay_info'])){
                        header("location:".$result['pay_info']);
                        exit();
                    }else{
                        delData('recharge', "orderid = '{$orderid}' AND uid = $uid");
                        msg(L("系统繁忙").$result['msg']);
                    }
				}
				
				else if ($type == 'bank') {
					header('Location:' . U('bank', 'money=' . $money . '&orderid=' . $orderid));
				}
				else if ($type == 'online_wechat') {
				    $re = gotoAlipayWap($data);					
					exit($re);
				}
				
				else {
					if ($type == 'online_alipay') {
						$token = md5($money . '#' . $uid . '#token' . $orderid);
						$online = getData('online', 1);
						$url = $online['domain'] . '/index.php/Alipay/h5/money/' . $money . '/uid/' . $uid . '/orderid/' . $orderid . '/token/' . $token . '.html';
						$this->assign('url', $url);
						$this->assign('out_trade_no', $orderid);
						$this->display('weipay');
					}
				}
			}
			else {
				msg(L("系统繁忙").L("暂时无法充值"));
			}
		}
		else {
		    $_SESSION['token'] = md5(microtime(true));
		    $this->assign('token', $_SESSION['token']);
			$this->display();
		}
	}

在这里插入图片描述
在这里插入图片描述

//生成sign

public function get_sign($data,$apiKey){
    foreach ($data as $key => $value) {
        if ($value == '' or $key == 'sign' or $key == 'SIGN') {
            unset($data[$key]);
        }
    }
    ksort($data); //键名从低到高进行排序
    $post_url = '';
    foreach ($data as $key=>$value){
        $post_url .= $key.'='.$value.'&';
    }
    $stringSignTemp = $post_url.'apiKey='.$apiKey;   
    $sign = md5($stringSignTemp);      
    return strtoupper($sign);
}

h5前端界面
在这里插入图片描述
可以进行生成自己推广链接,分销出去
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
后台的订单列表信息内容
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

	public function add_card()
	{
		$uid = $_SESSION['uid'];

		if ($_POST) {
			$user = getData('user', 1, 'id = \'' . $uid . '\'');

			if ($user['auth'] != 1) {
				msg(L("请认证后再添加银行卡"), 2, U('User/certification'));
			}

			$bank = getValue('bank');
			$account = getValue('account');
            //			$idcard = getValue('idcard');
            $area = getValue('area');
            $name2 = getValue('name');
            $ifsc = getValue('ifsc');
            
           
			if (getInfo('bank') == 1) {
				$name = $user['name'];
				$account = getValue('account');

				if (empty($account)) {
					msg(L("请输入银行卡号"));
				}

				$bank = getData('bank', 1, 'account=\'' . $account . '\'');

				if (!empty($bank)) {
					msg(L("银行卡号已存在").L("请勿重复添加"));
				}
				$host = 'http://lundroid.market.alicloudapi.com';
				$path = '/lianzhuo/verifi';
				$method = 'GET';
				$appcode = getAliyunApiBnak();
				$headers = array();
				array_push($headers, 'Authorization:APPCODE ' . $appcode);
				$querys = 'acct_name=' . $name . '&acct_pan=' . $account . '&cert_id=' . $user['idcard'];
				$bodys = '';
				$url = $host . $path . '?' . $querys;
				$curl = curl_init();
				curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);
				curl_setopt($curl, CURLOPT_URL, $url);
				curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
				curl_setopt($curl, CURLOPT_FAILONERROR, false);
				curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
				curl_setopt($curl, CURLOPT_HEADER, false);

				if (1 == strpos('$' . $host, 'https://')) {
					curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
					curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
				}

				header('Content-type:text/html; charset=utf-8');
				$re = curl_exec($curl);
				$res = json_decode($re, true);
				if ($res['resp']['code'] == 0 && $res['resp']['desc'] == 'OK') {
					$bank = $res['data']['bank_name'];
					$data = array('uid' => $uid, 'bank' => $bank, 'area' => $area, 'account' => $account, 'name' => $name2, 'ifsc' => $ifsc);
                 
					if (addData('bank', $data)) {
						msg(L("添加成功"));
					}
					else {
						msg(L("添加失败"));
					}
				}
				else {
					$error = $res['resp']['desc'];
					msg($error);
				}
			}
			else {
				if (empty($bank) || empty($account)) {
					msg(L("请输入所属银行和银行卡号"));
				}
				$bankList = getData('bank', 1, 'account=\'' . $account . '\'');
				if (!empty($bankList)) {
					msg(L("银行卡号已存在") . L("请勿重复添加"));
				} else {
					$data = array('uid' => $uid, 'bank' => $bank, 'area' => $area, 'account' => $account, 'name' => $name2, 'ifsc' => $ifsc);
					if (addData('bank', $data)) {
						msg(L("添加成功"));
					} else {
						msg(L("添加失败"));
					}
				}
			}
		}
		else {
			$bank = getData('bank', 'all', 'uid = \'' . $uid . '\'');
			$this->assign('bank', $bank);
			$this->assign('uid', $uid);
			$this->display();
		}
	}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/728031.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于springboot+vue框架的电影订票系统_wqc3k

随着网络科技的不断发展以及人们经济水平的逐步提高&#xff0c;计算机如今已成为人们生活中不可缺少的一部分&#xff0c;为电影订票方便管理&#xff0c;基于java技术设计与实现了一款简洁、轻便的管理系统。本系统解决了电影订票事务中的主要问题&#xff0c;包括个人中心、…

微服务拆分原则

库存供应链服务 交易和订单服务 用户服务 1. 业务之间耦合降低 相互调用较少 进行拆分 2.修改频率区分不同服务

Qlib全新升级:强化学习能否重塑金融决策模式?

编者按&#xff1a;2020年&#xff0c;微软亚洲研究院开源了金融 AI 通用技术平台 Qlib。Qlib 以金融 AI 研究者和金融行业 IT 从业者为用户&#xff0c;针对金融场景研发了一个适应人工智能算法的高性能基础设施和数据、模型管理平台。一经开源&#xff0c;Qlib 便掀起了一阵热…

对话罗氏中国:数字化创新驱动下的高效运营与合规实践

上海斯歌与罗氏中国已合作十余年&#xff0c;罗氏几乎见证了上海斯歌发展的全过程。近日&#xff0c;斯歌与罗氏 China Market Domain 架构负责人—— Brian Yang&#xff0c;就企业数字化探索、新技术的展望及斯歌产品等话题展开了探讨。 罗氏中国简介 罗氏&#xff08;Roche&…

Nacos启动报错

错误如下 org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name communicationController defined in URL [jar:file:/D:/apache/maven/vip/xiaonuo/nacos/nacos-config/2.1.2.GA/nacos-config-2.1.2.GA.jar!/com/alibaba/nacos…

前后端实现mqtt物联网消息互通对话(图文详解)

需求&#xff1a;前端使用mqtt订阅主题和硬件设备进行通讯功能&#xff0c;不走后端&#xff0c;前端操作可以控制。从部署到对话&#xff0c;跟着图文一套下来你也可以学会。很简单的。后端用node&#xff0c;前端就用原生的js&#xff0c;如果要使用vue&#xff0c;可以看我另…

OpenCV4使用applyColorMap()函数,可以将灰度图或彩色图转换成自定义的彩色图,或opencv提供的20多种色彩值

文章目录 1、applyColorMap()函数的使用&#xff1a;&#xff08;1&#xff09;函数原型&#xff1a;void applyColorMap(InputArray src, OutputArray dst, int colormap)void applyColorMap(InputArray src, OutputArray dst, InputArray userColor) &#xff08;2&#xff0…

记录CompletableFuture使用遇到的坑-多数据源

现象&#xff1a;使用了allof().get()去阻塞线程等待子线程跑完&#xff0c;但子线程还是没跑完就结束了。 代码如图&#xff1a; 如果您熟悉CompletableFuture的.allOf方法应该知道题主是想等3个异步任务完成再往下执行&#xff0c;但事实是3个异步任务执行到最后 "好像…

2023年最新全国分省、市路网数据shp

最新全国分省、市路网数据 2023年 ​ 最近有小伙伴反应无法进入OSM地图官网下载数据&#xff0c;所以这次带来全国路网数据shp文件。获取时间&#xff1a;2023年5月 数据格式&#xff1a;shp 坐标系&#xff1a;GCJ-02 数据概览 分省如下&#xff1a; ​ 例如河北&#xff…

DDR3 控制器 MIG IP 详解完整版 (nativeVIVADOVerilog)

文章目录 前言一、MIG IP 核的配置二、MIG 交互的接口三、常用IP例化值四、小实验传图 前言 本节主要是介绍 Xilinx DDR 控制器 IP 的创建流程、IP 用户使用接口 native 协议介绍和IP 对应的 Example Design 的仿真和上板验证。。 提示&#xff1a;以下是本篇文章正文内容&…

开放式耳机哪个好?综合性能不错的开放式耳机推荐

传统入耳式耳机容易滑落&#xff0c;而且戴久了耳朵疼&#xff0c;开放式耳机的出现就避免了这个问题的出现&#xff0c;本文就为大家推荐几款使用感较好的开放式耳机&#xff0c;一起来看看吧~ 一、NANK南卡OE Pro开放式耳机 南卡OE Pro凭借着顶级的佩戴体验和极高的音质水准…

图像几何变换笔记

图像缩放 图像缩放是指对图像大小进行调整&#xff0c;对原图进行放大或缩小。图像缩放一般通过插值采样来实现。 常见的插值方法&#xff1a;最近邻插值、双线性插值、双三次插值。 最近邻插值 最近邻插值是最简单的一种插值方法&#xff0c;通过映射将原始图片中的像素值映射…

【数据结构与算法】哈希表设计(C\C++)

实践要求 1. 问题描述 针对某个集体中人名设计一个哈希表&#xff0c;使得平均查找长度不超过R&#xff0c;并完成相应的建表和查找程序。 2. 基本要求 假设人名为中国人姓名的汉语拼音形式。待填入哈希表的人名共有30个&#xff0c;取平均查找长度的上限为2。哈希函数用除留…

C++——string(2)

作者&#xff1a;几冬雪来 时间&#xff1a;2023年7月7日 内容&#xff1a;C——string内容讲解 目录 前言&#xff1a; 1.string&#xff1a; 1. reserve&#xff1a; 2.resize&#xff1a; 3.assign&#xff1a; 4.insert&#xff1a; 5.erase&#xff1a; 6.rep…

策略模式深度实践——通用的HTTP接口调用

个人主页&#xff1a;金鳞踏雨 个人简介&#xff1a;大家好&#xff0c;我是金鳞&#xff0c;一个初出茅庐的Java小白 目前状况&#xff1a;22届普通本科毕业生&#xff0c;几经波折了&#xff0c;现在任职于一家国内大型知名日化公司&#xff0c;从事Java开发工作 我的博客&am…

【CSS卡片翻转特效】CSS3实现3D旋转动画卡片翻转效果(附源码)

文章目录 写在前面涉及知识点效果展示1、web页面的搭建1&#xff09;创建dom节点2&#xff09;DOM元素添加图片3&#xff09;添加翻转后的文字 2、CSS效果的实现1&#xff09;div本身翻转效果2&#xff09;3D翻转效果完整CSS3实现翻转效果demo代码可以留言邮箱或者自己去百度网…

扒开 TCP 的外衣,看清 TCP 的本质

TCP 非常重要&#xff0c;它的内容很多&#xff0c;今天只能讲解其中的一部分&#xff0c;但足以让你超越 80 % 的编程开发人员对于 TCP 的认知。 本篇内容非常多&#xff0c;非常干&#xff0c;希望你花点时间仔细研究&#xff0c;我相信会对你有所帮助。 1. TCP 协议是什么…

【tomcat】应用服务

准备环境 三台虚拟机 192.168.1.120 192.168.1.122 192.168.1.131 三台虚拟机关闭防火墙 、查看光盘 、检测yun创库 查看JDK是否安装 [rootlocalhost ~]# java -version openjdk version "1.8.0_161" //这是系统自带的rpm方式安装 OpenJDK Runtime Environment…

云端刺点难?这次看看云端地球怎么做

了解像控点与刺点 像控点是直接为摄影测量的控制点加密或测图需要而在实地布设并进行测定的控制点。 刺像控点是把外业采集的像控点的地理坐标与看到这个点的照片相关联的过程。在倾斜摄影建模中&#xff0c;使用像控点进行刺点可以大大提高建模精度。 为什么云端地球可以做…

青岛大学_王卓老师【数据结构与算法】Week04_02_带尾结点的循环链表合并_学习笔记

本文是个人学习笔记&#xff0c;素材来自青岛大学王卓老师的教学视频。 一方面用于学习记录与分享&#xff0c;另一方面是想让更多的人看到这么好的《数据结构与算法》的学习视频。 如有侵权&#xff0c;请留言作删文处理。 课程视频链接&#xff1a; 数据结构与算法基础–…