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

支付宝手机支付 接口

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
發布: 2016-06-13 11:32:06
原創
2294 人瀏覽過

 

 讲解:

  一:取得  token

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

      req_data  和 sign

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

1

2

3

4

5

6

7

8

<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(签名)格式如下

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

$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 解码 然后还得用解析 返回的数据

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

/**

     * 解析远程模拟提交后返回的信息

         * @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)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

$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,

    )

登入後複製

最后 跳转到支付宝

1

2

3

4

5

6

7

8

9

<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>

登入後複製

  明天上返回的那个

 

        

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
個人支付寶使用H5拉起支付
來自於 1970-01-01 08:00:00
0
0
0
javascript - 支付寶即時支付 問題
來自於 1970-01-01 08:00:00
0
0
0
php微信支付掃碼支付與公眾號支付
來自於 1970-01-01 08:00:00
0
0
0
javascript - 電商平台支付問題
來自於 1970-01-01 08:00:00
0
0
0
熱門推薦
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板