程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 支付寶手機支付 接口

支付寶手機支付 接口

編輯:關於PHP編程

 

 講解:

  一:取得  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) {
		//以“&”字符切割字符串
		$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'];?>" >
<?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>

  明天上返回的那個

 

        

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved