From 1f05621a1a608f2581c127664c0ae4d1b48fd10b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9E=97=E4=B8=80=E5=B3=B0?= <1feng.0595@gmail.com> Date: Thu, 9 Nov 2017 01:08:44 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E6=94=AF=E4=BB=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/Weixin/UserController.php | 11 ++-- .../Controllers/Weixin/WxPayController.php | 57 ++++++++++++++++++- resources/org/wxpay/WxPayConfig.php | 18 +++--- resources/org/wxpay/WxPayPubHelper.class.php | 7 +-- .../user/userRechargeOrderDetail.blade.php | 20 +++---- 5 files changed, 81 insertions(+), 32 deletions(-) diff --git a/app/Http/Controllers/Weixin/UserController.php b/app/Http/Controllers/Weixin/UserController.php index 72f331a..bc111ce 100644 --- a/app/Http/Controllers/Weixin/UserController.php +++ b/app/Http/Controllers/Weixin/UserController.php @@ -78,9 +78,10 @@ class UserController extends CommonController require_once(resource_path('org/wxpay/WxPayConfig.php')); // 导入微信配置类 require_once(resource_path('org/wxpay/WxPayPubHelper.class.php')); // 导入微信支付类 - $body = '商品购买';//订单详情 - $out_trade_no = '2017787878';//订单号 + $body = '充值';//订单详情 + $out_trade_no = '20177878738';//订单号 $total_fee = floatval(0.01*100);//价格0.01 + $attach = 'pay_type=1'; $notify_url = route('weixin_wxpay_notify');//通知地址 $wxconfig= \WxPayConfig::wxconfig(); @@ -101,10 +102,10 @@ class UserController extends CommonController $unifiedOrder->setParameter("body","$body");//商品描述 $unifiedOrder->setParameter("out_trade_no","$out_trade_no");//商户订单号 $unifiedOrder->setParameter("total_fee","$total_fee");//总金额 - $unifiedOrder->setParameter("notify_url","$notify_url");//通知地址 + //$unifiedOrder->setParameter("attach","$attach"); //附加数据,选填,在查询API和支付通知中原样返回,可作为自定义参数使用,示例:a=1&b=2 + $unifiedOrder->setParameter("notify_url","$notify_url");//通知地址 $unifiedOrder->setParameter("trade_type","JSAPI");//交易类型 - //$unifiedOrder->setParameter("attach","test"); //附加数据,选填,在查询API和支付通知中原样返回,可作为自定义参数使用 - $prepay_id = $unifiedOrder->getPrepayId(); + $prepay_id = $unifiedOrder->getPrepayId(); //=========步骤3:使用jsapi调起支付============ $jsApi->setPrepayId($prepay_id); $jsApiParameters = $jsApi->getParameters(); diff --git a/app/Http/Controllers/Weixin/WxPayController.php b/app/Http/Controllers/Weixin/WxPayController.php index a102b09..e23d591 100644 --- a/app/Http/Controllers/Weixin/WxPayController.php +++ b/app/Http/Controllers/Weixin/WxPayController.php @@ -14,8 +14,61 @@ class WxPayController extends CommonController //微信支付回调 public function wxpayNotify(Request $request) { - require_once(resource_path('org/wxpay/WxPayPubHelper.class.php')); + file_put_contents("1.txt",$GLOBALS['HTTP_RAW_POST_DATA']); + //获取通知的数据 + $xml = $GLOBALS['HTTP_RAW_POST_DATA']; + //将XML转为array + //禁止引用外部xml实体 + libxml_disable_entity_loader(true); + $post_data = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true); + $get_arr = explode('&',$post_data['attach']); + foreach($get_arr as $value) + { + $tmp_arr = explode('=',$value); + $post_data[$tmp_arr[0]] = $tmp_arr[1]; + } - return view('weixin.cart.index', $data); + if($post_data['result_code'] == 'SUCCESS') + { + //$post_data['out_trade_no'] + //$post_data['transaction_id'] + //$post_data['total_fee'] + file_put_contents("2.txt",$post_data['total_fee'].'--'.$post_data['out_trade_no'].'--'.$post_data['attach']); + echo "SUCCESS"; + } + else + { + echo "FAILE"; + } } + + /** + * 发微信红包 + * @param string $openid 用户openid + */ + public function wxhbpay($re_openid,$money,$wishing='恭喜发财,大吉大利!',$act_name='赠红包活动',$remark='赶快领取您的红包!') + { + //微信支付-start + require_once(resource_path('org/wxpay/WxPayConfig.php')); // 导入微信配置类 + require_once(resource_path('org/wxpay/WxPayPubHelper.class.php')); // 导入微信支付类 + + $wxconfig= \WxPayConfig::wxconfig(); + $wxHongBaoHelper = new \Sendredpack($wxconfig); + $wxHongBaoHelper->setParameter("mch_billno", date('YmdHis').rand(1000, 9999));//订单号 + $wxHongBaoHelper->setParameter("send_name", '红包');//红包发送者名称 + $wxHongBaoHelper->setParameter("re_openid", $re_openid);//接受openid + $wxHongBaoHelper->setParameter("total_amount", floatval($money*100));//付款金额,单位分 + $wxHongBaoHelper->setParameter("total_num", 1);//红包収放总人数 + $wxHongBaoHelper->setParameter("wishing", $wishing);//红包祝福 + $wxHongBaoHelper->setParameter("client_ip", '127.0.0.1');//调用接口的机器 Ip 地址 + $wxHongBaoHelper->setParameter("act_name", $act_name);//活劢名称 + $wxHongBaoHelper->setParameter("remark", $remark);//备注信息 + $responseXml = $wxHongBaoHelper->postXmlSSL(); + //用作结果调试输出 + //echo htmlentities($responseXml,ENT_COMPAT,'UTF-8'); + $responseObj = simplexml_load_string($responseXml, 'SimpleXMLElement', LIBXML_NOCDATA); + return $responseObj->result_code; + } + + } \ No newline at end of file diff --git a/resources/org/wxpay/WxPayConfig.php b/resources/org/wxpay/WxPayConfig.php index d5910f0..b344361 100644 --- a/resources/org/wxpay/WxPayConfig.php +++ b/resources/org/wxpay/WxPayConfig.php @@ -61,22 +61,26 @@ class WxPayConfig { //=======【基本信息设置】===================================== //微信公众号身份的唯一标识。审核通过后,在微信发送的邮件中查看 - $wxconfig['APPID'] = self::APPID; + $wxconfig['APPID'] = self::APPID; //受理商ID,身份标识 - $wxconfig['MCHID'] = self::MCHID; + $wxconfig['MCHID'] = self::MCHID; //商户支付密钥Key。审核通过后,在微信发送的邮件中查看 - $wxconfig['KEY'] = self::KEY; + $wxconfig['KEY'] = self::KEY; //JSAPI接口中获取openid,审核后在公众平台开启开发模式后可查看 - $wxconfig['APPSECRET'] = self::APPSECRET; + $wxconfig['APPSECRET'] = self::APPSECRET; + + //=======【JSAPI路径设置】=================================== + //获取access_token过程中的跳转uri,通过跳转将code传入jsapi支付页面 + $wxconfig['JS_API_CALL_URL'] = ''; //=======【证书路径设置】===================================== //证书路径,注意应该填写绝对路径 - $wxconfig['SSLCERT_PATH'] = self::SSLCERT_PATH; - $wxconfig['SSLKEY_PATH'] = self::SSLKEY_PATH; + $wxconfig['SSLCERT_PATH'] = self::SSLCERT_PATH; + $wxconfig['SSLKEY_PATH'] = self::SSLKEY_PATH; //=======【异步通知url设置】=================================== //异步通知url,商户根据实际开发过程设定 - //$wxconfig['NOTIFY_URL'] = 'http://'.$_SERVER['HTTP_HOST'].U('Wxpay/notify_url'); //放在下单时,添加 + $wxconfig['NOTIFY_URL'] = ''; //放在下单时,添加 //=======【curl超时设置】=================================== //本例程通过curl使用HTTP POST方法,此处可修改其超时时间,默认为30秒 diff --git a/resources/org/wxpay/WxPayPubHelper.class.php b/resources/org/wxpay/WxPayPubHelper.class.php index 0322cb7..bf02c9b 100644 --- a/resources/org/wxpay/WxPayPubHelper.class.php +++ b/resources/org/wxpay/WxPayPubHelper.class.php @@ -166,7 +166,7 @@ class Common_util_pub //初始化curl $ch = curl_init(); //设置超时 - curl_setopt($ch, CURLOP_TIMEOUT, $second); + curl_setopt($ch, CURLOPT_TIMEOUT, $second); //这里设置代理,如果有的话 //curl_setopt($ch,CURLOPT_PROXY, '8.8.8.8'); //curl_setopt($ch,CURLOPT_PROXYPORT, 8080); @@ -186,7 +186,6 @@ class Common_util_pub //返回结果 if($data) { - curl_close($ch); return $data; } else @@ -194,7 +193,6 @@ class Common_util_pub $error = curl_errno($ch); echo "curl出错,错误码:$error"."
"; echo "错误原因查询
"; - curl_close($ch); return false; } } @@ -379,7 +377,6 @@ class UnifiedOrder_pub extends Wxpay_client_pub return $prepay_id; } - } /** @@ -826,7 +823,7 @@ class JsApi_pub extends Common_util_pub //初始化curl $ch = curl_init(); //设置超时 - curl_setopt($ch, CURLOP_TIMEOUT, $this->curl_timeout); + curl_setopt($ch, CURLOPT_TIMEOUT, $this->curl_timeout); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE); curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE); diff --git a/resources/views/weixin/user/userRechargeOrderDetail.blade.php b/resources/views/weixin/user/userRechargeOrderDetail.blade.php index 3c7c206..0b808e4 100644 --- a/resources/views/weixin/user/userRechargeOrderDetail.blade.php +++ b/resources/views/weixin/user/userRechargeOrderDetail.blade.php @@ -3,19 +3,18 @@ -