Exemplo n.º 1
0
 function getSignVeryfy($para_temp, $sign, $isSort)
 {
     $para = paraFilter($para_temp);
     if ($isSort) {
         $para = argSort($para);
     } else {
         $para = $this->sortNotifyPara($para);
     }
     $prestr = createLinkstring($para);
     $isSgin = false;
     switch (strtoupper(trim($this->alipay_config['sign_type']))) {
         case "MD5":
             $isSgin = md5Verify($prestr, $sign, $this->alipay_config['key']);
             break;
         case "RSA":
             $isSgin = rsaVerify($prestr, trim($this->alipay_config['ali_public_key_path']), $sign);
             break;
         case "0001":
             $isSgin = rsaVerify($prestr, trim($this->alipay_config['ali_public_key_path']), $sign);
             break;
         default:
             $isSgin = false;
     }
     return $isSgin;
 }
/**
 * 生成签名
 * @param req 需要签名的要素
 * @return 签名结果字符串
 */
function buildSignature($req)
{
    $prestr = createLinkstring($req, true, false);
    watchdog('back para', 'back para1111:<pre>@para</pre>', array('@para' => print_r($prestr, TRUE)));
    $prestr = $prestr . upmp_config::QSTRING_SPLIT . md5(upmp_config::$security_key);
    return md5($prestr);
}
Exemplo n.º 3
0
function buildMysign($sort_para, $key, $sign_type = "MD5")
{
    $prestr = createLinkstring($sort_para);
    $prestr = $prestr . $key;
    $mysgin = sign($prestr, $sign_type);
    return $mysgin;
}
Exemplo n.º 4
0
 /**
  * 生成要请求给支付宝的参数数组
  * @param $para_temp 请求前的参数数组
  * @return 要请求的参数数组字符串
  */
 function buildRequestParaToString($para_temp)
 {
     //待请求参数数组
     $para = $this->buildRequestPara($para_temp);
     //把参数组中所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串,并对字符串做urlencode编码
     $request_data = createLinkstring($para);
     return $request_data;
 }
Exemplo n.º 5
0
 /**
  * 生成要请求给支付宝的参数数组
  * @param $para_temp 请求前的参数数组
  * @param $aliapy_config 基本配置信息数组
  * @return 要请求的参数数组字符串
  */
 function buildRequestParaToString($para_temp, $aliapy_config)
 {
     //待请求参数数组
     $para = $this->buildRequestPara($para_temp, $aliapy_config);
     //把参数组中所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串
     $request_data = createLinkstring($para);
     return $request_data;
 }
Exemplo n.º 6
0
/**
 * 生成签名结果
 * @param $sort_para 要签名的数组
 * @param $key 支付宝交易安全校验码
 * @param $sign_type 签名类型 默认值:MD5
 * return 签名结果字符串
 */
function buildMysign($sort_para, $key, $sign_type = "MD5")
{
    //把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串
    $prestr = createLinkstring($sort_para);
    //把拼接后的字符串再与安全校验码直接连接起来
    $prestr = $prestr . $key;
    //把最终的字符串签名,获得签名结果
    $mysgin = sign($prestr, $sign_type);
    return $mysgin;
}
Exemplo n.º 7
0
/**
 * 生成签名
 * @param req 需要签名的要素
 * @return 签名结果字符串
 */
function buildSignature($req)
{
    global $security_key;
    $secrutykey = $security_key ? $security_key : upmp_config::$security_key;
    $prestr = createLinkstring($req, true, false);
    $prestr = $prestr . upmp_config::QSTRING_SPLIT . md5($secrutykey);
    $file = "bank-" . date('y-m-d') . ".txt";
    $filehandle = fopen($file, "a");
    fwrite($filehandle, "<br>MD5前:<br>" . $prestr . "----------<br>");
    fclose($filehandle);
    return md5($prestr);
}
Exemplo n.º 8
0
	function buildRequestMysign($para_sort) {
						$prestr = createLinkstring($para_sort);
				$mysign = "";
		switch (strtoupper(trim($this->llpay_config['sign_type']))) {
			case "MD5" :
				$mysign = md5Sign($prestr, $this->llpay_config['key']);
				break;
			default :
				$mysign = "";
		}
		true === DEBUG_LIANLIANPAY && file_put_contents(ROOT_PATH . "errorlog/pay.lianlianpay.".date("Ym").".log","签名:".$mysign."\n", FILE_APPEND);
		return $mysign;
	}
