dlh_test_server/app/api/controller/Gh.php
2024-11-11 16:41:45 +08:00

266 lines
12 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace app\api\controller;
use app\common\basics\Api;
use app\common\server\JsonServer;
use app\common\model\user\User;
use app\common\model\user\UserAuth;
use IcbcConstants;
use think\App;
use think\Request;
use DefaultIcbcClient;
use UiIcbcClient;
use think\facade\Db;
use weixin\Getopenid;
use app\api\logic\DistributionLogic;
use app\common\model\distribution\DistributionOrderGoods;
use app\common\model\AccountLog;
use think\facade\Log;
include_once "../vendor/icbc-api-sdk-cop-php/DefaultIcbcClient.php";
include_once "../vendor/icbc-api-sdk-cop-php/UiIcbcClient.php";
class Gh extends Api
{
private $APP_ID = '11000000000000026359';
private $url = 'https://gw.open.icbc.com.cn/api/mybank/enterprise/pay/payent/V1';
private $PRI_KEY = "MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQC9Soh5U2wx4YQJUaXn80cuHzmZl8p+07yUwl5jawuS88zy6lyPav32ZrsTfQQZv4uqfYCA4oT+BIQE6Segd5yd90FcGHH/vYb9b7JLZxslUGiuXuD6u9ULPt3Upgy9IROq8ghyhBFas3rfNl48Hh0L5WKADYb3Ywi/CqbSKUe4hVJ22GbrGz1eMwZxMD2yveHsmFrsNTYTiy3u+kASk479iYkVxOoobwMMv+1BsnmrAqs5uJt+LVcR2qmLJE0Gyog+CvRI2MORIcYvu8yzwkJu2gsZTVr6yl3WyKv5Mh+79dloimP6YHJWvlmpu77BUsBSofCttPAkEsWG57Rfrft3AgMBAAECggEASpxePrRLKT4itSmho1OY8u0L3yadgnAjHN+gJL/EyB+g4P7PjRg3EjBb/MqCG0QM4R6m0CZ5FUbiYq0kGXQMH5eeA5b/GDa0RqEIPgBeCs8u88wiEbKHvu8AsRjiXIn1HqRYAAtea8ni3KipbDjSaiX4NVEfqdM3V1Xze1MaGfiFgs2artnUw3ZgiUeEIJxpuqwplXsUeZBKm88XNo7mfBfBvP3VFq9HF4O6Lo01SfCn+DWQfEpiRoS7xHfPhxnkggNdr4OMzUg7DV1xTJpX5FeeakuVO4CkyRBrjIR1W6Eq7HeAsoNoPK1OdoBN4zP77H0zW7RT0D8EImfkJKgpwQKBgQDZHH+zD6gvrlReN8DBt0wUksaQ3vAIlXrBIpshPDMvFpqBMQ2SIuMWx9CGiTX4iMAtdQR7cHG2lDwnyv6wjE4lejAZ0E3eHiQJsvA41pbZzenbiilLTv92Ea2PgR8V/qXxIyafedD3Xec7BilmOm+h33ZIo4v8MFjy83FT3H9vswKBgQDfMluU5K49rdtJpRlpCFywqPac7KOpcVT2T6UYmPO1fxek+3lnhB2qFMiJWBYI30mHRglERFRWWoHdEir2eUhXY5u/kN6ncVsMHCVqslJKmBBEeHJRFl41IbwByBHAPqKIcXI5lLyQdNxmgnG3tZDBDTQPz2pdbjARMb9o3wbDLQKBgQDX7bwjvoKrSVqnihOvljmYjJHoK5HXN7OqulxHJbRSNMzdiIfSu9fXJEuEQprm4Dsh+qvGiQLPb4aUnRPJSwG9zFRimAWZz6hP7SN1pBbL8DuSGUsQlzUDnHldrDHakjVAKpGTMnheTYpX7bzm619zQuhFPkNPQlZ06yHfIgGseQKBgQCXi4enNwYflvY3sMPqDuVwhai8r+gH2o2HmFhOtTt0VlDlkmHCKXBC1U28A3UinQk9sg4ErihdYaKfSgClzX+S5m0PyvuC0XKybEHzihRZ1ZnmA6oK6JcamEchJoj28RBGeFDIS/ckVlR3vcYcqEka6y4YNgrQWUqFwjNmr1fWGQKBgQDGFD2O3/2MH068DMTskQWWoJWV1Isvst+oXBgERKkh5A/BYAAaw9kb+tKke/czulajRizv+nhstPQ2d/701QmdLCK6rK05SEChctaq7Cxk2QRRWHznYPqmJHPkuUXqg5LaOa81UDlGKDK1ylljppZOONlLtm00k6s5fLOe1SRfJg==";
private $APIGW_PUBLIC_KEY = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvUqIeVNsMeGECVGl5/NHLh85mZfKftO8lMJeY2sLkvPM8upcj2r99ma7E30EGb+Lqn2AgOKE/gSEBOknoHecnfdBXBhx/72G/W+yS2cbJVBorl7g+rvVCz7d1KYMvSETqvIIcoQRWrN63zZePB4dC+VigA2G92MIvwqm0ilHuIVSdthm6xs9XjMGcTA9sr3h7Jha7DU2E4st7vpAEpOO/YmJFcTqKG8DDL/tQbJ5qwKrObibfi1XEdqpiyRNBsqIPgr0SNjDkSHGL7vMs8JCbtoLGU1a+spd1sir+TIfu/XZaIpj+mByVr5Zqbu+wVLAUqHwrbTwJBLFhue0X637dwIDAQAB";
private $signType = "RSA2";
private $apiClient;
private $shop_appid = "wx586d77b9edb0636d";
public function __construct(\think\App $app){
parent::__construct($app);
$this->apiClient = new \DefaultIcbcClient(
$this->APP_ID,
$this->PRI_KEY,
$this->signType,
'UTF-8',
'',
$this->APIGW_PUBLIC_KEY,
'',
'',
'',
''
);
}
// 工行支付
public function pay($user_id="979",$money="1",$decive_info="111",$type=0,$partner_id,$type_id){
$merchant = 70; //商户获取金额比例
$our = 5; //服务费
$other = 3; // 其他分销推广人员费用
$user_billions = 22; // 其他+服务费
$user_msg = UserAuth::where("user_id",$user_id)->find();
$msg_id = $this->getMsgId();
// var_dump($msg_id);
$out = "dlh".time().$user_id;
$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";
$userAccount = "";
$order_num = 3;
if($type != 0){
$userAccount = $this->userAccount($user_id,$out,$money,$merchant,$user_msg);
$order_num = 4;
}
$basic = $this->basic($user_id,$out,$money,$our,$user_msg);
$general1 = $this->general1($user_id,$out,$money,$other,$user_msg);
$general2 = $this->general2($user_id,$out,$money,$user_billions,$user_msg);
$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"=>$this->shop_appid,
"icbc_appid"=>$this->APP_ID,
"open_id"=>$user_msg['openid'],
"expire_time"=>"300",
"is_suborder"=>"1",
"order_num"=>$order_num,
"order_submit_act_input"=>array(
$basic,
$general1,
$general2
)
),
'extraParams'=>[]
];
$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'] = $this->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);
$res = $this->apiClient->execute($request,$msg_id,"");
$result = json_decode($res,true);
print_r("<pre>");
var_dump($result);
$r = json_decode($result['wx_data_package'],true);
$r['nonceStr'] = $r['noncestr'];
$r['timeStamp'] = $r['timestamp'];
$r['paySign'] = $r['sign'];
return JsonServer::success('查询成功',$r);
}
public function getMsgId(){
return substr(md5("donglonghui".time().mt_rand(1,1000000)),8,13);
}
// 用户账户
public function userAccount($user_id,$out,$money,$merchant,$user_msg){
$out1 = "dlh".time().$user_id."1";
$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);
return 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)
);
}
// 基本户
public function basic($user_id,$out,$money,$our,$user_msg){
$out2 = "dlh".time().$user_id."2";
$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);
return 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)
);
}
// 一般户1
public function general1($user_id,$out,$money,$other,$user_msg){
$out3 = "dlh".time().$user_id."3";
$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);
return 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)
);
}
// 一般户2
public function general2($user_id,$out,$money,$user_billions,$user_msg){
$out4 = "dlh".time().$user_id."4";
$data4['rec_num'] = "4";
$data4['seq_no'] = $out;
$data4['sub_order_id'] = $out4;
$data4['oper_flag'] = "0";
$data4['busi_type'] = "1";
$data4['sub_mer_id'] = "120448160203";
$data4['sub_mer_prtcl_no'] = "1204481602030201";
$data4['classify_amt'] = $money*$user_billions;
$data4['user_id'] = $user_id;
$data4['open_id'] = $user_msg['openid'];
$data4['dtime'] = date("Y-m-d H:i:s");
$rest = Db::name("abutment_log")->save($data4);
return array(
"rec_num"=>"4",
"sub_order_id"=>$out4,
"oper_flag"=>"0",
"busi_type"=>"1",
"ori_mer_id"=>"120448160200",
"seq_no"=>$out,
"mer_acct"=>"1204064419000115357",
"ori_trx_date"=>date("Y-m-d"),
"sub_mer_id"=>"120448160203",
"sub_mer_prtcl_no"=>"1204481602030201",
"classify_amt"=>strval($money*$user_billions)
);
}
}