Rumah > php教程 > php手册 > 支付宝手机支付 接口

支付宝手机支付 接口

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Lepaskan: 2016-06-13 11:32:06
asal
2265 orang telah melayarinya

 

 讲解:

  一:取得  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>
Salin selepas log masuk

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});
Salin selepas log masuk

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;
	}
Salin selepas log masuk

最后的 规范的支付表单数据 就是(这里是要用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,
	)
Salin selepas log masuk

最后 跳转到支付宝

 <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>
Salin selepas log masuk

  明天上返回的那个

 

        

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Cadangan popular
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan