/**
支付配置
**/
public function config(){
//商户编号是商户在连连钱包支付平台上开设的商户号码,为18位数字,如:201306081000001016
//秘钥格式注意不能修改(左对齐,右边有回车符)
$llpay_config['oid_partner'] = "商户编号";
$llpay_config['RSA_PRIVATE_KEY'] ='RSA生成的私钥';
//连连银通公钥
$llpay_config['LIANLIAN_PUBLICK_KEY'] ='连联通公钥';
//安全检验码,以数字和字母组成的字符
//$llpay_config['key'] = '201408071000001539_sahdisa_20141205';//MD5方式一放弃
//↑↑↑↑↑↑↑↑↑↑请在这里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
//版本号
$llpay_config['version'] = '1.1';
//请求应用标识 为wap版本,不需修改
$llpay_config['app_request'] = '3';
//签名方式 不需修改
$llpay_config['sign_type'] = strtoupper('RSA');
//订单有效时间 分钟为单位,默认为10080分钟(7天)
$llpay_config['valid_order'] ="30";
//字符编码格式 目前支持 gbk 或 utf-8
$llpay_config['input_charset'] = strtolower('utf-8');
//访问模式,根据自己的服务器是否支持ssl访问,若支持请选择https;若不支持请选择http
$llpay_config['transport'] = 'http';
//认证支付
//证件类型
$llpay_config['id_type'] = 0;
return $llpay_config;
}
/**充值
*order_id 订单id
**/
public function topUps(){
$order_id=I("get.order_id");
if(!$order_id){
$this->redirect('Member/myRecharge','',0,'参数错误');
}
$info=M("Money_order")->where(array('id'=>$order_id,'status'=>0))->find();
if(empty($info)){
$this->redirect('Member/myRecharge','',0,'参数错误');
}
$user_id= $_SESSION['user_id'];
$user_info=D('Member')->where(['id'=>$user_id])->find();
$this->pay($user_info,$info['order_no'],$info['money'],'充值','101001');
}
public function pay($user_info,$no_order,$money_order,$name_goods,$busi_partner){
$llpay_config= $this->config();
// $_POST['no_order'] = 'qbcz' . date('YmdHis', time()) . rand(1111, 9999);//商户订单号
// $_POST['name_goods'] = "钱包充值";//商品名称
// $_POST['pay_type'] = "银联支付";//支付方式
// $_POST['card_no'] = "6214855717504522";//支付卡号
/* *
* 功能:连连支付WEB交易接口接入页
* 版本:1.0
* 修改日期:2014-06-17
* 说明:
* 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。
*/
Vendor ("webllpay.lib.llpay_submit");
/**************************请求参数**************************/
//商户用户唯一编号
$user_id = $user_info['id'];
//支付类型
$busi_partner = $busi_partner;
//商户订单号
$no_order = $no_order;
//商户网站订单系统中唯一订单号,必填
//付款金额
$money_order = $money_order;
//必填
//商品名称
$name_goods = $name_goods;
//订单地址
$url_order = $_POST['url_order'];
//订单描述
$info_order = $info_order;
//银行网银编码
$bank_code = $_POST['bank_code'];
//支付方式
$pay_type = 'D';//认证支付
//$pay_type = '';
//卡号
$card_no = $_POST['card_no'];
//姓名
$acct_name = $user_info['realname'];
//身份证号
$id_no = $user_info['card_id'];
//协议号
$no_agree = $_POST['no_agree'];
//修改标记
$flag_modify = $_POST['flag_modify'];
//风险控制参数
$a['frms_ware_category']=2026;
$a['user_info_mercht_userno']=$user_info['id'];//用户id
$a['user_info_dt_register']=date('YmdHis',$user_info['addtime']);//注册时间
$a['user_info_mercht_userno']=$user_info['telephone'];//手机号
$a['user_info_identify_state']=1;//是否实名认证
$a['user_info_identify_type ']=2;
$a['user_info_full_name']=$user_info['realname'];
$a['user_info_id_no']=$user_info['card_id'];
$risk_item =json_encode($a,JSON_UNESCAPED_UNICODE);
//分账信息数据
$shareing_data = $_POST['shareing_data'];
//返回修改信息地址
$back_url = $_POST['back_url'];
//订单有效期
$valid_order = $_POST['valid_order'];
//服务器异步通知页面路径
$notify_url = "服务器异步通知地址/notify_url.html";
//需http://格式的完整路径,不能加?id=123这类自定义参数
//页面跳转同步通知页面路径
$return_url = "服务器同步通知页面";
//需http://格式的完整路径,不能加?id=123这类自定义参数,不能写成http://localhost/
/************************************************************/
date_default_timezone_set('PRC');
//构造要请求的参数数组,无需改动
$parameter = array (
"version" => trim($llpay_config['version']),
"oid_partner" => trim($llpay_config['oid_partner']),
"sign_type" => trim($llpay_config['sign_type']),
"userreq_ip" => trim($llpay_config['userreq_ip']),
"id_type" => trim($llpay_config['id_type']),
"valid_order" => trim($llpay_config['valid_order']),
"user_id" => $user_id,
"timestamp" => local_date('YmdHis', time()),
"busi_partner" => $busi_partner,
"no_order" => $no_order,
"dt_order" => local_date('YmdHis', time()),
"name_goods" => $name_goods,
"info_order" => $info_order,
"money_order" => $money_order,
"notify_url" => $notify_url,
"url_return" => $return_url,
"url_order" => $url_order,
"bank_code" => $bank_code,
"pay_type" => $pay_type,
"no_agree" => $no_agree,
"shareing_data" => $shareing_data,
"risk_item" => $risk_item,
"id_no" => $id_no,
"acct_name" => $acct_name,
"flag_modify" => $flag_modify,
"card_no" => $card_no,
"back_url" => $back_url
);
//建立请求
$llpaySubmit = new \LLpaySubmit($llpay_config);
$html_text = $llpaySubmit->buildRequestForm($parameter, "post", "确认");
echo $html_text;
}
/**
异步回调
**/
public function notify_url(){
/* *
* 功能:连连支付服务器异步通知页面
* 版本:2.0
* 日期:2014-10-16
* 说明:
* 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。
*************************页面功能说明*************************
* 创建该页面文件时,请留心该页面文件中无任何HTML代码及空格。
* 该页面不能在本机电脑测试,请到服务器上做测试。请确保外部可以访问该页面。
*/
Vendor ("webllpay.lib.llpay_notify");
Vendor ("webllpay.lib.llpay_cls_json");
//计算得出通知验证结果
$llpayNotify = new \LLpayNotify($this->config());
$str = file_get_contents("php://input");
file_put_contents("llpay.txt",$str.PHP_EOL,FILE_APPEND);
$verify_result = $llpayNotify->verifyNotify();
file_put_contents("12.txt",$llpayNotify->result);
if ($llpayNotify->result) { //验证成功
//获取连连支付的通知返回参数,可参考技术文档中服务器异步通知参数列表
$no_order = $llpayNotify->notifyResp['no_order'];//商户订单号
$oid_paybill = $llpayNotify->notifyResp['oid_paybill'];//连连支付单号
$result_pay = $llpayNotify->notifyResp['result_pay'];//支付结果,SUCCESS:为支付成功
$money_order = $llpayNotify->notifyResp['money_order'];// 支付金额
if($result_pay == "SUCCESS"){
//请在这里加上商户的业务逻辑程序代(更新订单状态、入账业务)
M()->startTrans();
$re=M("Money_order")->where(array('status'=>0,'order_no'=>$no_order))->setField('status',1);
if(!$re){
M()->rollback();
}
//充值成功添加流水记录
$money_order_res = M("Money_order")->where(array("status"=>1,"order_no"=>$no_order))->field("id,user_id,money,way")->find();
if ($money_order_res) {
//20171024 zj 修改 充值时进入钱包余额立马转入策略余额
$mem = M("Member")->where(array("id"=>$money_order_res['user_id']))->field("id,wallet,celue_wallet")->find();
//增加充值钱包记录
$my_map = array();
$my_map['wallet'] = $mem['wallet'] + $money_order_res['money'];
$map = array();
$map['user_id'] = $money_order_res['user_id'];//用户id
$map['type'] = 1;//收入
$map['amount'] = $money_order_res['money'];//交易金额
$map['way'] = $money_order_res['way'];//支付方式 1连连付
$map['posttime'] = time();//时间
$map['cate'] = 8;// 充值
$map['status'] = 1;//1 已同意 2已拒绝 3未审核',
$map['wallet'] = $my_map['wallet'];//当前余额
$money_water_res = M("money_water")->add($map);
//钱包转策略余额
$mycelue_map = array();
$mycelue_map['celue_wallet'] = $mem['celue_wallet'] + $money_order_res['money'];
$map1 = array();
$map1['user_id'] = $money_order_res['user_id'];//用户id
$map1['type'] = 2;//支出
$map1['amount'] = $money_order_res['money'];//交易金额
$map1['way'] = 4;//支付方式 余额支付
$map1['way_name'] = "钱包转策略余额";//支付介绍
$map1['posttime'] = time();//时间 $map1['cate'] = 14;// 钱包转策略余额
$map1['status'] = 1;//1 已同意 2已拒绝 3未审核',
$map1['wallet'] = $mem['celue_wallet'];//当前策略余额
$money_water_res1 = M("money_water")->add($map1);
$mem_res = M("member")->where(array("id"=>$money_order_res['user_id']))->save($mycelue_map);
// $sql= M("member")->getlastsql();
// file_put_contents("sql.txt", $sql, FILE_APPEND);
if (!$money_water_res || !$mem_res) {
M()->rollback();
file_put_contents("log.txt", "异步通知 修改用户金额失败\n", FILE_APPEND);
die("{'ret_code':'9999','ret_msg':'修改用户金额失败'}");
}
}else{
M()->rollback();
file_put_contents("log.txt", "异步通知 获取用户金额失败\n", FILE_APPEND);
die("{'ret_code':'9999','ret_msg':'获取用户金额失败'}");
}
M()->commit();
file_put_contents("log.txt", "异步通知 验证成功\n", FILE_APPEND);
die("{'ret_code':'0000','ret_msg':'交易成功'}"); //请不要修改或删除
//——请根据您的业务逻辑来编写程序——
//payAfter($llpayNotify->notifyResp);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
} else {
file_put_contents("log.txt", "异步通知 验证失败\n", FILE_APPEND);
//验证失败
die("{'ret_code':'9999','ret_msg':'验签失败'}");
//调试用,写文本函数记录程序运行情况是否正常
//logResult("这里写入想要调试的代码变量值,或其他运行的结果记录");
}
}
连连支付
猜你喜欢
转载自blog.csdn.net/weixin_38112233/article/details/80257915
今日推荐
周排行