public function run($open_id, $total_fee, $body, $detail, $out_trade_no) { $response = array('error' => 1, 'msg' => ''); $_SESSION['payment'] = 'wechat'; global $config; $res = create_prepay($config['appid'], $this->mch_id, $this->mch_key, $open_id, $total_fee, $body, $detail, $out_trade_no); $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(); $response['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=' . $this->mch_key; $sign = md5($sign); $sign = strtoupper($sign); $response['timestamp'] = $time_stamp; $response['sign'] = $sign; $response['prepay_id'] = "" . $res->prepay_id; return $response; }
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); $sign = strtoupper($sign); $pay_params['timestamp'] = $time_stamp;
//支付方式变更时生成支付代码 if ('wechat' == $opera) { $mch_id = '1281515101'; $mch_key = 'noihsilxueevoliiodosemdluowmarri'; $response = array('error' => 1, 'msg' => ''); $_SESSION['payment'] = 'wechat'; $order_sn = $_SESSION['order_sn']; $get_order_info = 'select * from ' . $db->table('order') . ' where `order_sn`=\'' . $order_sn . '\' and `account`=\'' . $_SESSION['account'] . '\''; $order = $db->fetchRow($get_order_info); $total_fee = $order['amount']; $detail = '订单编号:' . $order_sn; $response['price'] = '¥' . sprintf('%.2f', $total_fee); $body = $config['site_name'] . '订单收款'; $body = $detail; $out_trade_no = $order_sn; $res = create_prepay($config['appid'], $mch_id, $mch_key, $_SESSION['openid'], $total_fee, $body, $detail, $out_trade_no); $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(); $response['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=' . $mch_key; $sign = md5($sign); $sign = strtoupper($sign); $response['timestamp'] = $time_stamp; $response['sign'] = $sign;