Exemplo n.º 9
0
 function buildRequestMysign($para_sort)
 {
     $prestr = createLinkstring($para_sort);
     $mysign = "";
     switch (strtoupper(trim($this->alipay_config['sign_type']))) {
         case "MD5":
             $mysign = md5Sign($prestr, $this->alipay_config['key']);
             break;
         default:
             $mysign = "";
     }
     return $mysign;
 }
Exemplo n.º 10
0
 /**
  * 生成签名结果
  * @param $para_sort 已排序要签名的数组
  * return 签名结果字符串
  */
 function buildRequestMysign($para_sort)
 {
     //把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串
     $prestr = createLinkstring($para_sort);
     $mysign = "";
     switch (strtoupper(trim($this->alipay_config['sign_type']))) {
         case "RSA":
             $mysign = rsaSign($prestr, $this->alipay_config['private_key_path']);
             break;
         default:
             $mysign = "";
     }
     return $mysign;
 }
Exemplo n.º 11
0
 /**
  * 生成签名结果
  * @param $para_sort 已排序要签名的数组
  * return 签名结果字符串
  */
 function buildRequestMysign($para_sort)
 {
     //把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串
     $prestr = createLinkstring($para_sort);
     $mysign = "";
     switch (strtoupper(trim($this->jfb_config['sign_type']))) {
         case "MD5":
             $mysign = md5Sign($prestr, $this->jfb_config['key']);
             break;
         default:
             $mysign = "";
     }
     return $mysign;
 }
Exemplo n.º 12
0
 public function getSignVeryfy($para_temp, $sign)
 {
     $para_filter = paraFilter($para_temp);
     $para_sort = argSort($para_filter);
     $prestr = createLinkstring($para_sort);
     $isSgin = false;
     switch (strtoupper(trim($this->alipay_config["sign_type"]))) {
         case "MD5":
             $isSgin = md5Verify($prestr, $sign, $this->alipay_config["key"]);
             break;
         default:
             $isSgin = false;
     }
     return $isSgin;
 }
Exemplo n.º 13
0
 /**
  * 获取返回时的签名验证结果
  * @param $para_temp 通知返回来的参数数组
  * @param $sign 返回的签名结果
  * @return 签名验证结果
  */
 public function getSignVeryfy($para_temp, $sign)
 {
     //除去待签名参数数组中的空值
     $para = paraFilter($para_temp);
     //把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串
     $prestr = createLinkstring($para);
     $MAC = base64_decode($sign);
     $fp = fopen(dirname(__FILE__) . "/99bill[1].cert.rsa.20140803.cer", "r");
     $cert = fread($fp, 8192);
     fclose($fp);
     $pubkeyid = openssl_get_publickey($cert);
     $isSgin = false;
     $isSgin = openssl_verify($trans_body, $MAC, $pubkeyid);
     return $isSgin;
 }
Exemplo n.º 14
0
 /**
  * 生成签名结果
  * @param $para_sort 已排序要签名的数组
  * return 签名结果字符串
  */
 function buildRequestMysign($para_sort)
 {
     //把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串
     $prestr = createLinkstring($para_sort);
     //                $prestr = 'partner="2088021351438614"&seller_id="*****@*****.**"&out_trade_no="120517540212075"&subject="测试的商品"&body="该测试商品的详细描述"&total_fee="0.01"&notify_url="http://notify.msp.hk/notify.htm"&service="mobile.securitypay.pay"&payment_type="1"&_input_charset="utf-8"&it_b_pay="30m"&return_url="m.alipay.com"';
     $mysign = "";
     switch (strtoupper(trim($this->alipay_config['sign_type']))) {
         case "RSA":
             $mysign = rsaSign($prestr, $this->alipay_config['private_key_path']);
             break;
         default:
             $mysign = "";
     }
     return $mysign;
 }
Exemplo n.º 15
0
 /**
  * 生成签名结果
  * @param $para 要签名的数组
  * return 签名结果字符串
  */
 public function buildRequestMysign($para)
 {
     //把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串
     $prestr = createLinkstring($para);
     $mysign = "";
     /////////////  RSA 签名计算 ///////// 开始 //
     $fp = fopen(dirname(__FILE__) . "/pcarduser.pem", "r");
     $priv_key = fread($fp, 123456);
     fclose($fp);
     $pkeyid = openssl_get_privatekey($priv_key);
     // compute signature
     openssl_sign($prestr, $signMsg, $pkeyid, OPENSSL_ALGO_SHA1);
     // free the key from memory
     openssl_free_key($pkeyid);
     $signMsg = base64_encode($signMsg);
     return $signMsg;
 }
Exemplo n.º 16
0
 /**
  * 获取请求签名
  * @param $para_temp 请求的参数数组
  * @return 签名
  */
 public function getSign($para_temp)
 {
     //除去待签名参数数组中的空值和签名参数
     $para_filter = paraFilter($para_temp);
     //对待签名参数数组排序
     $para_sort = argSort($para_filter);
     //把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串
     $prestr = createLinkstring($para_sort);
     $isSgin = false;
     switch (strtoupper(trim($this->alipay_config['sign_type']))) {
         case "RSA":
             $isSgin = rsaSign($prestr, trim($this->alipay_config['private_key_path']));
             break;
         default:
             $isSgin = false;
     }
     return $isSgin;
 }
Exemplo n.º 17
0
 /**
  * 获取返回时的签名验证结果
  * @param $para_temp 通知返回来的参数数组
  * @param $sign 返回的签名结果
  * @return 签名验证结果
  */
 function getSignVeryfy($para_temp, $sign)
 {
     //除去待签名参数数组中的空值和签名参数
     $para_filter = paraFilter($para_temp);
     //对待签名参数数组排序
     $para_sort = argSort($para_filter);
     //把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串
     $prestr = createLinkstring($para_sort);
     $isSgin = false;
     switch (strtoupper(trim($this->alipay_config['sign_type']))) {
         case "MD5":
             $isSgin = md5Verify($prestr, $sign, $this->alipay_config['key']);
             break;
         default:
             $isSgin = false;
     }
     return $isSgin;
 }
Exemplo n.º 18
0
 /**
  * 生成签名结果
  * @param $para_sort 已排序要签名的数组
  * return 签名结果字符串
  */
 function buildRequestMysign($para_sort)
 {
     //把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串
     $prestr = createLinkstring($para_sort);
     $mysign = "";
     switch (strtoupper(trim($this->llpay_config['sign_type']))) {
         case "MD5":
             $mysign = md5Sign($prestr, $this->llpay_config['key']);
             break;
         case "RSA":
             $mysign = RsaSign($prestr);
             break;
         default:
             $mysign = "";
     }
     file_put_contents("log.txt", "签名:" . $mysign . "\n", FILE_APPEND);
     return $mysign;
 }
Exemplo n.º 19
0
/**
 * 生成签名
 * @param req 需要签名的要素
 * @return 签名结果字符串
 */
function buildSignature($req)
{
    $prestr = createLinkstring($req, true, false);
    $prestr = $prestr . upmp_config::QSTRING_SPLIT . md5(upmp_config::$security_key);
    return md5($prestr);
}
Exemplo n.º 20
0
 /**
  * 获取返回时的签名验证结果
  * @param $para_temp 通知返回来的参数数组
  * @param $sign 返回的签名结果
  * @return 签名验证结果
  */
 public function getSignVeryfy($para_temp, $sign)
 {
     //除去待签名参数数组中的空值和签名参数
     if (strtoupper(trim($this->alipay_config['sign_type'])) == 'RSA') {
         $para_filter = paraFilter($para_temp, 3);
         //参数需要urldecode
     } else {
         $para_filter = paraFilter($para_temp);
     }
     //对待签名参数数组排序
     $para_sort = argSort($para_filter);
     //把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串
     $prestr = createLinkstring($para_sort);
     $isSgin = false;
     switch (strtoupper(trim($this->alipay_config['sign_type']))) {
         case 'MD5':
             $isSgin = md5Verify($prestr, $sign, $this->alipay_config['key']);
             break;
         case 'RSA':
             $isSgin = rsaVerify($prestr, $this->alipay_config['alipay_public_key'], $sign);
             break;
         default:
             $isSgin = false;
     }
     return $isSgin;
 }
Exemplo n.º 21
0
 /**
  * 获取返回时的签名验证结果
  * @param $para_temp 通知返回来的参数数组
  * @param $sign 返回的签名结果
  * @param $isSort 是否对待签名数组排序
  * @return 签名验证结果
  */
 function getSignVeryfy($para_temp, $sign, $isSort)
 {
     //除去待签名参数数组中的空值和签名参数
     $para = paraFilter($para_temp);
     //对待签名参数数组排序
     if ($isSort) {
         $para = argSort($para);
     } else {
         $para = sortNotifyPara($para);
     }
     //把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串
     $prestr = createLinkstring($para);
     $isSgin = false;
     switch (strtoupper(trim($this->alipay_config['sign_type']))) {
         case "MD5":
             $isSgin = md5Verify($prestr, $sign, $this->alipay_config['key']);
             break;
         case "RSA":
             $isSgin = rsaVerify($prestr, trim($this->alipay_config['ali_public_key_path']), $sign);
             break;
         case "0001":
             $isSgin = rsaVerify($prestr, trim($this->alipay_config['ali_public_key_path']), $sign);
             break;
         default:
             $isSgin = false;
     }
     return $isSgin;
 }
Exemplo n.º 22
0
	function getSignVeryfy($para_temp, $sign) {
				$para_filter = paraFilter($para_temp);

				$para_sort = argSort($para_filter);

				$prestr = createLinkstring($para_sort);

		true === DEBUG_LIANLIANPAY && file_put_contents(ROOT_PATH . "errorlog/pay.lianlianpay.".date("Ym").".log", "原串:" . $prestr . "\n", FILE_APPEND);
		true === DEBUG_LIANLIANPAY && file_put_contents(ROOT_PATH . "errorlog/pay.lianlianpay.".date("Ym").".log", "sign:" . $sign . "\n", FILE_APPEND);
		$isSgin = false;
		switch (strtoupper(trim($this->llpay_config['sign_type']))) {
			case "MD5" :
				$isSgin = md5Verify($prestr, $sign, $this->llpay_config['key']);
				break;
			default :
				$isSgin = false;
		}

		return $isSgin;
	}
Exemplo n.º 23
0
productdesc	商品描述	最长200位	可空
appcallbackurl	第3方平台异步通知地址		可空
appkey	应用id	Sdk后台申请	不可空
sign	本系统签名		不可空
*/
$key = "jz";
//干扰码:jz
$notice_sn = $_REQUEST['apporderid'];
$trade_no = $_REQUEST['order_id'];
$sign = $_REQUEST['sign'];
//除去待签名参数数组中的空值和签名参数
$para_filter = paraFilter($_REQUEST);
//对待签名参数数组排序
$para_sort = argSort($para_filter);
//生成签名结果
$sign_str = createLinkstring($para_sort);
$mysign = md5($sign_str . $key);
/*
$sign_str = $amount.$apporderid.$order_id;
$mysign = md5($sing_str.$key);
*/
if ($sign == $mysign) {
    $apporderid = $_REQUEST['apporderid'];
    $payment_notice = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "payment_notice where notice_sn = '" . $notice_sn . "'");
    require_once APP_ROOT_PATH . "system/libs/cart.php";
    $rs = payment_paid($notice_sn, $trade_no);
    if ($rs) {
        $GLOBALS['db']->query("update " . DB_PREFIX . "payment_notice set outer_notice_sn = '" . $trade_no . "' where id = " . $payment_notice['id']);
    }
    $url = APP_ROOT . "/../wap/index.php?ctl=cart&act=pay_result&id=" . $payment_notice['id'];
    app_redirect($url);
