Zertaul
Zertaul
  • 发布:2015-04-11 17:38
  • 更新:2015-04-11 17:38
  • 阅读:3095

关于hb支付宝后台代码报错的问题

分类:5+ SDK

先上代码:

<?php
header('Content-type:text/plain');

//获取支付金额
$amount = '';

if($_SERVER['REQUEST_METHOD']=='POST'){
$amount = $_POSR['total'];
}else{
$amount=$_GET['total'];
}

$total = floatval($amount);

if(!$total){
$total = 1;
}

//对签名字符串转义
function createLinkstring($para){
$arg= "";
while(list($key,$val)=each($para)){
$arg.=$key.'="'.$val.'"&';
}

  //去掉最后一个&字符  
  $arg = substr($arg,0,count($arg)-2);  
  //如果存在转义字符,那么去掉转义  
  if(get_magic_quotes_gpc()){$arg = stripslashes($arg);}  
  //返回$arg  
  return $arg;  
  }  

//签名生成订单信息
function rsaSign($data){
//生成密钥(私钥)时获取,直接使用pem文件的字符串
$priKey = 'MIICXAIBAAKBgQC5nRAlF7udCnBAga4V2/1/3DxX7fFpcQePMsUjSxLanuw/rE268lhof/+P6dIkVLGukP0WjjBZrf+uVummI/jpT1fgqYIOp6DTy/+5/bUyX+NlPGUU+c+6VPIhLE8X0G9ulmxmfguJjoTjpgXr/AP6NKoVc1WZfuXaBKfIwbfUUwIDAQABAoGADlkPyG4/OHJ4HuRnWpU40Utq9rkT8jykgvM/veyttmyWgo2FLLBTGTDbxnoinmBVo9LdXYL8RdJnc0iQoyEgunZX59IzYbHVvVvoeOeph66Xa0UDr6lArnVqcXTTNw6zR/8XI8vHBT2t2cof4s60zjjEPRSyS9LUiLdvDHnc1vECQQDz3cYvsf6N6eMOnoZuzkds0R/W27oXWfR36jj8nvq5C5V3AbYVdaeuj64OZtKmLV2+VRJjGVzYnxvkXw4eWiyXAkEAwtlMmWK2//isib5X1YZu1ZsFMqbu5hTDopG3gm1Qo6cFkqzxjLnPcgtEwN9uTURsRoEvfDSHlWFYjnUz3weBpQJAHhtkK2FDNwwIDzb9C9MFuGZ9Es6fw+BEMUXGcVHDTHMkqcOZUj7rS77LU1XYbdGuACCKm5d3AftquyANIywo0wJBAI/v8Dr7Bk6vR931Q3NT/LpE6yEQ2jgTLLYCSPrLgB90uZQxt7qKZKlNk7ubEiN4ITgwJIDvWR1LrRyHjgr6w5UCQEgkBxthwpJdn2ra/b0DUmWrXlIF4CB2EuQlgpCuOw4Ks1OIUwJyrK1SQT0zPNA9YL3u9Pb/O8GrTTCw3bOiVNA=';
//这里是我按照支付宝官方生成的私钥,请问不知道对不对

      $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 = "xxxxxxxxxxxxxxxx";
//支付宝账号
$seller_id = "xxxxxx@xx.xxx";
//商品网址
//$base_path = urlencode('http://xxxxx.com.cn/');
$base_path = urlencode('http://xxxxl.com/plus/');
//异步通知地址
$notify_url = urlencode('http://xxx.com.cn');
//订单标题
$subject = 'yfmdh项目捐赠';
//订单详情
$body = '这个是个人得演示实例。';
//订单号,示例代码使用时间值作为唯一的订单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,
//必填,总金额,取值范围为[0.01,100000000.00]
'total_fee' => $total,
//必填,商品详情
'body' => $body,
//可选,未付款交易的超时时间,其默认值为29天
'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"';

?>

实际运行的时候,总是在 $res = openssl_get_privatekey($priKey); 这个地方出现错误,请问有知道是什么原因的么,请指教

2015-04-11 17:38 负责人:无 分享
已邀请:

该问题目前已经被锁定, 无法添加新回复