银联支付接口+支付宝接口统一支付功能

article/2025/10/9 0:56:14
这个demo发出来已经比较久了,后面发现陆续还有同学找到我,我这里说下现在的情况。
这个接口中的银联支付接口实际也是走的支付宝接口,不需要单独申请银联了。但是!支付宝的这个接口已经下架了,以前已经接入的此接口还可以照常使用,新接入的不能再使用银联接口。 这个demo发出来已经比较久了,后面发现陆续还有同学找到我,我这里说下现在的情况。
这个接口中的银联实际也是走的支付宝接口,不需要单独申请银联了。但是!支付宝的这个接口已经下架了,以前已经接入的此接口还可以照常使用,新接入的不能再使用银联接口。也就是说本demo可能已经失效(主要是银联那部分,纯支付宝的不知道还能不能用,现在没测试),大家作为学习研究吧~
===================
这个model将支付宝和银行支付统一到一起,摆脱了对SDK的依赖,我尽量封在了
PayAction:
  1. <?php
  2.  class PayAction extends Action{
  3.     //支付跳转
  4.     function do_pay(){
  5.         //构造参数
  6.         $payment = array(
  7.             'money'=>12,
  8.             'deal_name'=>'充值',
  9.             //支付银行,对应银行ID我在后面贴出来
  10.             'bank_id'=>'',
  11.             'notice_sn'=>'20140920123456',
  12.         );
  13.         echo D('Payment')->get_payment_code($payment);
  14.     }
  15.     
  16.     //支付结果同步回调
  17.     function response(){
  18.         $request = $_GET;
  19.         unset($request['_URL_']);
  20.         $pay_res = D('Payment')->notify($request);

  21.         if($pay_res['status']){
  22.             //支付成功业务逻辑
  23.         }else{
  24.             $this->error('支付失败');
  25.         }
  26.     }
  27.     
  28.     //支付结果异步回调
  29.     function notify(){
  30.         $request = $_POST;
  31.         $pay_res = D('Payment')->notify($request);

  32.         if($pay_res['status']){
  33.             //支付成功业务逻辑
  34.             echo 'success';
  35.         }else{
  36.             echo 'fail';
  37.         }
  38.     }
  39.  }

  40.  //银行ID
  41. $bank_id = array(
  42.     'ICBCB2C'    =>    '中国工商银行',
  43.     'CMB'        =>    '招商银行',
  44.     'CCB'        =>    '中国建设银行',
  45.     'ABC'        =>    '中国农业银行',
  46.     'SPDB'        =>    '上海浦东发展银行',
  47.     'SDB'        =>    '深圳发展银行',
  48.     'CIB'        =>    '兴业银行',
  49.     'BJBANK'    =>    '北京银行',
  50.     'CEBBANK'    =>    '中国光大银行',
  51.     'CMBC'        =>    '中国民生银行',
  52.     'CITIC'        =>    '中信银行',
  53.     'GDB'        =>    '广东发展银行',
  54.     'SPABANK'    =>    '平安银行',
  55.     'BOCB2C'    =>    '中国银行',
  56.     'COMM'        =>    '交通银行',
  57.         'ALIPAY'    =>    '支付宝',
  58.  );

  59.  ?>
复制代码
出现调试错误一般是参数传错了
1、配置model里面的config,model里其他东西根本不用看
2、构造请求参数$payment
money、deal_name和订单号notice_sn是你随便给的,bank_id在页面用 radio传过来的其值是我给的那些银行ID,比如工行就是ICBCB2C


