当前位置:首页 > PHP教程 > php高级应用 > 列表

php版本银联支付接口开发实例

发布:smiling 来源: PHP粉丝网  添加日期:2018-10-30 09:49:38 浏览: 评论:0 

银联支付,首先要注意二重要的部分:

PHP运行环境是5.4.18以上

开了扩展openss

开发手册上面的列子只做参考,因为基本都是错的。你可以试着去官网下一个demo。。。注意现在银联开发,没有测试密钥提供,只能在正式环境开发【20151219】

下面是我用ThinkPHP编写的一个支付类

  1. /** 
  2. * 银联支付 v0.1 
  3. * @auther:Summer<dengwz7788@gmail.com>; 
  4. * @date:20151202 
  5. * **/ 
  6.  
  7. class NetPayAction extends BaseAction{ 
  8. //在类初始化方法中,引入相关类库 
  9. public function _initialize() { 
  10.   header("Content-type:text/html;charset=utf-8"); 
  11.   vendor('Netpay.util.common',"",".php"); //导入加密核心文件夹 
  12.   vendor('Netpay.util.SecssUtil',"",".class.php"); //导入加密核心文件夹 
  13.   vendor('Netpay.util.Settings_INI',"",".php"); //导入加密核心文件夹 
  14.   vendor('Netpay.util.Settings',"",".php"); //导入加密核心文件夹 
  15.   $this-&gt;securityPropFile= $_SERVER['DOCUMENT_ROOT'] . "/ThinkPHP/Extend/Vendor/Netpay/config/security.properties"//谁知道这是啥,反正他们要我加的 
  16.   $this->b2cPaySend = __APP__."/Index/NetPay/b2cPaySend"
  17.   $this-&gt;b2cRefundSend = __APP__."/Index/NetPay/b2cRefundSend"
  18.   $this->b2cQuerySend = __APP__."/Index/NetPay/b2cQuerySend"
  19.   $this->;MerBgUrl = __APP__."/Index/NetPay/MerBgUrl"
  20.   $this->MerPageUrl = __APP__."/Index/NetPay/MerPageUrl"
  21.  
  22. public function index() 
  23.   $paramArray=array ( 
  24.      'MerId' => '商户号'
  25.      'MerOrderNo' => '0000001944663232'
  26.      'OrderAmt' => '1'
  27.      'TranDate' => '20151219'
  28.     'TranTime' =>'171248'
  29.     'TranType' => '0001'
  30.     'BusiType' =>'0001'
  31.     'Version' => '20140728'
  32.     'CurryNo' => 'CNY'
  33.     'AccessType' =>; '0'
  34.     'CommodityMsg' => '测试商品1号'
  35.     'MerPageUrl' => $this-&gt;MerBgUrl, 
  36.     'MerBgUrl' =>$this-&gt;MerPageUrl, 
  37.     'MerResv' => 'MerResv'
  38.  ); 
  39.    
  40.  if (count($paramArray) >0) { 
  41.     $dispatchUrl = $this->b2cPaySend; 
  42.     $transResvedJson = array(); 
  43.     $cardInfoJson = array(); 
  44.     $sendMap = array(); 
  45.      foreach ($paramArray as $key => $value) { 
  46.       if (isEmpty($value)) { 
  47.         continue
  48.      } 
  49.      if (startWith($key"trans_")) { 
  50.           $key = substr($keystrlen("trans_")); 
  51.                 $transResvedJson[$key] = $value
  52.      } else 
  53.          if (startWith($key"card_")) { 
  54.               $key = substr($keystrlen("card_")); 
  55.               $cardInfoJson[$key] = $value
  56.          } else { 
  57.               $sendMap[$key] = $value
  58.          } 
  59.    } 
  60.  
  61.    $transResvedStr = null; 
  62.    $cardResvedStr = null; 
  63.    if (count($transResvedJson) >0) { 
  64.       $transResvedStr = json_encode($transResvedJson); 
  65.    } 
  66.    if (count($cardInfoJson) &gt; 0) { 
  67.       $cardResvedStr = json_encode($cardInfoJson); 
  68.    } 
  69.  
  70.   $secssUtil = new SecssUtil(); 
  71.   if (! isEmpty($transResvedStr)) { 
  72.     $transResvedStr = $secssUtil->decryptData($transResvedStr); 
  73.     $sendMap["TranReserved"] = $transResvedStr
  74.    } 
  75.   if (! isEmpty($cardResvedStr)) { 
  76.      $cardResvedStr = $secssUtil->decryptData($cardResvedStr); 
  77.      $sendMap["card_"] = $cardResvedStr
  78.    } 
  79.    $securityPropFile = $this>securityPropFile; 
  80.    $secssUtil->init($securityPropFile); 
  81.    $secssUtil->sign($sendMap); 
  82.  
  83.    $sendMap["Signature"] = $secssUtil->getSign(); 
  84.    $_SESSION = $sendMap
  85.    header("Location:" . $dispatchUrl); 
  86.  } 
  87.  
  88. public function b2cPaySend(){ 
  89.    layout(false); 
  90.    $settings = new Settings_INI(); 
  91.    $settings->oad($this->securityPropFile); 
  92.    $pay_url = "https://payment.chinapay.com/CTITS/service/rest/page/nref/000000000017/0/0/0/0/0"
  93.    $html = "<form name='payment' action='{$pay_url}' method='POST' target='_blank'>;"
  94.    $params = "TranReserved;MerId;MerOrderNo;OrderAmt;CurryNo;TranDate;SplitMethod;BusiType;MerPageUrl;MerBgUrl;SplitType;MerSplitMsg;PayTimeOut;MerResv;Version;BankInstNo;CommodityMsg;Signature;AccessType;AcqCode;OrderExpiryTime;TranType;RemoteAddr;Referred;TranTime;TimeStamp;CardTranData"
  95.    foreach ($_SESSION as $k =>$v) { 
  96.       if (strstr($params$k)) { 
  97.          $html .= "<input type='hidden' name = '" . $k . "' value ='" . $v . "'/>"
  98.       } 
  99.    } 
  100.  
  101.         $html .= "<nput type='button' type='hidden' value='提交订单' >"
  102.         $html .= "<;/from>"
  103.         $this->html = $html
  104.         $this->display(); 
  105.  
  106. public function pgReturn(){ 
  107.   if ($_POST) { 
  108.       if (count($_POST) > 0) { 
  109.        $secssUtil = new SecssUtil(); 
  110.        $securityPropFile = $this>securityPropFile; 
  111.        $secssUtil->init($securityPropFile); 
  112.        $text = array(); 
  113.        foreach($_POST as $key=>$value){ 
  114.            $text[$key] = urldecode($value); 
  115.         } 
  116.  
  117.       if ($secssUtil->verify($text)) { 
  118.                        //支付成功 
  119.           $_SESSION["VERIFY_KEY"] = "success"
  120.      } else { //phpfensi.com 
  121.        //支付失败 
  122.          $_SESSION["VERIFY_KEY"] = "fail"
  123.      } 
  124.     } 
  125.    } 
  126.  } 

银联支付应该是算比较简单的!!

感觉银联的支付接口比支付宝的还简单好用了,当然每个考虑到的东西不一样哦,上面只是开个玩笑的哦.

Tags: php版本 php银联支付

分享到: