/** * 生成支付代码 * @param array $order 订单信息 * @param array $payment 支付方式信息 */ function get_code($order, $payment) { /** * 消费交易-后台 */ //$orderNumber = $order['order_sn'] . '-' . $this->_formatSN($order['log_id']); $ecmobile_url = ecmobile_url(); $orderNumber = $order['order_sn']; $amount = $order['order_amount']; //需要填入的部分 $req['version'] = upmp_config::$version; // 版本号 $req['charset'] = upmp_config::$charset; // 字符编码 $req['transType'] = "01"; // 交易类型 $req['merId'] = upmp_config::$mer_id; // 商户代码 $req['backEndUrl'] = $ecmobile_url . "/payment/UPMP/notify_url.php"; // 通知URL $req['frontEndUrl'] = $ecmobile_url . "/payment/wap_callback.php?code=upop"; // 前台通知URL(可选) $req['orderDescription'] = $orderNumber; // 订单描述(可选) $req['orderTime'] = date("YmdHis"); // 交易开始日期时间yyyyMMddHHmmss //$req['orderTimeout'] = ""; // 订单超时时间yyyyMMddHHmmss(可选) $req['orderNumber'] = $orderNumber; //订单号(商户根据自己需要生成订单号) $req['orderAmount'] = $amount * 100; // 订单金额 $req['orderCurrency'] = "156"; // 交易币种(可选) $req['reqReserved'] = "透传信息"; // 请求方保留域(可选,用于透传商户信息) // 保留域填充方法 $merReserved['test'] = "test"; $req['merReserved'] = UpmpService::buildReserved($merReserved); // 商户保留域(可选) $resp = array(); $validResp = UpmpService::trade($req, $resp); // 商户的业务逻辑 if ($validResp) { // 服务器应答签名验证成功 //print_r($resp); //返回结果展示 $upop_tn = $resp['tn']; $ecmobile_url = ecmobile_url(); $resultURL = $ecmobile_url . "/payment/wap_callback.php?code=upop{$argName}="; $resultURL = urlencode($resultURL); $paydata = "tn=" . $upop_tn . ",resultURL=" . $resultURL . ",usetestmode=false"; $paydata = base64_encode($paydata); $pay_url = $ecmobile_url . "/payment/wap_upmp.php?paydata=" . $paydata; return array('upop_tn' => $upop_tn, "pay_url" => $pay_url); } else { // 服务器应答签名验证失败 //print_r($resp); return array(); } }
/** * 生成支付代码 * @param array $order 订单信息 * @param array $payment 支付方式信息 */ function get_wappay_url($order, $payment) { $order_id = $order['order_id']; $order_desc = $order['order_sn']; $order_sn = $order['order_sn']; $amount = $order['order_amount']; $ecmobile_url = ecmobile_url(); //修正配置文件路径 $this->alipay_config = $this->modify_config_path($this->alipay_config); $format = "xml"; //返回格式 $v = "2.0"; $req_id = date('Ymdhis'); //请求号 $notify_url = $ecmobile_url . "/payment/alipay/wap/notify_url.php"; //服务器异步通知页面路径 $call_back_url = $ecmobile_url . "/payment/wap_callback.php?code=alipay"; //页面跳转同步通知页面路径 $merchant_url = $ecmobile_url . "/payment/wap_merchant.php?code=alipay"; //操作中断返回地址 $seller_email = '*****@*****.**'; //卖家支付宝帐户 $out_trade_no = $order_sn; //商户订单号 $subject = $order_desc; //订单名称 $total_fee = $amount; //付款金额 //请求业务参数详细 $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($this->alipay_config['partner']), "sec_id" => trim($this->alipay_config['sign_type']), "format" => $format, "v" => $v, "req_id" => $req_id, "req_data" => $req_data, "_input_charset" => trim(strtolower($this->alipay_config['input_charset']))); //建立请求 $alipaySubmit = new AlipaySubmit($this->alipay_config); $html_text = $alipaySubmit->buildRequestHttp($para_token); $html_text = urldecode($html_text); //解析远程模拟提交后返回的信息 $para_html_text = $alipaySubmit->parseResponse($html_text); //获取request_token $request_token = $para_html_text['request_token']; if ($request_token) { //业务详细 $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($this->alipay_config['partner']), "sec_id" => trim($this->alipay_config['sign_type']), "format" => $format, "v" => $v, "req_id" => $req_id, "req_data" => $req_data, "_input_charset" => trim(strtolower($this->alipay_config['input_charset']))); //建立请求 $alipaySubmit = new AlipaySubmit($this->alipay_config); $url = $alipaySubmit->alipay_gateway_new . $alipaySubmit->buildRequestParaToString($parameter); return $url; } else { return false; } }
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </head> <body> <?php echo $_GET['err'] == 0 ? '成功' : '失败'; ?> <?php require $_SERVER['DOCUMENT_ROOT'] . "/ecmobile/Library/function.php"; $url = ecmobile_url() . "/payment/app_callback.php?err=" . $_GET['err'] . "&order_id=" . $_GET['order_id']; echo "<script language='javascript' type='text/javascript'>"; echo "window.location.href='{$url}'"; echo "< /script>"; ?> </body> </html>
function goto_app_callback($err, $order_id) { $url = ecmobile_url() . '/app_callback.php?err=' . $err . '&order_id=' . $order_id; echo '<meta http-equiv="refresh" content="1;url=' . $url . '">'; //header('Location:'.$url); }
require EC_PATH . '/includes/init.php'; //get方式验证session GZ_Api::$session = array('uid' => _GET('uid'), 'sid' => _GET('sid')); GZ_Api::authSession(); $code = trim(_GET('code')); $order_id = _GET('order_id'); $order_desc = _GET('order_desc'); $amount = _GET('amount'); $currency = _GET('currency'); /* $code = 'alipay'; $order_id = date('YmdHis', time()); $order_desc = 'ipod'; $amount = 0.01; */ $ecmobile_url = ecmobile_url(); if (empty($code) || empty($order_id) || empty($order_desc) || empty($amount)) { self::outPut(101); } switch ($code) { case 'alipay': require_once GZ_PATH . "/payment/alipay/alipay.config.php"; require_once GZ_PATH . "/payment/alipay/alipay_submit.class.php"; //修正配置文件路径 $alipay_config = modify_config_path($alipay_config); $format = "xml"; //返回格式 $v = "2.0"; $req_id = date('Ymdhis'); //请求号 $notify_url = $ecmobile_url . "/payment/wap_notify.php?code=alipay";
<?php define('IN_ECS', true); define('GZ_PATH', dirname(dirname(__FILE__))); define('EC_PATH', dirname(GZ_PATH)); require_once EC_PATH . '/includes/init.php'; require_once GZ_PATH . "/Library/function.php"; //echo '操作中断'; $url = ecmobile_url() . '/app_callback.php?err=2&order_id=' . $_GET['out_trade_no']; header('Location:' . $url);
$nonce_str = getRandomStr(); //随机字符串 $packetParams['nonce_str'] = $nonce_str; //商品描述 $packetParams['body'] = $product_name; //商品详情 $packetParams['attach'] = $product_name; //商户订单号 $packetParams['out_trade_no'] = $out_trade_no; //总金额 $packetParams['total_fee'] = $total_fee; //访问接口IP //$packetParams['spbill_create_ip'] = Request::getClientIp(); $packetParams['spbill_create_ip'] = '127.0.0.1'; //接受微信支付异步通知回调地址 $packetParams['notify_url'] = ecmobile_url() . $notify_url; //交易类型:JSAPI,NATIVE,APP $packetParams['trade_type'] = "APP"; //签名 TODO $sign = $reqHandler->createMd5Sign($packetParams); $packetParams['sign'] = $sign; $time_stamp = strval(time()); //获取prepayid $prepayid = $reqHandler->sendPrepay($packetParams); if ($prepayid != null) { $pack = 'Sign=WXPay'; //输出参数列表 $prePayParams = array(); $prePayParams['appid'] = $APP_ID; $prePayParams['partnerid'] = $PARTNER; $prePayParams['prepayid'] = $prepayid;