首页
复制
搜索
前进
后退
重载网页
和我当邻居
给我留言吧
首页
统计
关于
WOW怀旧
友链
更多
留言
壁纸
直播
Search
1
关于《杀死那个石家庄人》背后的故事
3,498 阅读
2
摄影记录|鸿恩寺
477 阅读
3
沈阳故宫之旅
452 阅读
4
赤壁赋| 知不可乎骤得,托遗响于悲风
374 阅读
5
EasyWechat 微信小程序接入微信支付|笔记
288 阅读
编程技术
GoLang
Vue
PHP
Linux
Redis
网络安全
生活杂记
登录
Search
标签搜索
PHP
随笔
Mysql
Laravel-Admin
Laravel
摄影
设计模式
Ab
Linux
Javascript
MAC
支付
CentOs
sh
嘉陵江
南滨路
蓝易云
redis
万能青年
累计撰写
60
篇文章
累计收到
52
条评论
首页
栏目
编程技术
GoLang
Vue
PHP
Linux
Redis
网络安全
生活杂记
页面
统计
关于
WOW怀旧
友链
留言
壁纸
直播
搜索到
19
篇与
的结果
2022-02-28
笔记|Lumen请求webservice服务
首先封装一个请求方法 /** * @param $uri //webservice 地址 * @param $xml //xml主体 * @param $fuc //方法 * @param $data //请求参数 * @return false * */ public function sendSoap($uri, $xml,$fuc,$data) { ini_set("soap.wsdl_cache_enabled", 0); libxml_disable_entity_loader(false); $class_name = __CLASS__; try { $soap = new \SoapClient($uri, ['soap_version' => SOAP_1_2, "trace" => 1,'cache_wsdl' => 0, 'connection_timeout' => 10]); $soap->__setLocation($uri); logMessage('【SOAP请求:】' . $xml , $class_name); switch ($fuc) { case 'GetClinicItem': // 调用函数 $result_xml = $soap->__soapCall($fuc, []);//调用方式2 logMessage('【SOAP返回:】' . $result_xml->GetClinicItemResult, $class_name); return $result_xml->GetClinicItemResult; break; case 'GetClinicItemDetail': // 调用函数 $result_xml = $soap->__soapCall($fuc, $data);//调用方式2 logMessage('【SOAP返回:】' . $result_xml->GetClinicItemDetailResult, $class_name); return $result_xml->GetClinicItemDetailResult; break; } } catch (\SoapFault $fault) { logMessage('【SoapFault:】' . $fault->getMessage(), $class_name); return false; } catch (\Exception $exception) { logMessage('【SOAP报错:】' . $exception->getMessage(), $class_name); return false; } }调用此方法 $xml =<<<XML <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/"> <soapenv:Header/> <soapenv:Body> <tem:GetClinicItem/> </soapenv:Body> </soapenv:Envelope> XML; $result_xml = $this->sendSoap([webservice地址], $xml,[方法名],[传参]);踩坑传参是个二位数组 例如:$data=[['节点名称'=>'val']];有莫名其秒的报错时,可以加一下这两个配置在请求前ini_set("soap.wsdl_cache_enabled", 0); libxml_disable_entity_loader(false);
2022年02月28日
219 阅读
0 评论
0 点赞
2021-11-13
laravel-admin 资源访问强制https
修改 admin.php https配置为trueconfig/admin.php 'https' => true
2021年11月13日
181 阅读
0 评论
0 点赞
2021-11-13
laravel分页 | 笔记
$page = $request->get('page')?$request->get('page'):1; //页数 $show = $request->get('show')?$request->get('show'):15; // 每页显示 $res = DB::table(self::$table) ->where("", '', ) ->offset(($page-1)*$show)->limit($show)->get();
2021年11月13日
81 阅读
0 评论
0 点赞
2021-11-13
EasyWechat 微信小程序接入微信支付|笔记
环境要求{callout color="#f0ad4e"} PHP >= 7.4 PHP cURL 扩展 PHP OpenSSL 扩展 PHP SimpleXML 扩展 PHP fileinfo 拓展{/callout}安装$ composer require overtrue/wechat:~5.0 -vvv使用use EasyWeChat\Factory; // ------------------------ $config = [ // 必要配置 'app_id' => 'xxxx', //小程序ID 'mch_id' => 'your-mch-id', //商家ID 'key' => 'key-for-signature', // API 密钥 // 如需使用敏感接口(如退款、发送红包等)需要配置 API 证书路径(登录商户平台下载 API 证书) 'cert_path' => 'path/to/your/cert.pem', // XXX: 绝对路径!!!! 'key_path' => 'path/to/your/key', // XXX: 绝对路径!!!! 'notify_url' => '默认的订单回调地址', // 你也可以在下单时单独设置来想覆盖它 ]; // ------------------------ $app = Factory::payment($config); $res = $app->order->unify([ 'body' => $desc, //商品简介 'out_trade_no' => $order_code, //订单号 'total_fee' => floatval($info->pay_fee * 100), //价格 单位为分 'spbill_create_ip' => $_SERVER['REMOTE_ADDR'], // 可选,如不传该参数,SDK 将会自动获取相应 IP 地址 'notify_url' => $wx_config['notify_url'], // 支付结果通知网址,如果不设置则会使用配置里的默认地址 'trade_type' => 'JSAPI', // 请对应换成你的支付方式对应的值类型 'openid' => $user_info->openid, //用户的openid ]); // ------------------------ if ($res['return_code'] == 'FAIL') return $this->error_back(-1, '预支付请求失败' . $res['return_msg'], []); // ------------------------ $pay_time = time(); $appId = $res['appid']; $nonceStr = $res['nonce_str']; $prepay_id = $res['prepay_id']; $timeStamp = $pay_time; $key = $wx_config['md5_key']; // ------------------------ $paySign = md5("appId=$appId&nonceStr=$nonceStr&package=prepay_id=$prepay_id&signType=MD5&timeStamp=$timeStamp&key=$key"); // 这个地方就是我所说的二次签名! // ------------------------ // 返回给小程序 $re = []; $re['nonceStr'] = $nonceStr; $re['timeStamp'] = strval($timeStamp); // 小程序支付的timeStamp参数,必须使用这个 timeStamp,因为已经计算到了paySign中 $re['package'] = "prepay_id=" . $prepay_id; $re['paySign'] = $paySign; $re['signType'] = 'MD5'; // ------------------------ //自己的操作逻辑部分--- 然后返回给前端 // ------------------------ return $this->success_back(200, 'success', $re); 回调 /** * * 支付回调地址 */ public function NotifyPayApi(Request $request) { $wx_config = config("app.wx_pay"); $config = [ // 必要配置 'app_id' => $wx_config['app_id'], 'mch_id' => $wx_config['mch_id'], 'key' => $wx_config['md5_key'], // API 密钥 // 如需使用敏感接口(如退款、发送红包等)需要配置 API 证书路径(登录商户平台下载 API 证书) 'cert_path' => '', // XXX: 绝对路径!!!! 'key_path' => '', // XXX: 绝对路径!!!! 'notify_url' => $wx_config['notify_url'], // 你也可以在下单时单独设置来想覆盖它 ]; $app = Factory::payment($config); $response = $app->handlePaidNotify(function ($message, $fail) { if ($message['result_code'] == 'SUCCESS' && $message['return_code'] == 'SUCCESS') { $order_sn = $message['out_trade_no']; // 订单单号 $openid = $message['openid']; // 付款人openID $total_fee = ($message['total_fee']) / 100; // 付款金额 $transaction_id = $message['transaction_id']; // 微信支付流水号 $order_info = $this->FindOrderByOrderCode($order_sn); if (empty($order_info)) return false; // 更新订单 try { DB::beginTransaction(); //数据库逻辑 //插入流水 DB::commit(); return true; } catch (\Exception $e) { Db::rollBack(); return false; } } else { return false; } }); return $response; }就这么简单踩坑的地方就是拿到了 prepay_id 之后居然还要二次签名最后附上EasyWechat的官方地址 https://www.easywechat.com/5.x/payment/
2021年11月13日
288 阅读
0 评论
0 点赞
1
...
3
4