} while ($db->fetchOne($check_pay_order_sn)); $pay_order_data['order_sn'] = $pay_order_sn; if ($db->autoInsert('pay_order', array($pay_order_data))) { if ($balance_paid || $reward_paid) { member_account_change($_SESSION['account'], -1 * $balance_paid, -1 * $reward_paid, 0, 0, 0, 0, $_SESSION['account'], 2, $pay_order_sn); } //根据订单状态判断是否需要发起支付 if ($response['status'] == 3) { //解冻会员 if ($level_id == 2) { $db->autoUpdate('member', array('status' => 2, 'level_expired' => time() + 365 * 24 * 3600), '`account`=\'' . $account . '\''); } else { $db->autoUpdate('member', array('status' => 2), '`account`=\'' . $account . '\''); } //结算 settle($recommend_info['recommend_path'] . $register_id . ',', $total_amount, $pay_order_sn); } else { $res = create_prepay($config['appid'], $config['mch_id'], $config['mch_key'], $_SESSION['openid'], $real_amount, $config['site_name'], $pay_order_sn, $pay_order_sn); $res = simplexml_load_string($res); if ($res->prepay_id) { $response['error'] = 0; } else { $response['msg'] = $res->return_code . ',' . $res->return_msg; } $nonce_str = get_nonce_str(); $pay_params = array(); $pay_params['nonce_str'] = $nonce_str; $time_stamp = time(); //最后参与签名的参数有appId, timeStamp, nonceStr, package, signType。 $sign = 'appId=' . $config['appid'] . '&nonceStr=' . $nonce_str . '&package=prepay_id=' . $res->prepay_id . '&signType=MD5&timeStamp=' . $time_stamp . '&key=' . $config['mch_key']; $sign = md5($sign);
do { $pay_order_sn = time() . rand(1000, 9999); $check_pay_order_sn = 'select `order_sn` from ' . $db->table('pay_order') . ' where `order_sn`=\'' . $pay_order_sn . '\''; } while ($db->fetchOne($check_pay_order_sn)); $pay_order_data['order_sn'] = $pay_order_sn; if ($db->autoInsert('pay_order', array($pay_order_data))) { if ($balance_paid || $reward_paid) { member_account_change($_SESSION['account'], -1 * $balance_paid, -1 * $reward_paid, 0, 0, 0, 0, $_SESSION['account'], 2, $pay_order_sn); } //根据订单状态判断是否需要发起支付 if ($response['status'] == 3) { //解冻会员 $level_expired = $member_info['level_expired'] + 365 * 24 * 3600; $db->autoUpdate('member', array('status' => 2, 'level_expired' => $level_expired), '`account`=\'' . $account . '\''); //结算 settle($member_info['recommend_path'], $total_amount, $pay_order_sn); } else { $res = create_prepay($config['appid'], $config['mch_id'], $config['mch_key'], $_SESSION['openid'], $real_amount, $config['site_name'], $pay_order_sn, $pay_order_sn); $res = simplexml_load_string($res); if ($res->prepay_id) { $response['error'] = 0; } else { $response['msg'] = $res->return_code . ',' . $res->return_msg; } $nonce_str = get_nonce_str(); $pay_params = array(); $pay_params['nonce_str'] = $nonce_str; $time_stamp = time(); //最后参与签名的参数有appId, timeStamp, nonceStr, package, signType。 $sign = 'appId=' . $config['appid'] . '&nonceStr=' . $nonce_str . '&package=prepay_id=' . $res->prepay_id . '&signType=MD5&timeStamp=' . $time_stamp . '&key=' . $config['mch_key']; $sign = md5($sign);