PaymentModel:
  1. <?php

  2.  class PaymentModel extends Model{
  3.     private $config;
  4.     function _initialize(){
  5.         $this->config = array(
  6.             'alipay_partner'=>C('ALIPAY_PARTNER'),
  7.             'alipay_account'=>C('ALIPAY_ACCOUNT'),
  8.             'alipay_key'=>C('ALIPAY_KEY'),
  9.             'return_url' => 'http://'.HOST_NAME.U('Pay/response'),
  10.             'notify_url' => 'http://'.HOST_NAME.U('Pay/notify'),
  11.         );
  12.     }
  13.     function get_payment_code($form){
  14.         $link = $form['bank_id'] == 'ALIPAY' ? $this->alipay_link($form) : $this->bank_link($form);
  15.         return $link;
  16.     }
  17.     // 银联接连
  18.     function bank_link($form){
  19.         $payment_notice = array(
  20.             'money'=>$form['money'],
  21.             'deal_name'=>$form['order_name'],
  22.             'bank_id'=>$form['bank_id'],
  23.             'notice_sn'=>$form['order_sn'],
  24.         );
  25.         $money = round($payment_notice['money'],2);
  26.         $payment_info = $this->config;

  27.         $subject = $payment_notice['deal_name'];
  28.         
  29.         $data_return_url = $payment_info['return_url'];
  30.         $data_notify_url = $payment_info['notify_url'];

  31.         $service = 'create_direct_pay_by_user';
  32.         /* 银行类型 */
  33.         $bank_type = $payment_notice['bank_id'];
  34.         
  35.         $parameter = array(
  36.             'service'           => $service,
  37.             'partner'           => $payment_info['alipay_partner'],
  38.             //'partner'           => ALIPAY_ID,
  39.             '_input_charset'    => 'utf-8',
  40.             'notify_url'        => $data_notify_url,
  41.             'return_url'        => $data_return_url,
  42.             /* 业务参数 */
  43.             'subject'           => $subject,
  44.             'out_trade_no'      => $payment_notice['notice_sn'], 
  45.             'price'             => $money,
  46.             'quantity'          => 1,
  47.             'payment_type'      => 1,
  48.             /* 物流参数 */
  49.             'logistics_type'    => 'EXPRESS',
  50.             'logistics_fee'     => 0,
  51.             'logistics_payment' => 'BUYER_PAY_AFTER_RECEIVE',
  52.             'extend_param'    => 'changjianghu',
  53.             /* 买卖双方信息 */
  54.             'seller_email'      => $payment_info['alipay_account'],
  55.             'defaultbank'    =>    $bank_type,
  56.             'payment'    =>    'bankPay'
  57.         );

  58.         $parameter = $this->argSort($parameter);

  59.         $param = '';
  60.         $sign  = '';

  61.         foreach ($parameter AS $key => $val){
  62.             $param .= "$key=" .urlencode($val). "&";
  63.             $sign  .= "$key=$val&";
  64.         }

  65.         $param = substr($param, 0, -1);
  66.         $sign  = substr($sign, 0, -1). $payment_info['alipay_key'];
  67.         $sign_md5 = md5($sign);

  68.         
  69.         $payLinks = '<form target="_blank" action="https://www.alipay.com/cooperate/gateway.do?'.$param. '&sign='.$sign_md5.'&sign_type=MD5" id="jumplink" method="post">正在连接支付接口...</form>';
  70.         $payLinks.='<script type="text/javascript">document.getElementById("jumplink").submit();</script>';

  71.         return $payLinks;
  72.     }
  73.     // 支付宝链接
  74.     function alipay_link($form){
  75.         $payment_notice = array(
  76.             'money'=>$form['money'],
  77.             'deal_name'=>$form['order_name'],
  78.             'bank_id'=>$form['bank_id'],
  79.             'notice_sn'=>$form['order_sn'],
  80.         );
  81.         $money = round($payment_notice['money'],2);
  82.         $payment_info = $this->config;

  83.         $subject = $payment_notice['deal_name'];
  84.         
  85.         $data_return_url = $payment_info['return_url'];
  86.         $data_notify_url = $payment_info['notify_url'];
  87.         
  88.         $parameter = array(
  89.             'service'           => 'create_direct_pay_by_user',
  90.             'partner'           => $payment_info['alipay_partner'],
  91.             //'partner'           => ALIPAY_ID,
  92.             '_input_charset'    => 'utf-8',
  93.             'notify_url'        => $data_notify_url,
  94.             'return_url'        => $data_return_url,
  95.             /* 业务参数 */
  96.             'subject'           => $subject,
  97.             'out_trade_no'      => $payment_notice['notice_sn'], 
  98.             'price'             => $money,
  99.             'quantity'          => 1,
  100.             'payment_type'      => 1,
  101.             /* 物流参数 */
  102.             'logistics_type'    => 'EXPRESS',
  103.             'logistics_fee'     => 0,
  104.             'logistics_payment' => 'BUYER_PAY_AFTER_RECEIVE',
  105.             'extend_param'        => 'changjianghu',
  106.             /* 买卖双方信息 */
  107.             'seller_email'      => $payment_info['alipay_account']
  108.         );
  109.         // print_r($parameter);exit;
  110.         $parameter = $this->argSort($parameter);

  111.         $param = '';
  112.         $sign  = '';

  113.         foreach ($parameter AS $key => $val)
  114.         {
  115.             $param .= "$key=" .urlencode($val). "&";
  116.             $sign  .= "$key=$val&";
  117.         }

  118.         $param = substr($param, 0, -1);
  119.         $sign  = substr($sign, 0, -1). $payment_info['alipay_key'];
  120.         $sign_md5 = md5($sign);

  121.         
  122.         $payLinks = '<form action="https://www.alipay.com/cooperate/gateway.do?'.$param. '&sign='.$sign_md5.'&sign_type=MD5" id="jumplink" method="post">正在连接支付接口...</form>';
  123.         $payLinks.='<script type="text/javascript">document.getElementById("jumplink").submit();</script>';
  124.         
  125.         return $payLinks;
  126.     }

  127.  /*结果*/
  128.     function notify($request){
  129.         $return_res = array(
  130.             'info'=>'',
  131.             'status'=>false,
  132.         );
  133.         $payment = $this->config;
  134.         
  135.         $request = $this->argSort($request);

  136.         /* 检查数字签名是否正确 */
  137.         $isSign = $this->getSignVeryfy($request);
  138.         if (!$isSign){//签名验证失败
  139.             $return_res['info'] = '签名验证失败';
  140.             return $return_res;
  141.         }

  142.         if ($request['trade_status'] == 'TRADE_SUCCESS' || $request['trade_status'] == 'TRADE_FINISHED' || $request['trade_status'] == 'WAIT_SELLER_SEND_GOODS' || $request['trade_status'] == 'WAIT_BUYER_CONFIRM_GOODS'){
  143.             
  144.             $return_res['status'] = true;
  145.             
  146.         }
  147.         return $return_res;
  148.     }

  149.     // 获取返回时的签名验证结果
  150.     function getSignVeryfy($para_temp) {
  151.         //除去待签名参数数组中的空值和签名参数
  152.         $para_filter = $this->paraFilter($para_temp);
  153.         //对待签名参数数组排序
  154.         $para_sort = $this->argSort($para_filter);
  155.         //把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串
  156.         $prestr = $this->createLinkstring($para_sort);
  157.         
  158.         $isSgin = false;
  159.         $isSgin = $this->md5Verify($prestr, $para_temp['sign'], $this->config['alipay_key']);
  160.         return $isSgin;
  161.     }
  162.     // 验证签名
  163.     function md5Verify($prestr, $sign, $key) {
  164.         $prestr = $prestr . $key;
  165.         $mysgin = md5($prestr);

  166.         if($mysgin == $sign) {
  167.             return true;
  168.         }
  169.         else {
  170.             return false;
  171.         }
  172.     }
  173.     // 把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串
  174.     function createLinkstring($para) {
  175.         $arg  = "";
  176.         while (list ($key, $val) = each ($para)) {
  177.             $arg.=$key."=".$val."&";
  178.         }
  179.         //去掉最后一个&字符
  180.         $arg = substr($arg,0,count($arg)-2);
  181.         
  182.         //如果存在转义字符,那么去掉转义
  183.         if(get_magic_quotes_gpc()){$arg = stripslashes($arg);}
  184.         
  185.         return $arg;
  186.     }
  187.     // 除去数组中的空值和签名参数
  188.     function paraFilter($para) {
  189.         $para_filter = array();
  190.         while (list ($key, $val) = each ($para)) {
  191.             if($key == "sign" || $key == "sign_type" || $val == "")continue;
  192.             else    $para_filter[$key] = $para[$key];
  193.         }
  194.         return $para_filter;
  195.     }
  196.     // 对数组排序
  197.     function argSort($para) {
  198.         ksort($para);
  199.         reset($para);
  200.         return $para;
  201.     }
  202.     
  203.  }

  204.  ?>
