apiClient = new \DefaultIcbcClient( $this->APP_ID, $this->PRI_KEY, $this->signType, 'UTF-8', '', $this->APIGW_PUBLIC_KEY, '', '', '', '' ); } public function payTest($user_id="979",$money="1",$decive_info="111"){ $merchant = 60; //商户获取金额比例 $our = 5; //服务费 $other = 35; // 其他分销推广人员费用 $all_other = 40; // 其他+服务费 $user_msg = UserAuth::where("user_id",$user_id)->find(); $msg_id = $this->getMsgId(); // var_dump($msg_id); $out = "dlh".time().$user_id; $out1 = "dlh".time().$user_id."1"; $out2 = "dlh".time().$user_id."2"; $out3 = "dlh".time().$user_id."3"; $ip = ''; if (isset($_SERVER['HTTP_CLIENT_IP']) && $_SERVER['HTTP_CLIENT_IP'] != 'unknown') { // 判断是否有HTTP_CLIENT_IP这个请求头,存在优先使用 $ip = $_SERVER['HTTP_CLIENT_IP']; } elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && $_SERVER['HTTP_X_FORWARDED_FOR'] != 'unknown') { // 判断是否有HTTP_X_FORWARDED_FOR这个请求头,存在优先使用 $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; } elseif (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] != 'unknown') { // 获取REMOTE_ADDR这个服务器变量 $ip = $_SERVER['REMOTE_ADDR']; } $orig_date_time = date("Y-m-d\TH:i:s"); $mer_url = "https://dlh.hainings.com/index/index/localReturn"; $shop_appid = "wx586d77b9edb0636d"; $request = [ 'serviceUrl' => 'https://gw.open.icbc.com.cn/api/cardbusiness/aggregatepay/b2c/online/consumepurchase/V2', 'method' => 'POST', 'isNeedEncrypt'=>false, 'biz_content' => array( "mer_id"=>"120448160200", "ser_id"=>"120400005722", "out_trade_no"=>$out, "pay_mode"=>"9", "access_type"=>"9", "mer_prtcl_no"=>"1204481602000201", "orig_date_time"=>$orig_date_time, "decive_info"=>$decive_info, "body"=>"东龙汇", "fee_type"=>"001", "spbill_create_ip"=>$ip, "total_fee"=>strval($money*100), "mer_url"=>$mer_url, "notify_type"=>"HS", "shop_appid"=>$shop_appid, "icbc_appid"=>$this->APP_ID, "open_id"=>$user_msg['openid'], "expire_time"=>"300", "is_suborder"=>"1", "order_num"=>"3", "order_submit_act_input"=>array( array( "rec_num"=>"1", "sub_order_id"=>$out1, "oper_flag"=>"0", "busi_type"=>"1", "ori_mer_id"=>"120448160200", "seq_no"=>$out, "mer_acct"=>"1911025009202050845", "ori_trx_date"=>date("Y-m-d"), "sub_mer_id"=>"120448160198", "sub_mer_prtcl_no"=>"1204481601980201", "classify_amt"=>strval($money*$merchant) ), array( "rec_num"=>"2", "sub_order_id"=>$out2, "oper_flag"=>"0", "busi_type"=>"1", "ori_mer_id"=>"120448160200", "seq_no"=>$out, "mer_acct"=>"1204068809100138961", "ori_trx_date"=>date("Y-m-d"), "sub_mer_id"=>"120448160201", "sub_mer_prtcl_no"=>"1204481602010201", "classify_amt"=>strval($money*$our) ), array( "rec_num"=>"3", "sub_order_id"=>$out3, "oper_flag"=>"0", "busi_type"=>"1", "ori_mer_id"=>"120448160200", "seq_no"=>$out, "mer_acct"=>"1204064019200152507", "ori_trx_date"=>date("Y-m-d"), "sub_mer_id"=>"120448160202", "sub_mer_prtcl_no"=>"1204481602020201", "classify_amt"=>strval($money*$other) ) ) ), 'extraParams'=>[] ]; // $res = $this->apiClient->execute($request,$msg_id,""); // print_r("
");
// var_dump($request);
$data['mer_id'] = "120448160200";
$data['ser_id'] = "120400005722";
$data['out_trade_no'] = $out;
$data['pay_mode'] = "9";
$data['access_type'] = "9";
$data['mer_prtcl_no'] = "1204481602000201";
$data['orig_date_time'] = $orig_date_time;
$data['spbill_create_ip'] = $ip;
$data['decive_info'] = $decive_info;
$data['total_fee'] = $money;
$data['fee_type'] = "001";
$data['mer_url'] = $mer_url;
$data['notify_type'] = "HS";
$data['shop_appid'] = $shop_appid;
$data['icbc_appid'] = $this->APP_ID;
$data['user_id'] = $user_id;
$data['open_id'] = $user_msg['openid'];
$data['dtime'] = date("Y-m-d H:i:s");
$rest = Db::name("abutment_log")->save($data);
$data1['rec_num'] = "1";
$data1['seq_no'] = $out;
$data1['sub_order_id'] = $out1;
$data1['oper_flag'] = "0";
$data1['busi_type'] = "1";
$data1['sub_mer_id'] = "120448160198";
$data1['sub_mer_prtcl_no'] = "1204481601980201";
$data1['classify_amt'] = $money*$merchant;
$data1['user_id'] = $user_id;
$data1['open_id'] = $user_msg['openid'];
$data1['dtime'] = date("Y-m-d H:i:s");
$rest = Db::name("abutment_log")->save($data1);
$data2['rec_num'] = "2";
$data2['seq_no'] = $out;
$data2['sub_order_id'] = $out2;
$data2['oper_flag'] = "0";
$data2['busi_type'] = "1";
$data2['sub_mer_id'] = "120448160201";
$data2['sub_mer_prtcl_no'] = "1204481602010201";
$data2['classify_amt'] = $money*$our;
$data2['user_id'] = $user_id;
$data2['open_id'] = $user_msg['openid'];
$data2['dtime'] = date("Y-m-d H:i:s");
$rest = Db::name("abutment_log")->save($data2);
$data3['rec_num'] = "3";
$data3['seq_no'] = $out;
$data3['sub_order_id'] = $out3;
$data3['oper_flag'] = "0";
$data3['busi_type'] = "1";
$data3['sub_mer_id'] = "120448160202";
$data3['sub_mer_prtcl_no'] = "1204481602020201";
$data3['classify_amt'] = $money*$other;
$data3['user_id'] = $user_id;
$data3['open_id'] = $user_msg['openid'];
$data3['dtime'] = date("Y-m-d H:i:s");
$rest = Db::name("abutment_log")->save($data3);
// print_r("");
// var_dump($request);die;
$res = $this->apiClient->execute($request,$msg_id,"");
$result = json_decode($res,true);
// print_r("");
// var_dump($result);
$r = json_decode($result['wx_data_package'],true);
return JsonServer::success('查询成功',$r);
}
public function payTestCheck(){
$user_id = 1;
$msg_id = $this->getMsgId();
// $out = "dlh".time().$user_id;
$request = [
'serviceUrl' => 'https://gw.open.icbc.com.cn/api/cardbusiness/aggregatepay/b2c/online/orderqry/V2',
'method' => 'POST',
'isNeedEncrypt'=>false,
'biz_content' => array(
"mer_id"=>"120448160200",
"deal_flag"=>'0',
"out_trade_no"=>"dlh1722218442979",
"order_id"=>"120448160200000562407290003182",
"mer_prtcl_no"=>"1204481602000201",
"icbc_appid"=>$this->APP_ID
),
'extraParams'=>[]
];
print_r("");
var_dump($request);
$res = $this->apiClient->execute($request,$msg_id,"");
// var_dump($res);
// $result = json_decode($res,true);
$result = json_decode($res,true);
// print_r("");
var_dump($result);
$r = json_decode($result['order_submit_act_output'],true);
var_dump($r);
}
// 拆分子订单
public function chaifen(){
$user_id = 979;
$out1 = "dlh".$user_id."1".time().rand(100,1);
$out2 = "dlh".$user_id."2".time().rand(100,1);
$out3 = "dlh".$user_id."3".time().rand(100,1);
$merchant = 60; //商户获取金额比例
$our = 5; //服务费
$other = 35; // 其他分销推广人员费用
$all_other = 40; // 其他+服务费
$msg_id = $this->getMsgId();
$money = 0.4;
// $out = "dlh".time().$user_id;
$request = [
'serviceUrl' => 'https://gw.open.icbc.com.cn/api/cardbusiness/aggregatepay/b2c/online/sersuborder/V1',
'method' => 'POST',
'isNeedEncrypt'=>false,
'biz_content' => array(
"mer_id"=>"120400005722",
// "out_trade_no"=>"dlh1722218442979",
"mer_prtcl_no"=>"1204481602000201",
"icbc_appid"=>$this->APP_ID,
"order_num"=>"3",
"order_submit_act_input"=>array(
array(
"rec_num"=>"1",
"sub_order_id"=>$out1,
"oper_flag"=>"0",
"busi_type"=>"2",
"ori_mer_id"=>"120448160200",
"seq_no"=>"120448160200000562407290003182",
// "seq_no"=>$out,
"mer_acct"=>"1911025009202050845",
"ori_trx_date"=>date("Y-m-d"),
"sub_mer_id"=>"120448160198",
"sub_mer_prtcl_no"=>"1204481601980201",
"classify_amt"=>strval(1)
),
array(
"rec_num"=>"2",
"sub_order_id"=>$out2,
"oper_flag"=>"0",
"busi_type"=>"2",
"ori_mer_id"=>"120448160200",
"seq_no"=>"120448160200000562407290003182",
// "seq_no"=>$out,
"mer_acct"=>"1204068809100138961",
"ori_trx_date"=>date("Y-m-d"),
"sub_mer_id"=>"120448160201",
"sub_mer_prtcl_no"=>"1204481602010201",
"classify_amt"=>strval(1)
),
array(
"rec_num"=>"3",
"sub_order_id"=>$out3,
"oper_flag"=>"0",
"busi_type"=>"2",
"ori_mer_id"=>"120448160200",
"seq_no"=>"120448160200000562407290003182",
// "seq_no"=>$out,
"mer_acct"=>"1204064019200152507",
"ori_trx_date"=>date("Y-m-d"),
"sub_mer_id"=>"120448160202",
"sub_mer_prtcl_no"=>"1204481602020201",
"classify_amt"=>strval(3)
)
)
),
'extraParams'=>[]
];
print_r("");
var_dump($request);
$res = $this->apiClient->execute($request,$msg_id,"");
var_dump($res);
// $result = json_decode($res,true);
$result = json_decode($res,true);
// print_r("");
var_dump($result);
}
// 退款
public function tuikuan(){
$user_id = 979;
$out1 = "dlh".time().$user_id."1";
$out2 = "dlh".time().$user_id."2";
$out3 = "dlh".time().$user_id."3";
$merchant = 60; //商户获取金额比例
$our = 5; //服务费
$other = 35; // 其他分销推广人员费用
$all_other = 40; // 其他+服务费
$msg_id = $this->getMsgId();
$money = 1;
// $out = "dlh".time().$user_id;
$request = [
'serviceUrl' => 'https://gw.open.icbc.com.cn/api/cardbusiness/aggregatepay/b2c/online/merrefund/V1',
'method' => 'POST',
'isNeedEncrypt'=>false,
'biz_content' => array(
"mer_id"=>"120448160200",
"outtrx_serial_no"=>$out1,
// "out_trade_no"=>"dlh1722239710979",
"order_id"=>"120448160200000562407290003182",
"ret_total_amt"=>100,
"trnsc_ccy"=>"001",
"mer_prtcl_no"=>"1204481602000201",
"icbc_appid"=>$this->APP_ID,
),
'extraParams'=>[]
];
print_r("");
var_dump($request);
$res = $this->apiClient->execute($request,$msg_id,"");
var_dump($res);
// $result = json_decode($res,true);
$result = json_decode($res,true);
// print_r("");
var_dump($result);
}
//解冻
public function jiedong(){
$msg_id = $this->getMsgId();
// $out = "dlh".time().$user_id;
$request = [
'serviceUrl' => 'https://gw.open.icbc.com.cn/api/mybank/mer/merin/thaw/V1',
'method' => 'POST',
'isNeedEncrypt'=>false,
'biz_content' => array(
"icbcOrderSubNo"=>"1",
"icbcOrderNo"=>"120448160200000582407190003112",
// "outAgreeNo"=>"1204481601980201"
"outAgreeNo"=>"1204481602010201"
// "outAgreeNo"=>"1204481602020201"
),
'extraParams'=>[]
];
print_r("");
var_dump($request);
$res = $this->apiClient->execute($request,$msg_id,"");
var_dump($res);
// $result = json_decode($res,true);
$result = json_decode($res,true);
// print_r("");
var_dump($result);
}
//解冻查询
public function jiedongCheck(){
$msg_id = $this->getMsgId();
// $out = "dlh".time().$user_id;
$request = [
'serviceUrl' => 'https://gw.open.icbc.com.cn/api/mybank/mer/merin/freezedtlquery/V1',
'method' => 'POST',
'isNeedEncrypt'=>false,
'biz_content' => array(
"queryType"=>"2",
"pageNum"=>"1",
"pageSize"=>"10",
"initFlag"=>"1",
"outAgreeNo"=>"1204481602000201",
"icbcOrderNo"=>"120448160200000562407290003182",
"icbcOrderSubNo"=>"0",
"startDate"=>"",
"endDate"=>""
),
'extraParams'=>[]
];
print_r("");
var_dump($request);
$res = $this->apiClient->execute($request,$msg_id,"");
var_dump($res);
// $result = json_decode($res,true);
$result = json_decode($res,true);
// print_r("");
var_dump($result);
}
public function code()
{
$code = $this->request->post('code');
// $invite_code = $this->request->post('invite_code',0);
$lid = $this->request->post('lid',0);
$local_user = Db::name("local_store")->where("lstore_id",$lid)->where("is_delete",0)->find();
if($local_user == null){
return JsonServer::error("无效店铺");
}
$local_user_msg = Db::name("user")
->where("id",$local_user['user_id'])
->where("del",0)
->where("disable",0)
->find();
if($local_user_msg == null){
return JsonServer::error("无效账号");
}
$invite_code = $local_user_msg['distribution_code'];
// trace('invite_code', $invite_code.'-'.$code);
if(isset($invite_code)){
if($invite_code !== 0){
$open=new Getopenid();
$info=$open->getAcc($code);
if(isset($info['openid'])) {
$openid = $info['openid'];
$user_msg = UserAuth::where("openid",$openid)->find();
$firend_msg = User::where("distribution_code",$invite_code)->find();
if($user_msg==null){
$divide_second_user_id = 0;
$divide_role_user_id = 0;
$firend_id = 0;
$is_d = Db::name("distribution")->where('user_id', $firend_msg['id'] )->where('is_distribution', 1 )->find();
if($is_d != null){
$firend_id = $firend_msg['id'];
if($firend_msg['divide_role_user_id']!==0){
$divide_role_user_id = $firend_msg['divide_role_user_id'];
}else{
if($firend_msg['first_leader'] !=0){
$divide_role_user_id = $firend_msg['first_leader'];
}else{
$divide_role_user_id = $firend_id;
}
}
if($firend_msg['regional_state'] === 1){
$divide_second_user_id = $firend_msg['id'];
}elseif($firend_msg['divide_second_user_id']!==0){
$divide_second_user_id = $firend_msg['divide_second_user_id'];
}
}
$data = [
'sn' => create_user_sn(),
'create_time' => time(),
"first_leader" => $firend_id,
'distribution_code' => generate_invite_code(),//分销邀请码
'is_distribution' => DistributionLogic::isDistributionMember(),
'client' => 1,
'is_new_user' => 1,
'user_ad_cret' => 1,
'divide_role_user_id' => $divide_role_user_id,
'divide_second_user_id'=>$divide_second_user_id
];
$user = User::create($data);
$user_id = $user->id;
$UserAuth = UserAuth::create([
"user_id"=>$user_id,
"openid"=>$openid,
"create_time"=>time(),
"client"=>1
]);
if($is_d != null){
$firend_id = $firend_msg['id'];
$dat['f_user_id'] = $firend_id;
$dat['user_id'] = $user_id;
$dat['ditme'] = date("Y-m-d H:i:s");
Db::name("user_firster")->save($dat);
}
//生成会员分销扩展表
DistributionLogic::createUserDistribution($user_id);
// 生成分销基础信息表
\app\common\logic\DistributionLogic::add($user_id);
$dt['user_id'] = $user_id;
return JsonServer::success('绑定上级成功',$dt);
}
$dt['user_id'] = $user_msg['user_id'];
return JsonServer::success('绑定上级成功',$dt);
}
}
}
return JsonServer::success('绑定上级成功',[]);
}
public function getMsgId(){
return substr(md5("donglonghui".time().mt_rand(1,1000000)),8,13);
}
public function abutmentContent(){
$data=[
"app_id"=> $this->app_id,
"timestamp"=>date("Y-m-dH:i:s"),
"notify_url"=>"https://dlh.hainings.com/index/index/localReturn"
];
ksort($data);
print("");
var_dump($data);
$data['msg_id'] = $this->getId("donglonghui",$data);
$data1 = http_build_query($data);
$url = "https://gw.open.icbc.com.cn/api/mybank/enterprise/pay/payent/V1";
$res = $this->curl_post($url,$data1);
// var_dump($res);
$data['sign'] = $res['sign'];
// var_dump($data);
$d=[
"channelFlag"=>2,
"empowerPhone"=>"18868040087",
"applyType"=>"00100",
"crftType1"=>"101",
"crftNo1"=>"914310236828465718"
];
$u = "https://gw.open.icbc.com.cn/api/mybank/cardbusiness/shop/MerRegistrationAdd/V1";
$d1= http_build_query($d);
$rest = $this->curl_post($u,$d1);
var_dump($rest);
}
public function changeGoods(){
$result = Db::name("goods")->where("shop_id",17)->select();
foreach($result as $key=>$value){
$r = Db::name("goods_item")->where("goods_id",$value['id'])->select();
foreach($r as $k=>$v){
$price = round($v['chengben_price']*1.7,2);
if($price < $v['price']){
Db::name("goods_item")->where("id",$v['id'])->update(["price"=>$price]);
}
if($price < $value['min_price']){
Db::name("goods")->where("id",$value['id'])->update(["min_price"=>$price]);
}
}
}
}
function getId($app_secret, $req_param=[])
{
// 排序所有请求参数
ksort($req_param);
$src_value = "";
// 按照key1value1key2value2...keynvaluen拼接
foreach ($req_param as $key => $value) {
$src_value .= ($key . $value);
}
//计算md5
return md5($app_secret . $src_value . $app_secret);
}
private function curl_post($url,$postdata){
$curl = curl_init(); // 启动一个CURL会话
curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检测
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Expect:'
)); // 解决数据包大不能提交
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
curl_setopt($curl, CURLOPT_POSTFIELDS, $postdata); // Post提交的数据包
curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循
curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
// curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查
$tmpInfo = curl_exec($curl); // 执行操作
if (curl_errno($curl)) {
echo 'Errno' . curl_error($curl);
}
curl_close($curl); // 关键CURL会话
$tmpInfo=json_decode($tmpInfo,true);
return $tmpInfo;
}
}