Heim >Backend-Entwicklung >PHP-Tutorial >支付宝手机支付 接口_PHP教程

支付宝手机支付 接口_PHP教程

WBOY
WBOYOriginal
2016-07-20 11:16:241140Durchsuche

 

 讲解:

  一:取得  token

    要取得 token 有两个 参数是 是必须 

      req_data  和 sign

req_data格式如下(这是一些必填的。如果想要更多的参数自己去下载手册):        

<direct_trade_create_req>
	<notify_url>{通知地址}</notify_url>
	<call_back_url>{返回地址}</call_back_url>
	<seller_account_name>{商家支付宝账号}</seller_account_name>
	<out_trade_no>{外部订单号}</out_trade_no>
	<subject>{商品介绍}</subject>
	<total_fee>{商品价格}</total_fee>
</direct_trade_create_req>

 sign(签名)格式如下

   
 $params = array(
            /* 基本信息 */
            'partner'           => {支付宝pid},
            'req_id'            =>  md5({网站订单号}),
            'service'           =>  'alipay.wap.trade.create.direct',
            'format'            =>  'xml',
            'v'                 =>  '2.0',   
            'sec_id'            =>  'MD5',
            "_input_charset"    => CHARSET
            "req_data"      =>  {以面的req_data}
        );
   
    if($sort){
            /* 排序 */
            ksort($params);
            reset($params);
        }
        $sign  = '';
        foreach ($params AS $key => $value)
        {
            $sign  .= "{$key}={$value}&";
        }

        md5(substr($sign, 0, -1) . {支付宝key});

 sign 要注意的地方 是 排序 md5之前一定要按手册上的排序不然会出错的

然后以post方式提交给

http://wappaygw.alipay.com/service/rest.htm?

注意 返回的 数据是 经过 urlencode 的 所心我们要用 urldecode 解码 然后还得用解析 返回的数据

/**
	 * 解析远程模拟提交后返回的信息
		 * @param $str_text 要解析的字符串
	 * @return 解析结果
	 */
	function parseResponse($str_text) {
		//以&ldquo;&&rdquo;字符切割字符串
		$para_split = explode('&',$str_text);
		//把切割后的字符串数组变成变量与数值组合的数组
		foreach ($para_split as $item) {
			//获得第一个=字符的位置
			$nPos = strpos($item,'=');
			//获得字符串长度
			$nLen = strlen($item);
			//获得变量名
			$key = substr($item,0,$nPos);
			//获得数值
			$value = substr($item,$nPos+1,$nLen-$nPos-1);
			//放入数组中
			$para_text[$key] = $value;
		}
		
		if( ! empty ($para_text['res_data'])) {			
			//token从res_data中解析出来(也就是说res_data中已经包含token的内容)
			$doc = new DOMDocument();
			$doc->loadXML($para_text['res_data']);
			$para_text['request_token'] = $doc->getElementsByTagName( "request_token" )->item(0)->nodeValue;
		}
		
		return $para_text;
	}

  最后的 规范的支付表单数据 就是(这里是要用get)

$params = array(
            'partner'           => $this->_config['wap_alipay_partner'],
            'req_id'            =>  md5({网站订单号}),
            'service'           =>  'alipay.wap.trade.create.direct',
            'format'            =>  'xml',
            'v'                 =>  '2.0',   
            'sec_id'            =>  'MD5',
            "_input_charset"    => CHARSET
			'req_data'=>'<auth_and_execute_req><request_token>' . {token} . '</request_token></auth_and_execute_req>',
			'service'	=>	"alipay.wap.auth.authAndExecute",			
		
	);
	//这个地方也要签名的。方式和上面一样
	$params['sign']	= _get_sign($params);
	
	//get数据
	$return = array(
		'online'    =>  {联线},
		'desc'      =>  {支付说明},
		'method'    =>  'GET',
		'gateway'   =>  'http://wappaygw.alipay.com/service/rest.htm?',
		'params'    =>  $params,
	)

最后 跳转到支付宝

 

 <form action="<?php echo $return['gateway'];?>" id="payform" method="<?php echo $return['method'];?>" style="display:none">
<?php foreach ( $return['params'] $_k=>$value){?>
	<input type="hidden" name="<?php echo $_k;>" value="<?php echo $value;>" />
<?php }?>

</form>
<script type="text/javascript">
  document.getElementById('payform').submit();
</script>

  明天上返回的那个

 

        

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/440113.htmlTechArticle讲解: 一:取得 token 要取得 token 有两个 参数是 是必须 req_data 和 sign req_data格式如下(这是一些必填的。如果想要更多的参数自己去下载...
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn