/** * 判断是否登录 * */ public static function getOrder($data, $order, $param) { $shoppingProcess = new \Model\ShoppingProcess(); $dataJson = json_encode($data); $request = array(); $request['cookieId'] = $param['cacheKey']; $request['memberId'] = $param['memberId']; if (isset($param['countryCode'])) { $request['countryCode'] = strtolower($param['countryCode']); } else { $request['countryId'] = isset($order['shippingAddress']['consigneeStateId']) ? $order['shippingAddress']['consigneeStateId'] : $data['shoppingCart']['countryId']; } $request['priceUnit'] = $data['shoppingCart']['priceUnit']; if (isset($param['coupon'])) { $request['coupon'] = $param['coupon']; } else { if (isset($data['shoppingCart']['coupon']) && is_array($data['shoppingCart']['coupon'])) { $request['coupon'] = $data['shoppingCart']['coupon']['libkey']; } } $request['languageCode'] = SELLER_LANG; if (isset($param['logistics_key']) && !empty($param['logistics_key'])) { $request['expressType'] = $param['logistics_key']; } $request['returnJson'] = $dataJson; $data = $shoppingProcess->reInitData($request); $order['shoppingCart'] = $data['shoppingCart']; $order['data'] = $data; $mem = \Lib\Cache::init(); $mem->set($param['cacheKey'] . 'order', $order); return $order; }
/** * * paypal IPN * @param unknown_type $isSandBox */ public static function getIpn($isSandBox = false) { //设置请求参数 $req = 'cmd=_notify-validate'; foreach ($_POST as $key => $value) { $value = urlencode(stripslashes($value)); $req .= "&{$key}={$value}"; } // 设置请求头 $header = "POST /cgi-bin/webscr HTTP/1.0\r\n"; $header .= "Content-Type: application/x-www-form-urlencoded\r\n"; $header .= "Content-Length: " . strlen($req) . "\r\n\r\n"; //sandbox测试链接 $handle = fopen(DATA_CACHE_ROOT_PATH . 'ipn.txt', 'a'); fwrite($handle, var_export($_POST, 1)); $url = ''; if ($isSandBox === true) { $url = self::$paypalSandBoxUrl; } else { $url = self::$paypalUrl; } //$fp = fsockopen('ssl://www.sandbox.paypal.com', 443, $errno, $errstr, 30); $fp = fsockopen('ssl://www.paypal.com', 443, $errno, $errstr, 30); fwrite($handle, var_export($fp, 1)); if ($fp) { fputs($fp, $header . $req); // read the body data $res = ''; while (!feof($fp)) { $res = fgets($fp, 1024); fwrite($handle, $res); if (strcmp($res, "VERIFIED") == 0) { $invoice = $_POST['invoice']; $mc_currency = $_POST['mc_currency']; $payment_gross = $_POST['mc_gross']; $custom = $_POST['custom']; $receiver_email = $_POST['receiver_email']; $payment_status = strtoupper($_POST['payment_status']); $payment_fee = $_POST['mc_fee']; //检查付款是否完成,只有当钱到我们账号上后,才为完成状态 if ($payment_status == 'COMPLETED' && $receiver_email == self::$receiverEmail) { $invoice_array = explode("_", $invoice); $paytime = time(); $OrdersPayDetails = 'Payment:paypal|' . 'CurrencyCode:' . $mc_currency . '|' . 'amount:' . $payment_gross . '|' . 'REFERENCEID:' . $tx_token . '|' . 'Remarks:' . $Remarks . '|' . 'time:' . $paytime; fwrite($handle, $OrdersPayDetails); $lang = strtolower(substr(trim($invoice), 0, 5)); $shoppingProcess = new \Model\ShoppingProcess(); $orderInfoFromCid = $shoppingProcess->GetOrderByCid(array('cr.ordersCid' => $invoice, 'cr.lang' => $lang)); $orderFromCid = $orderInfoFromCid['orderInfo']['order']; $response = $shoppingProcess->updateOrder(array('cr.ordersCid' => $invoice, 'cr.ordersPay' => 1, 'cr.ordersPayDetails' => $OrdersPayDetails, 'cr.ordersEstate' => 'payConfirm', 'cr.payTime' => $paytime, 'cr.ordersPayFeeamt' => $payment_fee, 'cr.endTime' => $paytime + ($orderFromCid['viewStock'] + $orderFromCid['expressTime']) * 24 * 3600)); $shoppingProcess->insertAdminRecord(array('record.ordersId' => $response['ordersId'], 'record.action' => '支付确认', 'record.username' => '系统', 'record.userip' => '127.0.0.1', 'record.action_time' => time())); $order = $shoppingProcess->GetOrderById(array('cr.ordersId' => $response['ordersId'], 'cr.lang' => $lang)); $orderInfo = $order['orderInfo']; $emailAll = array('lang' => $lang, 'email' => $orderInfo['order']['consigneeEmail'], 'products' => $orderInfo['productList'], 'Orders' => $orderInfo, 'emailtitle' => 'Email_CKOK', 'theme' => THEME . 'default/email/order_achieve.htm'); \Helper\Stomp::SendEmail($emailAll); } } } } fclose($handle); }