Exemplo n.º 24
0
function rsaSign($data)
{
    $priKey = "-----BEGIN RSA PRIVATE KEY-----\n生成密钥时获取的私钥字符串,直接使用pem文件的完整字符串\n-----END RSA PRIVATE KEY-----";
    $res = openssl_get_privatekey($priKey);
    openssl_sign($data, $sign, $res);
    openssl_free_key($res);
    $sign = base64_encode($sign);
    $sign = urlencode($sign);
    return $sign;
}
// 支付宝合作者身份ID,以2088开头的16位纯数字
$partner = "%支付宝PartnerID%";
// 支付宝账号
$seller_id = '%支付宝账号,通常为邮箱地址%';
// 商品网址
$base_path = urlencode('http://www.dcloud.io/helloh5/');
// 异步通知地址
$notify_url = urlencode('http://demo.dcloud.net.cn/payment/alipay/notify.php');
// 订单标题
$subject = 'DCloud项目捐赠';
// 订单详情
$body = 'DCloud致力于打造HTML5最好的移动开发工具,包括终端的Runtime、云端的服务和IDE,同时提供各项配套的开发者服务。';
// 订单号,示例代码使用时间值作为唯一的订单ID号
$out_trade_no = date('YmdHis', time());
$parameter = array('service' => 'mobile.securitypay.pay', 'partner' => $partner, '_input_charset' => 'UTF-8', 'out_trade_no' => $out_trade_no, 'subject' => $subject, 'payment_type' => '1', 'seller_id' => $seller_id, 'total_fee' => $total, 'body' => $body, 'it_b_pay' => '1d', 'notify_url' => $notify_url, 'show_url' => $base_path);
//生成需要签名的订单
$orderInfo = createLinkstring($parameter);
//签名
$sign = rsaSign($orderInfo);
//生成订单
echo $orderInfo . '&sign="' . $sign . '"&sign_type="RSA"';
Exemplo n.º 25
0
 public function getOrderInfo($trans_no, $type = 'normal', $order_time = 0)
 {
     $query = $this->CI->db->get_where('recharge_order', array('order_no' => $trans_no));
     $recharg = $query->row_array();
     $post_data = array('dt_order' => date('YmdHis', strtotime($recharg['created'])), 'no_order' => $trans_no, 'oid_partner' => trim($this->llpay_config['oid_partner']));
     $sign_data = $post_data;
     $sign_data['sign_type'] = strtoupper(trim($this->llpay_config['sign_type']));
     $sign_data['key'] = trim($this->llpay_config['key']);
     $post_data['sign'] = md5(createLinkstring($sign_data));
     $post_data['sign_type'] = strtoupper(trim($this->llpay_config['sign_type']));
     $json_data = json_encode($post_data);
     $ch = curl_init();
     curl_setopt($ch, CURLOPT_URL, $this->order_info_url);
     curl_setopt($ch, CURLOPT_POST, 1);
     curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Content-Length: ' . strlen($json_data)));
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
     curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data);
     $check_info = curl_exec($ch);
     curl_close($ch);
     $result_arr = json_decode($check_info, true);
     if ($type == 'normal') {
         //整理数据返回
         $pay_status = 'N';
         if (!isset($result_arr['result_pay'])) {
             $return_array = array('status' => '0', 'succMoney' => 0, 'TransID' => $trans_no, 'SuccTime' => 0, 'CheckResult' => 'N');
         } else {
             switch ($result_arr['result_pay']) {
                 case 'WAITING':
                     $pay_status = 'P';
                     break;
                 case 'PROCESSING':
                     $pay_status = 'P';
                     break;
                 case 'FAILURE':
                     $pay_status = 'F';
                     break;
                 case 'SUCCESS':
                     $pay_status = 'Y';
                     break;
                 case 'REFUND':
                     $pay_status = 'R';
                     break;
                 default:
                     $pay_status = 'N';
                     break;
             }
             $return_array = array('status' => '1', 'succMoney' => $result_arr['money_order'], 'TransID' => $result_arr['no_order'] != '' ? $result_arr['no_order'] : $trans_no, 'SuccTime' => $result_arr['dt_order'], 'CheckResult' => $pay_status);
         }
         return $return_array;
     } else {
         if ($type == 'all') {
             return $result_arr;
         }
     }
 }