复制代码
HTML模板:
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2.  <html xmlns="http://www.w3.org/1999/xhtml">
  3.  <head>
  4.  <meta name="Generator" />
  5.  <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
  6.  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  7.  <title>傲付宝-专业第三方支付接口申请开发</title>
  8.  <meta name="keywords" content="SEO关键词" />
  9.  <meta name="description" content="SEO描述" />
  10.  </head>

  11.  <body>    
  12.  <div class="header">
  13.     <div class="wrap">
  14.         <div class="logo f_l">
  15.                             <div class="link">                             
  16. <a href="http://www.aopay.com.cn">第三方支付平台</a>
  17. <a href="http://www.aopay.com.cn">聚合支付平台</a>
  18. <a href="http://www.aopay.com.cn">扫码支付平台</a>
  19. <a href="http://www.aopay.com.cn">二维码支付平台</a>
  20.             </div>

  21.         </div>
  22.         <ul class="main_nav f_l">
  23.                                     <li >
  24.                         <span>
  25.                         <a href="/"  target="" title="首页">首页</a>
  26.                         </span>        
  27.                     </li>
  28.                                     <li >
  29.                         <span>
  30.                         <a href="/deals"  target="" title="音乐众筹">音乐众筹</a>
  31.                         </span>        
  32.                     </li>
  33.                                     <li >
  34.                         <span>
  35.                         <a href="/seckill"  target="" title="秒杀">秒杀</a>
  36.                         </span>        
  37.                     </li>
  38.                                     <li >
  39.                         <span>
  40.                         <a href="/help-intro"  target="" title="帮助中心">帮助中心</a>
  41.                         </span>        
  42.                     </li>
  43.                                 <li style="position: relative;">
  44.                     <span>
  45.                             <a class="start_project_action" style="color: #f60;" href="/project-add" title="发起众筹">发起众筹</a>
  46.                     </span>
  47.                      <span>
  48.                             <a class="start_project_action" style="color: #690;" href="/seckill-add" title="发起秒杀">发起秒杀</a>
  49.                     </span>
  50.                 </li>
  51.         </ul>
  52.         <div class="f_r">
  53.             <div class="login_tip">    
  54.                     <a href="#" id="mymessage">消息</a>  |  
  55.     <a href="#" id="mycenter" style="color: #5b8902;">Badri</a>  |          
  56.     <a href="/user-loginout" title="登出" id="user_login_out">登出</a>
  57.     
  58.     
  59.     <div id="mymessage_drop" style="position:absolute; display:none;">
  60.         <div class="drop_box">
  61.             <span><a href="/news-fav">关注动态</a></span>
  62.             <span><a href="/comment">查看评论</a></span>
  63.             <span><a href="/message">查看私信</a></span>
  64.             <span><a href="/notify">查看通知</a></span>

  65.         </div>
  66.     </div>
  67.     <div id="mycenter_drop" style="position:absolute; display:none;">
  68.         <div class="drop_box">
  69.             <span><a href="/home/id-7">我的主页</a></span>
  70.             <span><a href="/account">项目管理</a></span>
  71.             <span><a href="/project/act-add">发起项目</a></span>
  72.             <span><a href="/seckill/act-seckill_list">秒杀管理</a></span>
  73.             <span><a href="/seckill/act-add">发起秒杀</a></span>
  74.             <span><a href="/settings">个人设置</a></span>

  75.         </div>
  76.     </div>
  77.     
  78.             </div>            
  79.             <form action="/deals" method="get" id="header_search_form">
  80.             <div class="header_seach">
  81.             <input type="button" value="" class="seach_submit" id="header_submit" />
  82.             <input type="text" id="header_keyword" name="k" value="搜索你想要的..." class="seach_text">
  83.             <input type="hidden" name="redirect" value="1" />                
  84.             </div>
  85.             </form>    
  86.             
  87.     
  88.             
  89.         </div>
  90.         
  91.         

  92.         
  93.     </div>        
  94.  </div>
  95.  <div class="blank"></div>

  96.  <div class="shadow_bg">
  97.     <div class="wrap white_box"">
  98.         <div class="page_title">
  99.             专为音乐人设计的便携式监听音箱iLoud            <div class="support_price">
  100.                 <font class="delivery_fee">
  101.                 支持金额  ¥1990.00            
  102.                         
  103.                 邮费:¥15.00
  104.                                 </font>
  105.                 应付总额 <span>¥2002.00</span> 元    
  106.             </div>
  107.         </div>
  108.         
  109.         <div class="switch_nav" style="height:1px;"></div>
  110.         
  111.         <div class="blank"></div>
  112.         
  113.         <div class="public_left">
  114.             
  115.             <form class="pay_form" action="/kcart-kgo_pay" target="_blank" method="post">                                    
  116.                 
  117.                                     <div class="form_row">
  118.                         <div class="blank15"></div>
  119.                         <label class="title">使用余额支付:</label>
  120.                         <input type="text" class="textbox" value="0" name="credit" style="width:100px;" />
  121.                         <label class="title" style="padding-left:10px;">可用余额:¥82,800.00</label>
  122.                         <input type="hidden" name="max_credit" value="82800.0000" />
  123.                         <input type="hidden" name="max_pay" value="2002.00" />
  124.                         <div class="blank15"></div>
  125.                     </div>
  126.                                         
  127.                 <div><style type='text/css'>.alibank_types{float:left; display:block; background:url(http://zc.changjianghu.com/system/payment/AlipayBank/banklogo.gif); font-size:0px; width:150px; height:10px; text-align:left; padding:15px 0px;}.bk_typeCMB{background-position:15px -444px; }.bk_typeICBCB2C{background-position:15px -404px; }.bk_typeCCB{background-position:15px -84px; }.bk_typeABC{background-position:15px -44px; }.bk_typeSPDB{background-position:15px -364px; }.bk_typeSDB{background-position:15px -324px; }.bk_typeCIB{background-position:15px -484px; }.bk_typeBJBANK{background-position:15px -610px; }.bk_typeCEBBANK{background-position:15px -124px; }.bk_typeCMBC{background-position:15px -164px; }.bk_typeCITIC{background-position:15px -284px; }.bk_typeGDB{background-position:15px -244px; }.bk_typeSPABANK{background-position:15px -903px; }.bk_typeBOCB2C{background-position:15px -939px; }.bk_typeCOMM{background-position:15px -204px; }.bk_typeICBCBTB{background-position:15px -782px; }.bk_typePSBC-DEBIT{background-position:15px -524px; }</style><script type='text/javascript'>function set_bank(bank_id){$("input[name='bank_id']").val(bank_id);}</script><label class='alibank_types bk_typeICBCB2C'><input type='radio' name='payment' value='24' rel='ICBCB2C' onclick='set_bank("ICBCB2C")' /></label><label class='alibank_types bk_typeCMB'><input type='radio' name='payment' value='24' rel='CMB' onclick='set_bank("CMB")' /></label><label class='alibank_types bk_typeCCB'><input type='radio' name='payment' value='24' rel='CCB' onclick='set_bank("CCB")' /></label><label class='alibank_types bk_typeABC'><input type='radio' name='payment' value='24' rel='ABC' onclick='set_bank("ABC")' /></label><label class='alibank_types bk_typeSPDB'><input type='radio' name='payment' value='24' rel='SPDB' onclick='set_bank("SPDB")' /></label><label class='alibank_types bk_typeSDB'><input type='radio' name='payment' value='24' rel='SDB' onclick='set_bank("SDB")' /></label><label class='alibank_types bk_typeCIB'><input type='radio' name='payment' value='24' rel='CIB' onclick='set_bank("CIB")' /></label><label class='alibank_types bk_typeBJBANK'><input type='radio' name='payment' value='24' rel='BJBANK' onclick='set_bank("BJBANK")' /></label><label class='alibank_types bk_typeCMBC'><input type='radio' name='payment' value='24' rel='CMBC' onclick='set_bank("CMBC")' /></label><label class='alibank_types bk_typeCITIC'><input type='radio' name='payment' value='24' rel='CITIC' onclick='set_bank("CITIC")' /></label><label class='alibank_types bk_typeGDB'><input type='radio' name='payment' value='24' rel='GDB' onclick='set_bank("GDB")' /></label><label class='alibank_types bk_typeSPABANK'><input type='radio' name='payment' value='24' rel='SPABANK' onclick='set_bank("SPABANK")' /></label><label class='alibank_types bk_typeBOCB2C'><input type='radio' name='payment' value='24' rel='BOCB2C' onclick='set_bank("BOCB2C")' /></label><label class='alibank_types bk_typeCOMM'><input type='radio' name='payment' value='24' rel='COMM' onclick='set_bank("COMM")' /></label><label class='alibank_types bk_typePSBC-DEBIT'><input type='radio' name='payment' value='24' rel='PSBC-DEBIT' onclick='set_bank("PSBC-DEBIT")' /></label><input type='hidden' name='bank_id' /><div class='blank'></div></div><div><div style='float:left;'><input type='radio' name='payment' value='25' /> 支付宝即时到帐支付:</div><div style='float:left; padding-left:10px;'><img src='http://zc.changjianghu.com/public/attachment/201406/20/13/53a3cb3a6be08.jpg' /></div><div style='float:left; padding-left:10px;'></div><div class='blank'></div></div>                
  128.                 <div class="blank"></div>
  129.                 <div>
  130.                     <div class="ui-button green" rel="green">
  131.                         <div>
  132.                             <span>确定,去付款</span>
  133.                         </div>
  134.                     </div>                
  135.                     <input type="hidden" id="back_url" value="/seckill-seckill_goods" />    
  136.                     <input type="hidden" value="" name="memo" />    
  137.                     <input type="hidden" value="65" name="id" />
  138.                     <input type="hidden" value="14" name="consignee_id" />    
  139.                     <input type="hidden" value="1" name="ajax" />                    
  140.                     <div class="blank15"></div>
  141.                 </div>
  142.                 
  143.             </form>
  144.             
  145.         </div><!--left-->
  146.         <div class="public_right">
  147.                 
  148.                 <div class="deal_item_box">
  149.                     <div class="deal_content_box">
  150.                     <div class="blank"></div>
  151.                     <a href="/deal-show/id-15" class="deal_title" title="专为音乐人设计的便携式监听音箱iLoud">专为音乐人设计的便携式监听音箱iLoud</a>
  152.                     <div class="blank"></div>
  153.                     <a href="/home/id-61">百音堂</a>

  154.                     </div>
  155.                     <div class="deal_item_dash" style="position:relative;">
  156.                         <div class="seckill_status"></div>
  157.                     </div>
  158.                     <div class="deal_content_box">
  159.                         <div class="ui-progress">
  160.                             <span style="width:90%;"></span>
  161.                         </div>
  162.                         <div class="blank"></div>
  163.                         <div class="div3"><span class="num">90%</span><span class="til">剩余</span></div>
  164.                         <div class="div3" style="text-align:center;"><span class="num" ><font>9</font></span><span class="til">剩余份数</span></div>
  165.                         <div class="div3" style="text-align:right;"><span class="num" ><font>1990</font></span><span class="til">价格</span></div>
  166.                 
  167.                         <div class="blank1"></div>
  168.                     </div>
  169.                 </div>
  170.                 
  171.                 
  172.                 
  173.             </div>
  174.         
  175.         <div class="blank"></div>
  176.         
  177.     </div>
  178.  </div>
  179.  <div class="blank"></div>

  180.  <div style="" id="share_window_bg" class="wap_bg"></div>
  181.  <div class="popup t_share" id="share_window" style="display:none">
  182.     <div class="tag_adfo dis_wap">
  183.         <div class="vip_link">
  184.             <dl>
  185.                 <h3>来自唱江湖的信息:</h3>
  186.                 <dd class="vip_link_btn" id="vip_link_btn"><!--   --></dd>
  187.             </dl>
  188.         </div>
  189.         <div class="share">
  190.             <h4>您可以分享到:</h4>
  191.             <ul id="fenxiang">
  192.                 <li class="share_qzone">
  193.                     <a href="javascript:;" title="QQ空间" u="qzone" onclick="share_music('qzone',this);">QQ空间</a>
  194.                 </li>
  195.                 <li class="share_weibo">
  196.                     <a href="javascript:;" title="新浪微博" u='sna' onclick="share_music('sna',this);">新浪微博</a>
  197.                 </li>
  198.                 <li class="share_qwei">
  199.                     <a href="javascript:;" title="腾讯微博" u="wbo" onclick="share_music('wbo',this);">腾讯微博</a>
  200.                 </li>
  201.                 <li class="share_renren">
  202.                     <a href="javascript:;" title="人人网" u="rr" onclick="share_music('rr',this);">人人网</a>
  203.                 </li>
  204.             </ul>
  205.         </div>
  206.         <input type="hidden" id="share_title_items" value="" />
  207.         <div title="关闭" id="share_window_close" class="fancybox_item fancybox_close"></div>
  208.     </div>
  209.  </div><div id="gotop"></div>
  210.  <div class="blank"></div>
  211.  <div class="footer">
  212.     <div class="wrap">
  213.         <div class="help_row">
  214.             <a href="/faq" title="常见问题">常见问题</a>
  215.                            |  <a href="/help-term" title="服务条款">服务条款</a>
  216.                            |  <a href="/help-intro" title="帮助中心">帮助中心</a>
  217.                            |  <a href="/help-privacy" title="隐私策略">隐私策略</a>
  218.                            |  <a href="/help-about" title="关于我们">关于我们</a>
  219.                            |  <a href="/help-6" title="费用价格">费用价格</a>
  220.                     </div>
  221.         <div class="license">
  222.                     </div>
  223.             </p>
  224.         </div>
  225.     </div>
  226.  </div>
  227.  

http://chatgpt.dhexx.cn/article/EdfAoLTm.shtml

相关文章

#DNS比较(北京联通宽带) @FDDLC

阿里&#xff1a;223.5.5.5 腾讯&#xff1a;119.29.29.29 百度&#xff1a;180.76.76.76 北京联通&#xff1a;202.106.46.151 北京联通&#xff1a;202.106.195.68

牛啊,全国DNS服务器IP地址都在这里了

各省公共DNS服务器IP大全 欢迎关注微信公众号【厦门微思网络】。www.xmws.cn专业IT认证培训19周年主要课程&#xff1a;思科、华为、红帽、ORACLE、VMware、CISP、PMP等认证培训及考证 名称各省公共DNS服务器IP大全114 DNS114.114.114.114114.114.115.115阿里 AliDNS223.5.5.52…

教育网系统服务器域名地址,北京教育网dns服务器地址

北京教育网dns服务器地址 内容精选 换一换 默认部署在VPC下的应用可以调用API。如果域名解析失败&#xff0c;则参考配置内网DNS&#xff0c;在当前终端节点上配置DNS服务器。配置完成后&#xff0c;部署在VPC下的应用可以调用API。配置DNS需要配置“/etc”目录下的resolv.conf…

全国DNS地址大全

电信DNS&#xff1a; 北京DNS地址&#xff1a; 202.96.199.133 202.96.0.133 202.106.0.20 202.106.148.1 202.97.16.195 上海DNS地址&#xff1a; 202.96.199.132 202.96.199.133 202.96.209.5 202.96.209.6 202.96.209.133 天津DNS地址&#xff1a; 202.99.96.68 10.10.64.68…

【EtherCAT】基础概念

一、定义 EtherCAT&#xff08;以太网控制自动化技术&#xff09;是最初由德国倍福&#xff08;Beckhoff&#xff09;公司开发的实时&#xff08;real—time&#xff09;工业以太网&#xff08;Ethernet&#xff09;技术&#xff0c;它是一种以以太网为基础的现场总线系统&…

EtherCAT是如何工作的

来源https://blog.csdn.net/u014311679/article/details/90713554 若有侵权&#xff0c;请联系删除。 这次讨论一下ETHERCAT是如何工作的&#xff1a; 应用层-数据链路层-物理层 物理层&#xff1a; RJ45标准连接器&#xff1b;TX to FX转换器&#xff1b;LVDS&#xff1a;低电…

IgH详解十、EtherCAT DC(1)理论

(Distributed Clocks) 分布式时钟 分布式时钟相当于每个节点都有一个时钟&#xff0c;在同一时刻&#xff0c;触发所有节点做给定的动作&#xff0c;要达到同一时刻触发就要求大家的时钟保持一致&#xff0c;也就是同步。 比如每个人都有手机&#xff0c;只要手机接入网络&…

EtherCAT 之邮箱

EtherCAT特点 由于工作需要&#xff0c; 最近在学习EtherCAT总线&#xff0c;对于主站和从站的通信&#xff0c;发表一下我个人的理解。 1. EtherCAT为保证低延迟高响应&#xff0c;不可能像MODBUS一样用软件解析数据包再转发的模式&#xff0c;而是采用“高速火车”不停车上下…

IgH详解八、EtherCAT SDO原理

主站通过使用 SDO对对象字典进行读取/写入操作,完成对从站设备进行参数设置&#xff64;状态监视等&#xff61; 从站SDO的读写是非实时的&#xff0c;所以需要多次访问来确保数据操作的正确性。 如下图写入操作&#xff0c;主站把数据发送到从站&#xff0c;从站返回WC确保数…

Ethercat学习笔记

1、EtherCAT原理介绍 EtherCAT从站设备在报文经过其节点时读取相应的数据报文&#xff0c;同样输入数据也是在报文经过时插入到报文中。整个过程报文只有几纳秒的时间延迟&#xff0c;实时性获得极大提高 EtherCAT作为一种工业以太网总线&#xff0c;充分利用了以太网的全双工…

igh ethercat主站文档(中文翻译上)

此翻译主要是用翻译软件翻译&#xff0c;部分自己修改&#xff0c;若有不当之处&#xff0c;可以下方评论或私聊我提醒修改&#xff0c;若转载&#xff0c;请注明出处 本文是&#xff11;&#xff0d;&#xff14;章节。 1 The IgH EtherCAT Master 本章介绍有关EtherCAT主站…

EtherCAT设备协议详解五、Modular Device Profile

ETG.5001.1: General MDP Device ModelETG5001定义了通用的模块设备模型&#xff0c;现在远程可扩展的IO模块基本都使用本协议实现 从总线上看是一个从站&#xff0c;实际上可以扩展多个卡片式IO模块 一个从站对应多个插槽&#xff0c;插槽可随机插入不同型号的卡片IO&#xff…

[工业互联-17]:常见EtherCAT主站与实现方法

目录 第1章 EtherCAT入门 1.1 简介 1.2 EtherCAT通信架构 第2章 EtherCAT主站方案 2.1 方案概述 2.2 主站配置步骤 2.3 EtherCAT主站软件 第3章 Windows操作系统支持EtherCAT的基本步骤 第4章 常见主站软件介绍&#xff1a;TwinCAT 4.1 简介 4.2 软件架构 4.3 应…

EtherCAT设备协议详解二、EtherCAT状态机及配置流程

EtherCAT状态机&#xff08;ESM&#xff09; EtherCAT状态机定义了每个EtherCAT从站设备的分步设置&#xff0c;并指示了可用的功能。设备可以拒绝来自主站的状态请求&#xff0c;并通过错误指示&#xff08;AL 状态寄存器中的错误标志&#xff09;和相关错误代码&#xff08;A…

Ethercat解析(十一)之分布时钟

驱动代码中&#xff0c;同步时钟涉及到如下几个概念&#xff1a; ⑴ 本地时钟&#xff1a;每一个支持DC的从站都有一个纳秒级分辨率的本地时钟寄存器。 每次从机上电&#xff0c;则寄存器从0开始计时&#xff0c;这就意味着不同的从机因为上电开机的时间不同而本地时钟也会有…

EtherCAT简介

EtherCAT&#xff08;用于控制自动化技术的以太网&#xff09;是Beckhoff&#xff08;倍福&#xff09;在2003年开发的实时以太网网络。它基于CANOPEN协议和以太网&#xff0c;但是与Internet通信或网络通信不同之处在于&#xff0c;它专门针对工业自动化控制进行了优化。这些标…

倍福EtherCAT通信协议详细解析

简介 1.1 运动控制 1.2 实时以太网 1.3 EtherCATEtherCAT原理介绍 2.1 实时性 2.2 端口管理 2.3 EtherCAT网络拓扑 2.4 EtherCAT网络协议栈 2.5 EtherCAT数据帧格式 2.6 EtherCAT设备寻址方式 2.7 分布式时钟(Distribute Clock) 2.8 应用层(Application Layer) 2.9 设备配置(De…

EtherCAT (学习笔记)

文章目录 1. 简介1.1 运动控制1.2 实时以太网1.3 EtherCAT 2. EtherCAT原理介绍2.1 实时性2.2 端口管理2.3 EtherCAT网络拓扑2.4 EtherCAT网络协议栈2.5 EtherCAT数据帧格式2.6 EtherCAT设备寻址方式2.7 分布式时钟(Distribute Clock)2.8 应用层(Application Layer)2.9 设备配置…

拨打电话功能

1.html方式 界面效果&#xff1a;直接跳转到拨号界面 实现方法 <a href"tel:18212345678">在线客服</a> 2.ts方式 界面效果&#xff1a;下面有弹窗&#xff0c;选择后&#xff0c;直接拨打出去 实现方法 2.1调用与html同名的ts文件内方法 步骤 1&#x…

Axure实现模拟拨打电话和真实拨打电话

Axure模拟拨打电话 Axure RP是一个专业的快速原型设计工具&#xff0c;让负责定义需求和规格、设计功能和界面的专家能够快速创建应用软件或Web网站的线框图、流程图、原型和规格说明文档。作为专业的原型设计工具&#xff0c;它能快速、高效的创建原型&#xff0c;同时支持多…