Beispiel #1
0
 /**
  * 发送现金红包
  * @param $openid		接收红包用户openid
  * @param $money		发放金额,单位:分
  * @param $total_num	红包个数, 1则为现金红包, 大于等于3则为裂变红包
  * @param $send_name	商家名称
  * @param $mch_billno	订单号
  * @param $act_name		活动名称
  * @param $wishing		祝福语
  * @param $remark		备注
  * @return array
  * @throws \Exception
  */
 public function sendRedPack($openid, $money, $total_num, $send_name, $mch_billno, $act_name, $wishing, $remark)
 {
     $param = new ParamHelper();
     $param->setParam("nonce_str", $this->getNonceStr());
     $param->setParam("mch_billno", $mch_billno);
     $param->setParam("mch_id", $this->wx_pay_mchid);
     $param->setParam("wxappid", $this->appid);
     $param->setParam("send_name", $send_name);
     $param->setParam("re_openid", $openid);
     $param->setParam("total_amount", $money);
     $param->setParam("total_num", $total_num);
     $param->setParam("wishing", $wishing);
     $param->setParam("act_name", $act_name);
     $param->setParam("remark", $remark);
     if ($total_num * 100 > $money) {
         throw new \Exception("每个红包的平均金额必须在1.00元到200.00元之间.");
     }
     if ($total_num == 1) {
         //普通红包
         $url = self::SEND_REDPACK_URL;
         $param->setParam("client_ip", $_SERVER['REMOTE_ADDR']);
     } else {
         if ($total_num < 3) {
             throw new \Exception("裂变红包个数必须介于(包括)3到20之间.");
         }
         //裂变红包
         $param->setParam("amt_type", "ALL_RAND");
         $url = self::SEND_GROUP_REDPACK_URL;
     }
     $param->setSign($this->wx_pay_key);
     $xmlData = $param->toXml();
     $response = $this->postXmlCurl($xmlData, $url, true);
     $result = WxPayResults::init($response, false);
     return $result;
 }
Beispiel #2
0
 /**
  *
  * 支付结果通用通知
  * @param function $callback
  * 直接回调函数使用方法: notify(you_function);
  * 回调类成员函数方法:notify(array($this, you_function));
  * $callback  原型为:function function_name($data){}
  */
 public function notify($callback, &$msg)
 {
     //获取通知的数据
     $xml = $GLOBALS['HTTP_RAW_POST_DATA'];
     //如果返回成功则验证签名
     try {
         $result = WxPayResults::init($xml, $this->apiConfig->mchkey);
     } catch (WxPayException $e) {
         $msg = $e->errorMessage();
         return false;
     }
     return call_user_func($callback, $result);
 }