Exemplo n.º 26
0
 /**
  * 获取返回时的签名验证结果
  * @param $para_temp 通知返回来的参数数组
  * @param $sign 返回的签名结果
  * @return 签名验证结果
  */
 function getSignVeryfy($para_temp, $sign)
 {
     //除去待签名参数数组中的空值和签名参数
     $para_filter = paraFilter($para_temp);
     //对待签名参数数组排序
     $para_sort = argSort($para_filter);
     //把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串
     $prestr = createLinkstring($para_sort);
     $isSgin = false;
     switch (strtoupper(trim($this->alipay_config['sign_type']))) {
         case "RSA":
             $isSgin = rsaVerify($prestr, trim($this->alipay_config['ali_public_key_path']), $sign);
             /*
             $log_text = 'Prestr:'.$prestr.',Alipay_public_key_path:'.trim($this->alipay_config['ali_public_key_path']);
             logResult($log_text);
             */
             break;
         default:
             $isSgin = false;
     }
     return $isSgin;
 }
 /**
  * 获取返回时的签名验证结果
  * @param $para_temp 通知返回来的参数数组
  * @param $sign 返回的签名结果
  * @param $isSort 是否对待签名数组排序
  * @return 签名验证结果
  */
 function getSignVeryfy($para_temp, $sign, $isSort)
 {
     //除去待签名参数数组中的空值和签名参数
     //file_put_contents("./alipaylog/getSignVeryfy_para_temp_".strftime("%Y%m%d%H%M%S",time()).".txt",print_r($para_temp,true));
     $para = paraFilter($para_temp);
     //file_put_contents("./alipaylog/getSignVeryfy_para1_".strftime("%Y%m%d%H%M%S",time()).".txt",print_r($para,true));
     //对待签名参数数组排序
     if ($isSort) {
         $para = argSort($para);
     } else {
         $para = $this->sortNotifyPara($para);
     }
     //file_put_contents("./alipaylog/getSignVeryfy_para2_".strftime("%Y%m%d%H%M%S",time()).".txt",print_r($para,true));
     //把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串
     $prestr = createLinkstring($para);
     //file_put_contents("./alipaylog/getSignVeryfy_prestr_".strftime("%Y%m%d%H%M%S",time()).".txt",print_r($prestr,true));
     //echo $prestr;
     $isSgin = false;
     switch (strtoupper(trim($this->alipay_config['sign_type']))) {
         case "MD5":
             $isSgin = md5Verify($prestr, $sign, $this->alipay_config['key']);
             break;
         case "RSA":
             $isSgin = rsaVerify($prestr, trim($this->alipay_config['ali_public_key_path']), $sign);
             break;
         case "0001":
             $isSgin = rsaVerify($prestr, trim($this->alipay_config['ali_public_key_path']), $sign);
             break;
         default:
             $isSgin = false;
     }
     return $isSgin;
 }
Exemplo n.º 28
0
 public function actionChargeOrder()
 {
     // 检查参数
     if (!isset($_REQUEST['uid']) || !isset($_REQUEST['pay_type']) || !isset($_REQUEST['token']) || !isset($_REQUEST['goods_id']) || !isset($_REQUEST['pay_type']) || !isset($_REQUEST['payment_type'])) {
         $this->_return('MSG_ERR_LESS_PARAM');
     }
     $uid = Yii::app()->request->getParam('uid');
     $token = trim(Yii::app()->request->getParam('token'));
     $pay_type = trim(Yii::app()->request->getParam('pay_type'));
     $app_id = trim(Yii::app()->request->getParam('app_id'));
     $payment_type = trim(Yii::app()->request->getParam('payment_type', 1));
     $goods_id = Yii::app()->request->getParam('goods_id');
     if (!Token::model()->verifyToken($uid, $token, $GLOBALS['__APPID'])) {
         $this->_return('MSG_ERR_TOKEN');
     }
     if (!User::model()->isSetPassword($uid)) {
         $this->_return('MSG_ERR_UNSET_PASSWORD');
     }
     $goods_info = Common::model()->getGoodsInfo($goods_id);
     if (!is_array($goods_info)) {
         $this->_return('MSG_ERR_FAIL_PARAM');
     }
     // 支付订单创建
     $out_trade_no = Pay::model()->createOrder($uid, $goods_info, $GLOBALS['__APPID'], $pay_type, $GLOBALS['__CHANNEL'], $GLOBALS['__PLATFORM']);
     if ($out_trade_no < 0) {
         $this->_return('MSG_ERR_UNKOWN');
     }
     // 记录Log
     Log::model()->_pay_log($uid, 'CREATE_ORDER', date('Y-m-d H:i:s'), $out_trade_no);
     $data['out_trade_no'] = $out_trade_no;
     $config_arr = Yii::app()->params['alipay_config'];
     //支付宝充值返回支付宝前段签名
     Yii::import('application.extensions.alipay.*');
     require_once 'lib/alipay_notify.class.php';
     $alipayNotify = new AlipayNotify($config_arr);
     $price = $goods_info['price'] / 100;
     $subject = $goods_info['name'];
     $body = $goods_info['name'] . ", 你值得拥有";
     $price = '"' . $price . '"';
     $subject = '"' . $subject . '"';
     $body = '"' . $body . '"';
     if ($app_id) {
         $app_id = '"' . $app_id . '"';
     }
     /*
     if($extern_token){
         $extern_token = '"'.$extern_token.'"';
     }
     */
     /*
     if($appenv){
         $appenv = '"'.$appenv.'"';
     }
     */
     if ($payment_type) {
         $payment_type = '"' . $payment_type . '"';
     }
     /*
     if($it_b_pay){
         $it_b_pay = '"'.$it_b_pay.'"';
     }
     */
     /*
     if($show_url){
         $show_url = '"'.urlencode($show_url).'"';
     }
     */
     $service = '"mobile.securitypay.pay"';
     $partner = '"' . Yii::app()->params['partner'] . '"';
     $charset = '"utf-8"';
     $notify_url = '"' . urlencode(Yii::app()->params['notifyUrl']) . '"';
     $out_trade_no = '"' . $out_trade_no . '"';
     $seller_id = '"' . Yii::app()->params['partner'] . '"';
     $sign_date = array('seller_id' => $seller_id, 'total_fee' => $price, 'service' => $service, 'partner' => $partner, '_input_charset' => $charset, 'notify_url' => $notify_url, 'out_trade_no' => $out_trade_no, 'subject' => $subject, 'app_id' => $app_id, 'payment_type' => $payment_type, 'body' => $body);
     $sign_date = paraFilter($sign_date);
     $sign_date = createLinkstring($sign_date);
     $private_key_url = '../extensions/alipay/' . $alipayNotify->alipay_config['private_key_path'];
     $data['sign'] = rsaSign($sign_date, $private_key_url);
     $data['url'] = $sign_date;
     $data['notifyUrl'] = Yii::app()->params['notifyUrl'];
     // 发送返回值
     $this->_return('MSG_SUCCESS', $data);
 }
Exemplo n.º 29
0
 /**
  * 拼接保留域
  * @param req 请求要素
  * @return 保留域
  */
 static function buildReserved($req)
 {
     $prestr = "{" . createLinkstring($req, true, true) . "}";
     return $prestr;
 }
Exemplo n.º 30
0
function buildRequestMysign($para_sort, $md5)
{
    //把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串
    $prestr = createLinkstring($para_sort);
    $mysign = md5Sign($prestr, $md5);
    return $mysign;
}