コード例 #1
0
 /**
  * 微信支付成功后的通知处理
  * @param $xml
  * @return string
  * @throws \yii\base\Exception
  */
 public static function payNotify($xml)
 {
     $cache = \Yii::$app->cache;
     //转xml为array
     $xmlArray = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
     if ($xmlArray['return_code'] == 'SUCCESS') {
         $transaction_id = $xmlArray['transaction_id'];
         if ('ok' == $cache->get($transaction_id)) {
             $msg = "订单:" . $transaction_id . ",已处理完,重复通知";
             Yii::info($msg, 'wx');
             echo '<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>';
         } else {
             $cache->set($transaction_id, 'ok', 24 * 3600);
             //缓存1天
             $money = $xmlArray['total_fee'] / 100;
             //总金额(元)
             $attachArray = explode("|", $xmlArray['attach']);
             $userId = intval($attachArray[0]);
             //获取充值用户
             $user = Users::findOne($userId);
             $addBitcoin = intval($attachArray[1]);
             //获取充值获得的云豆数
             Money::recordOneForBig($user, $money, $addBitcoin, Money::FROM_WX);
             //记录充值记录+返点+收入支出表变化+用户云豆数增加
             $msg = "订单:" . $transaction_id . ",首次记录,userId:" . $user['userId'] . ",支付" . $money . "元,获得" . $addBitcoin . "云豆,交易类型:" . $xmlArray['trade_type'] . ",交易结束时间:" . $xmlArray['time_end'];
             Yii::info($msg, 'wx');
             echo '<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>';
         }
     } else {
         $msg = "错误消息:" . $xmlArray['return_msg'];
         Yii::info($msg, 'wx');
         echo 'fail';
     }
     exit;
 }
コード例 #2
0
 public function record()
 {
     $userSession = Yii::$app->session->get('user');
     $user = Users::findOne($this->userId);
     Money::recordOneForBig($user, $this->money, $this->bitcoin, $this->from, $userSession['userId'], $this->agreement);
 }