| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698 |
- <?php
- declare (strict_types=1);
- namespace app\traits;
- use think\facade\Log;
- /**
- * 海科商户入驻统一请求API
- * Trait HaikeApiRequest
- * @package app\traits
- */
- trait HaikeApiRequest
- {
- /**
- * 统一请求
- * @return bool|string
- * @author php迷途小书童
- * @created 2021/1/26 15:49
- */
- public static function request($data,$url){
- try {
- $data['accessid'] = env('HAIKE.ACCESSID');
- $accesskey = env('HAIKE.ACCESS_KEY');
- $sign = self::getSignContent($data,$accesskey);
- $data["sign"] = strtoupper($sign);
- return self::posturl($url,$data);
- } catch (\Throwable $e) {
- return $e->getMessage();
- }
- }
- /**
- * 申请商户
- * @return bool|string
- * @author php迷途小书童
- * @created 2021/1/20 15:49
- */
- public function merchantApply($merchant = []){
- $merchantData = [];
- switch ($merchant['type']) {
- case 2:
- $merch_type = "10A";
- $imageType = [
- "A1" => $merchant['credit_img'],//营业执照图片id
- ];
- $merchantData = [
- "bus_license_no"=> $merchant['credit_code'],//营业执照号
- ];
- break;
- case 1:
- $merch_type = "10B";
- $imageType = [
- "A1" => $merchant['credit_img'],//营业执照图片id
- ];
- $merchantData = [
- "bus_license_no"=> $merchant['credit_code'],//营业执照号
- ];
- break;
- case 3:
- $imageType = [
- "A7" => "57b9a9aca2bb41a7b35ea882945d230c",//合作协议(首页)图片id
- "A9" => $merchant['business_premises4'],//合作协议(盖章页)图片id
- ];
- $merch_type = "10C";
- break;
- }
- try {
- $data = [
- "agent_no" => env('HAIKE.AGENT_NO'),//服务商编号
- "agent_apply_no"=> $merchant['agent_apply_no'],//服务商申请单号
- "notify_url"=> env('APP_URL')."/api/merchant/apply_notice",//商户审核状态变更后的通知地址
- "merchant_data"=> $merchantData + [
- "legal_cert_type"=> "1",//法人证件类型
- "contact_phone" => $merchant['phone'],//联系人手机号
- "merch_type"=> $merch_type,//商户类型10A:个体工商户10B:企业10C:小微商户
- "shop_name"=> $merchant['mer_name'],//门店名称
- "contact_email"=> $merchant['email'],//联系人邮箱
- "merch_name"=> $merchant['mer_name'],//商户全称
- "ledger_receive_flag"=> $merchant["haike_receive_flag"],//参与分账业务的收账方标识0:否,1:是。如为空,则默认为:0(v1.18),即为分账方
- "contact_name"=> $merchant['name'],//联系人姓名
- "legal_cert_no"=> $merchant['legal_cert_no'],//法人证件号
- "bus_address"=> $merchant['business_addr'],//营业执照经营地址:详细地址
- "merch_short_name"=> $merchant['mer_short_name'],//商户简称
- "legal_name"=> $merchant['name'],//法人姓名
- "address"=> $merchant['addr'],//实际经营地址:详细地址
- "area_code"=> $merchant['area_code'],//实际经营地址:区代码
- "city_code"=> $merchant['city_code'],//实际经营地址:市代码
- "province_code"=> $merchant['province_code'],//实际经营地址:省代码
- "bus_area_code"=> $merchant['area_code'],//营业执照经营地址:区代码
- "bus_city_code"=> $merchant['city_code'],//营业执照经营地址:市代码
- "bus_province_code"=> $merchant['province_code'],//营业执照经营地址:省代码
- "bus_scope_code"=> "00010007"//营业范围代码
- ],
- "bankcard_data"=> [
- "acc_name"=> $merchant['acc_type'] == "10A" ? $merchant['mer_name'] : $merchant['name'],//结算账户名称
- "bank_code"=> $merchant['bank_code'],//结算账户清算行号
- "acc_type"=> $merchant['acc_type'],//结算类型10A:对公10B:对私
- "phone"=> $merchant['phone'],//预留手机号
- "acc_no"=> $merchant['bank_account'],//结算账户号
- "bank_name"=> $merchant['bank_branch'],//结算卡开户银行网点名称
- "idcard_no"=> $merchant['idcard_no'],//持卡人身份证号
- "bank_city_code"=> $merchant['bank_city_code'],//开户行网点 对应的市代码
- "bank_province_code"=> $merchant['bank_province_code'],//开户行网点 对应的省代码
- ],
- "image_data"=> $imageType + [
- "A2"=> $merchant['card_positive_person'],//法人身份证正面图片id
- "A3"=> $merchant['card_back_person'],//法人身份证反面图片id
- "A4"=> $merchant['card_positive_bank'],//结算卡正面/开户许可证(基本户)图片id
- "A5"=> $merchant['business_premises1'],//商户门头照图片id
- "A6"=> $merchant['business_premises2'],//营业场所室内照图片id
- "A31"=> $merchant['business_premises3'],//营业场所室内照2图片id
- ],
- ];
- switch ($merchant['is_again']) {
- case 0:
- $url = env('HAIKE.HOSTNAME')."/api/v1/merchant/apply";
- break;
- case 1:
- $url = env('HAIKE.HOSTNAME').'/api/v1/merchant/modify';
- $data['merch_no'] = $merchant['merch_no'];
- break;
- case 2:
- $url = env('HAIKE.HOSTNAME').'/api/v1/merchant-modify/apply';
- $data['merch_no'] = $merchant['merch_no'];
- // unset($data['image_data']);
- break;
- default:
- $url = '';
- break;
- }
- return self::request($data,$url);
- } catch (\Throwable $e) {
- Log::info($e->getMessage());
- return false;
- }
- }
- /**
- * 申请商户
- * @return bool|string
- * @author php迷途小书童
- * @created 2021/1/20 15:49
- */
- public function merchantModify($merchant = []){
- try {
- $data = [
- "agent_no" => env('HAIKE.AGENT_NO'),//服务商编号
- "agent_apply_no"=> $merchant['agent_apply_no'],//服务商申请单号
- "notify_url"=> env('APP_URL')."/api/merchant/apply_notice",//商户审核状态变更后的通知地址
- "merchant_data"=> [
- "merch_name"=> $merchant['mer_name'],//商户全称
- "merch_short_name"=> $merchant['mer_short_name'],//商户简称
- ],
- ];
- $url = env('HAIKE.HOSTNAME').'/api/v1/merchant-modify/apply';
- $data['merch_no'] = $merchant['merch_no'];
- return self::request($data,$url);
- } catch (\Throwable $e) {
- Log::info($e->getMessage());
- return false;
- }
- }
- /**
- * 微信二次认证
- * @return bool|string
- * @author php迷途小书童
- * @created 2021/1/28 17:33
- */
- public function wxAuthApply($merchant = [])
- {
- //SUBJECT_TYPE_ENTERPRISE:企业
- //SUBJECT_TYPE_INDIVIDUAL:个体工商户
- //SUBJECT_TYPE_MICRO:小微商户
- switch ($merchant['type']) {
- case 1:
- case 2:
- if ($merchant['type'] == 1) {
- $subject_type = "SUBJECT_TYPE_ENTERPRISE";
- } else {
- $subject_type = "SUBJECT_TYPE_INDIVIDUAL";
- }
- //主体信息
- $subject_info = [
- "subject_type" => $subject_type,
- "business_licence_info" => [//营业执照信息
- "licence_number" => $merchant['credit_code'],//营业执照注册号
- "licence_copy" => $merchant['credit_img'],//营业执照照片
- "merchant_name" => $merchant['mer_name'],//商户名称
- "legal_person" => $merchant['name'],//法人姓名
- "company_address" => $merchant['business_addr'],//注册地址
- "licence_valid_date" => ["1970-01-01","forever"]//营业执照有效日期
- ]
- ];
- break;
- case 3:
- //主体信息
- $subject_info = [
- "subject_type" => "SUBJECT_TYPE_MICRO",
- "assist_prove_info" => [
- "micro_biz_type" => "MICRO_TYPE_STORE",//营业执照有效日期
- "store_name" => $merchant['mer_name'],//门店名称
- "store_address_code" => $merchant['area_code'],//门店省市编码
- "store_address" => $merchant['addr'],//门店地址
- "store_header_copy" => $merchant['business_premises1'],//门店门头照片
- "store_indoor_copy" => $merchant['business_premises2'],//店内环境照片
- ]
- ];
- break;
- }
- $data = [
- "agent_no" => env('HAIKE.AGENT_NO'),//服务商编号
- "merch_no" => $merchant['merch_no'],//海科商户编号
- "wx_merch_no" => $merchant['wx_merch_no'],//微信商户编号
- "business_code" => $merchant['agent_apply_no'],//业务申请编号
- "contact_info" => [//联系人信息
- "name" => $merchant['name'],//联系人姓名
- "mobile" => $merchant['phone'],//联系人手机号
- "id_card_number" => $merchant['idcard_no'],//联系人身份证号码
- ],
- "subject_info" => $subject_info,
- "identification_info" => [
- "identification_type" => "IDENTIFICATION_TYPE_IDCARD",//法人证件类型
- "identification_name" => $merchant['name'],//证件姓名
- "identification_number" => $merchant['idcard_no'],//证件号码
- "identification_valid_date" => [$merchant['identification_valid_date_start'], $merchant['identification_valid_date_end']],//证件有效日期
- "identification_front_copy" => $merchant['card_positive_person'],//证件正面照片
- "identification_back_copy" => $merchant['card_back_person'],//证件反面照片
- ]
- ];
- $url = env('HAIKE.HOSTNAME')."/api/v1/wx-auth/apply";
- return self::request($data,$url);
- }
- /**
- * 获取商户开户意愿确认状态
- * @author php迷途小书童
- * @created 2021/1/29 19:38
- */
- public function queryMerchantAuthStatus($merchant)
- {
- $data = [
- "agent_no"=> env('HAIKE.AGENT_NO'),
- "merch_no"=> $merchant['merch_no'],
- "wx_merch_no"=> $merchant['wx_merch_no'],
- ];
- $url = env('HAIKE.HOSTNAME')."/api/v1/wx-auth/query-merchant-auth-status";
- return self::request($data,$url);
- }
- /**
- * 查询申请单审核结果
- * @author php迷途小书童
- * @created 2021/1/29 19:38
- */
- public function queryMerchantApplyStatus($business_code)
- {
- $data = [
- "agent_no"=> env('HAIKE.AGENT_NO'),
- "business_code"=> $business_code,
- ];
- $url = env('HAIKE.HOSTNAME')."/api/v1/wx-auth/query-apply-status";
- return self::request($data,$url);
- }
- /**
- * 结算方式申请及变更
- * @return bool|string
- * @author php迷途小书童
- * @created 2021/2/2 17:39
- */
- public function merchantWithdrawalSetting($merchant = [])
- {
- $settlement_cycle = $merchant['settlement_cycle'] ?? 'D1';
- $d0_riche_time = $merchant['d0_riche_time'] ?? '15';
- $data = [
- "agent_no"=> env('HAIKE.AGENT_NO'),
- "merch_no"=> $merchant['merch_no'],
- "settlement_cycle" => $settlement_cycle,
- 'd0_riche_time' => $d0_riche_time,
- "withdrawal_rate" => $settlement_cycle != 'D0' ? "0" : "0.2",
- "withdrawal_feemin" => "0",
- ];
- $url = env('HAIKE.HOSTNAME')."/api/v1/merchant-withdrawal/setting";
- return self::request($data,$url);
- }
- /**
- * 商户申请微信业务
- * @return bool|string
- * @author php迷途小书童
- * @created 2021/1/27 14:03
- */
- public function wxApply($merchant)
- {
- $data = [
- "agent_no"=> env('HAIKE.AGENT_NO'),
- "merch_no"=> $merchant['merch_no'],
- "agent_apply_no"=> $merchant['agent_apply_no'],
- "notify_url"=> $merchant['apply_notice'],
- "rate"=> $merchant['rate'],
- "channel_no"=> env('HAIKE.WX_CHANNEL_NO'),
- "settle_id"=> $merchant['haike_wx_type'],
- ];
- $url = env('HAIKE.HOSTNAME')."/api/v1/merchant-wx-biz/apply";
- return self::request($data,$url);
- }
- /**
- * 支付宝业务申请
- * @return bool|string
- * @author php迷途小书童
- * @created 2021/1/27 14:16
- */
- public function aliApply($merchant)
- {
- $data = [
- "agent_no"=> env('HAIKE.AGENT_NO'),
- "merch_no"=> $merchant['merch_no'],
- "agent_apply_no"=> $merchant['agent_apply_no'],
- "notify_url"=> $merchant['apply_notice'],
- "rate"=> $merchant['rate'],
- "mcc"=> "0742",
- "channel_no"=> env('HAIKE.ALI_CHANNEL_NO'),
- "business_id"=> $merchant['haike_ali_type'],
- ];
- $url = env('HAIKE.HOSTNAME')."/api/v1/merchant-ali-biz/apply";
- return self::request($data,$url);
- }
- /**
- * 查询审核信息
- * @return bool|string
- * @author php迷途小书童
- * @created 2021/1/27 14:16
- */
- public function bizQuery($apply = [])
- {
- $data = [
- "agent_no"=> env('HAIKE.AGENT_NO'),
- "agent_apply_no"=> $apply['agent_apply_no'],
- "apply_type"=> (string)$apply['apply_type'],
- ];
- $url = env('HAIKE.HOSTNAME')."/api/v1/merchant-biz/query";
- return self::request($data,$url);
- }
- /**
- * 查询商户申请信息
- * @return bool|string
- * @author php迷途小书童
- * @created 2021/1/27 13:55
- */
- public function merchantInfo($merchant = [])
- {
- $url = env('HAIKE.HOSTNAME')."/api/v1/sub/query-merchant-info";
- $data = [
- "agent_no"=> env('HAIKE.AGENT_NO'),
- "merch_no"=> $merchant['merch_no'],
- ];
- return self::request($data,$url);
- }
- /**
- * 配置微信公众号
- * @return bool|string
- * @author php迷途小书童
- * @created 2021/1/26 17:00
- */
- public function wxAppidConfAdd($merchant = [])
- {
- $url = env('HAIKE.HOSTNAME')."/api/v1/wx-appid-conf/add";
- $data = [
- "agent_no"=> env('HAIKE.AGENT_NO'),
- "merch_no"=> $merchant['merch_no'],
- "conf_key"=> "pay_appId",
- "conf_value"=> $merchant['wx_appid'],
- ];
- return self::request($data,$url);
- }
- /**
- * 微信公众号配置查询
- * @return bool|string
- * @author php迷途小书童
- * @created 2021/1/26 17:00
- */
- public function wxAppidQuery($merchant = [])
- {
- $url = env('HAIKE.HOSTNAME')."/api/v1/wx-appid-conf/query";
- $data = [
- "agent_no"=> env('HAIKE.AGENT_NO'),
- "merch_no"=> $merchant['merch_no'],
- ];
- return self::request($data,$url);
- }
- /**
- * 微信费率变更
- * @return bool|string
- * @author php迷途小书童
- * @created 2021/1/28 9:19
- */
- public function wxRateModify($merchant = [])
- {
- $url = env('HAIKE.HOSTNAME')."/api/v1/merchant-wx-rate/modify";
- $data = [
- "agent_no"=> env('HAIKE.AGENT_NO'),
- "merch_no"=> $merchant['merch_no'],
- "agent_apply_no"=> "pay_appId",
- "rate" => $merchant['wx_rate'],
- "notify_url"=> "wx66f5f8def2b755da",
- ];
- return self::request($data,$url);
- }
- /**
- * 支付宝费率变更
- * @return bool|string
- * @author php迷途小书童
- * @created 2021/1/28 9:19
- */
- public function aliRateModify($merchant = [])
- {
- $url = env('HAIKE.HOSTNAME')."/api/v1/merchant-ali-rate/modify";
- $data = [
- "agent_no"=> env('HAIKE.AGENT_NO'),
- "merch_no"=> $merchant['merch_no'],
- "agent_apply_no"=> "pay_appId",
- "rate" => $merchant['wx_rate'],
- "notify_url"=> "wx66f5f8def2b755da",
- ];
- return self::request($data,$url);
- }
- /**
- * 发起支付
- * @return bool|string
- * @author php迷途小书童
- * @created 2021/2/5 17:29
- */
- public function getJsapiPayGateway($order,$notify_url = '/api/jsapiPay/notify')
- {
- $url = env('HAIKE.HOSTNAME')."/api/v1/pay/polymeric/jsapipay";
- $data=[
- "accesskey"=> env('HAIKE.ACCESS_KEY'),
- "trade_type" => $order['trade_type'],//支付方式微信支付:WX 支付宝支付:ALI 银联二维码支付:UNIONQR
- "merch_no"=> (string)$order['merch_no'],//商户号
- "out_trade_no" => $order['out_trade_no'],//商户单号
- "total_amount" => (string)$order['money'],//超时时间
- "userid" => (string)$order['pay_user_id'],//(支付宝/微信/银联二维码)的用户唯一标识
- // "sn" => "WSY196",//厂商终端号
- // "pn" => "S0000053",//SAAS终端号
- "remark" => "扫码支付",//交易备注
- "goods_name" => "扫码支付",
- "notify_url" => env('APP_URL').$notify_url,
- ];
- if ($order['trade_type'] == 'WX') {
- $data['appid'] = (string)env('HAIKE.APPID');
- }
- if ($order['type'] == 'mp') {
- $data['appid'] = (string)$order['appid'];
- }
- if ($order['pension'] <= 0) unset($data["ledger_relation"][0]);
- if ($order['service_money'] <= 0) unset($data["ledger_relation"][0]);
- // if ($order['pension'] > 0 && $order['service_money'] > 0) {
- // $data["ledger_relation"] = [
- // [//养老金金额
- // "receive_no" => "833102358121117",
- // "amt" => $order['pension']
- // ],
- // [//服务商金额
- // "receive_no" => "833102358121123",
- // "amt" => $order['service_money']
- // ]
- // ];
- // }
- // if ($order['pension'] <= 0 && $order['service_money'] > 0) {
- // $data["ledger_relation"] = [
- // [//服务商金额
- // "receive_no" => "833102358121123",
- // "amt" => $order['service_money']
- // ]
- // ];
- // }
- // if ($order['pension'] > 0 && $order['service_money'] <= 0) {
- // $data["ledger_relation"] = [
- // [//养老金金额
- // "receive_no" => "833102358121117",
- // "amt" => $order['pension']
- // ]
- // ];
- // }
- //分账修改:养老金金额并入服务商金额,修改服务商分账账户为众兴未来
- $amt = $order['service_money'] + $order['pension'];
- $data["ledger_relation"] = [
- [//服务商金额
- "receive_no" => "833102358121117",
- "amt" => (string)$amt
- ]
- // ,[//养老金金额
- // "receive_no" => "833102358121117",
- // "amt" => $order['pension']
- // ]
- ];
- log::info('发起支付:'.json_encode($data));
- return self::request($data,$url);
- }
- /**
- * 查询订单API
- * @return bool|string
- * @author php迷途小书童
- * @created 2021/1/15 16:29
- */
- public function doQueryOrder($out_trade_no){
- $url = env('HAIKE.HOSTNAME')."/api/v1/pay/polymeric/query";
- $data=[
- "out_trade_no" => $out_trade_no
- ];
- $res=self::request($data,$url);
- return $res;
- }
- /**
- * 关闭订单API
- * @return bool|string
- * @author php迷途小书童
- * @created 2021/1/15 16:29
- */
- public function doCloseOrder($out_trade_no){
- $url = env('HAIKE.HOSTNAME')."/api/v1/pay/polymeric/closeorder";
- $data = [
- "out_trade_no" => $out_trade_no,
- ];
- return self::request($data,$url);
- }
- /**
- * 申请退款API
- * @return bool|string
- * @author php迷途小书童
- * @created 2021/1/15 16:32
- */
- public function doRefundApply($order){
- $url = env('HAIKE.HOSTNAME')."/api/v1/pay/polymeric/refund";
- $data=[
- "out_trade_no" => $order['out_trade_no'],
- "out_refund_no" => $order['refund_no'],
- "refund_amount" => $order['money'],
- "notify_url" => env('APP_URL')."/api/jsapiPay/refund_notify",
- ];
- return self::request($data,$url);
- }
- /**
- * 退款查询API
- * @return bool|string
- * @author php迷途小书童
- * @created 2021/1/15 16:32
- */
- public function doRefundQuery($refund_no){
- $url = env('HAIKE.HOSTNAME')."/api/v1/pay/polymeric/refundquery";
- $data=[
- "refund_no"=> $refund_no
- ];
- return self::request($data,$url);
- }
- /**
- * 账户余额查询
- * @return bool|string
- * @author php迷途小书童
- * @created 2021/1/15 16:31
- */
- public function doBalanceQuery($merch_no){
- $url = env('HAIKE.HOSTNAME')."/api/v1/account/balance_query";
- $data=[
- "merch_no"=> "833226358120003"
- ];
- return self::request($data,$url);
- }
- /**
- * base64图片上传
- * @return bool|string
- * @author php迷途小书童
- * @created 2021/1/26 15:50
- */
- public function uploadImg($base64)
- {
- $url = env('HAIKE.HOSTNAME')."/api/v1/merchant-image/upload";
- $data = [
- "image"=> $base64
- ];
- return self::request($data,$url);
- }
- /**
- * 回调处理
- * @return boolean
- * @author php迷途小书童
- * @created 2021/1/16 14:46
- */
- public function doNotify(array $data){
- $accesskey = env('HAIKE.ACCESS_KEY');
- $haikeSign = $data['sign'];
- unset($data['sign']);
- $sign = strtoupper(self::getSignContent($data,$accesskey));
- if ($sign != $haikeSign)
- return false;
- return true;
- }
- /**
- * 生成签名
- * @return string
- * @author php迷途小书童
- * @created 2021/1/26 15:50
- */
- public static function getSignContent($data,$secret_key){
- ksort($data);
- $arrayToBeSigned = [];
- foreach ($data as $key => $value){
- if (is_array($value)) {
- $sonString = self::sortString($value);
- $arrayToBeSigned[] = $key . "=" . $sonString;
- } else {
- if (true === self::checkEmpty($value)) continue;
- $arrayToBeSigned[] = $key . "=" . $value;
- }
- }
- $stringToBeSigned = implode("&",$arrayToBeSigned);
- return md5($stringToBeSigned.$secret_key);
- }
- /**
- * 校验$value是否非空
- * @return bool
- * @author php迷途小书童
- * @created 2021/1/26 15:53
- */
- public static function checkEmpty($value) {
- if (!isset($value)) return true;
- if ($value === null) return true;
- if (trim($value) === "") return true;
- return false;
- }
- /**
- * 字符排序
- * @return string
- * @author php迷途小书童
- * @created 2021/1/26 15:50
- */
- public static function sortString($value){
- ksort($value);
- $sonArrayToBeSigned = [];
- if (is_array($value)) {
- if (array_keys($value) === range(0, count($value) - 1)) {
- if (!is_array($value[0])) {
- foreach ($value as $kindex => $vindex){
- $sonArrayToBeSigned[] =$vindex;
- }
- return implode("&", $sonArrayToBeSigned);
- }
- }
- }
- foreach ($value as $k => $v){
- if (is_array($v)) {
- $sonString = self::sortString($v);
- if (!is_numeric($k)) {
- $sonArrayToBeSigned[] = $k . "=" . $sonString;
- } else {
- $sonArrayToBeSigned[] = $sonString;
- }
- } else {
- if (true === self::checkEmpty($v)) continue;
- $sonArrayToBeSigned[] = $k . "=" . $v;
- }
- }
- return implode("&", $sonArrayToBeSigned);
- }
- /**
- * @return bool|string
- * @author php迷途小书童
- * @created 2021/1/15 16:32
- */
- public static function posturl($url,$data){
- $json = json_encode($data, JSON_UNESCAPED_UNICODE);
- $removeUrl = env('HAIKE.HOSTNAME')."/api/v1/merchant-image/upload";
- if ($url != $removeUrl)
- Log::info('【'.$url.'】:'.$json);
- $headerArray =array("Content-type:application/json;charset='utf-8'","Accept:application/json");
- $curl = curl_init();
- curl_setopt($curl, CURLOPT_URL, $url);
- curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
- curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,FALSE);
- curl_setopt($curl, CURLOPT_POST, 1);
- curl_setopt($curl, CURLOPT_POSTFIELDS, $json);
- curl_setopt($curl,CURLOPT_HTTPHEADER,$headerArray);
- curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($curl, CURLOPT_MAXREDIRS, 10);
- curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
- $output = curl_exec($curl);
- curl_close($curl);
- return json_decode($output, true);
- }
- }
|