public function getRequestForm($name)
 {
     $alipay_config = MobileAlipayConfig::getAlipayConfig($name);
     /**************************调用授权接口alipay.wap.trade.create.direct获取授权码token**************************/
     //返回格式
     $format = "xml";
     //必填,不需要修改
     //返回格式
     $v = "2.0";
     //必填,不需要修改
     //请求号
     $req_id = date('Ymdhis');
     //必填,须保证每次请求都是唯一
     //**req_data详细信息**
     //服务器异步通知页面路径
     $notify_url = $this->request->getSchemeAndHttpHost() . "/mapi_v2/pay/alipay/alipay_notify";
     //需http://格式的完整路径,不允许加?id=123这类自定义参数
     //页面跳转同步通知页面路径
     $call_back_url = $this->request->getSchemeAndHttpHost() . "/mapi_v2/pay/alipay/alipay_callback";
     //需http://格式的完整路径,不允许加?id=123这类自定义参数
     //操作中断返回地址
     $merchant_url = $this->request->getSchemeAndHttpHost() . "/mapi_v2/pay/alipay/alipay_merchant";
     //用户付款中途退出返回商户的地址。需http://格式的完整路径,不允许加?id=123这类自定义参数
     //卖家支付宝账户
     $seller_email = $this->requestData['WIDseller_email'];
     //商户订单号
     $out_trade_no = $this->requestData['WIDout_trade_no'];
     //订单名称
     $subject = $this->requestData['WIDsubject'];
     //付款金额
     $total_fee = $this->requestData['WIDtotal_fee'];
     //请求业务参数详细
     $req_data = '<direct_trade_create_req><notify_url>' . $notify_url . '</notify_url><call_back_url>' . $call_back_url . '</call_back_url><seller_account_name>' . $seller_email . '</seller_account_name><out_trade_no>' . $out_trade_no . '</out_trade_no><subject>' . $subject . '</subject><total_fee>' . $total_fee . '</total_fee><merchant_url>' . $merchant_url . '</merchant_url></direct_trade_create_req>';
     //必填
     /************************************************************/
     //构造要请求的参数数组,无需改动
     $para_token = array("service" => "alipay.wap.trade.create.direct", "partner" => trim($alipay_config['partner']), "sec_id" => trim($alipay_config['sign_type']), "format" => $format, "v" => $v, "req_id" => $req_id, "req_data" => $req_data, "_input_charset" => trim(strtolower($alipay_config['input_charset'])));
     //建立请求
     $alipaySubmit = new AlipaySubmit($alipay_config);
     $alipaySubmit->buildRequestPara($para_token);
     $html_text = $alipaySubmit->buildRequestHttp($para_token);
     //var_dump($html_text);
     //URLDECODE返回的信息
     $html_text = urldecode($html_text);
     //解析远程模拟提交后返回的信息
     $para_html_text = $alipaySubmit->parseResponse($html_text);
     //获取request_token
     $request_token = $para_html_text['request_token'];
     /**************************根据授权码token调用交易接口alipay.wap.auth.authAndExecute**************************/
     //业务详细
     $req_data = '<auth_and_execute_req><request_token>' . $request_token . '</request_token></auth_and_execute_req>';
     //必填
     //构造要请求的参数数组,无需改动
     $parameter = array("service" => "alipay.wap.auth.authAndExecute", "partner" => trim($alipay_config['partner']), "sec_id" => trim($alipay_config['sign_type']), "format" => $format, "v" => $v, "req_id" => $req_id, "req_data" => $req_data, "_input_charset" => trim(strtolower($alipay_config['input_charset'])));
     //建立请求
     $alipaySubmit = new AlipaySubmit($alipay_config);
     $html_text = $alipaySubmit->buildRequestForm($parameter, 'get', '确认');
     return $html_text;
 }
 public function payNotifyAction(Request $request, $name)
 {
     $this->getLogService()->info('notify', 'create', "paynotify action");
     $alipayNotify = new AlipayNotify(MobileAlipayConfig::getAlipayConfig("edusoho"));
     $verify_result = $alipayNotify->verifyNotify();
     if ($verify_result) {
         //验证成功
         try {
             $status = $this->doPayNotify($request, $name);
         } catch (\Exception $e) {
             error_log($e->getMessage(), 0);
         }
     } else {
         //验证失败
         $result["status"] = "fail";
         $this->getLogService()->info('notify', 'check_fail', "paynotify action");
     }
     return new Response("success");
 }
Esempio n. 3
0
 private function payByAlipay($order, $token)
 {
     $result = array('status' => 'error', 'message' => '', 'paid' => false, 'payUrl' => '');
     $payment = $this->controller->setting('payment', array());
     if (empty($payment['enabled'])) {
         $result['message'] = '支付功能未开启!';
         return $result;
     }
     if (empty($payment['alipay_enabled'])) {
         $result['message'] = '支付功能未开启!';
         return $result;
     }
     if (empty($payment['alipay_key']) || empty($payment['alipay_secret']) || empty($payment['alipay_account'])) {
         $result['message'] = '支付宝参数不正确!';
         return $result;
     }
     if (empty($payment['alipay_type']) || $payment['alipay_type'] != 'direct') {
         $payUrl = $this->controller->generateUrl('mapi_order_submit_pay_request', array('id' => $order['id'], 'token' => $token), true);
         $result['payUrl'] = $payUrl;
     } else {
         $result['payUrl'] = MobileAlipayConfig::createAlipayOrderUrl($this->request, 'edusoho', $order);
     }
     $result['status'] = 'ok';
     return $result;
 }