设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 数据 手机 公司
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2022-02-24 13:26 所属栏目:121 来源:互联网
导读:银联支付,首先要注意二重要的部分: PHP运行环境是5.4.18以上 开了扩展openss 开发手册上面的列子只做参考,因为基本都是错的。你可以试着去官网下一个demo。。。注意现在银联开发,没有测试密钥提供,只能在正式环境开发【20151219】 下面是我用ThinkPHP编
  银联支付,首先要注意二重要的部分:
 
  PHP运行环境是5.4.18以上
 
  开了扩展openss
 
  开发手册上面的列子只做参考,因为基本都是错的。你可以试着去官网下一个demo。。。注意现在银联开发,没有测试密钥提供,只能在正式环境开发【20151219】
 
  下面是我用ThinkPHP编写的一个支付类
 
  /**
  * 银联支付 v0.1
  * @auther:Summer<dengwz7788@gmail.com>;
  * @date:20151202
  * **/
  
  class NetPayAction extends BaseAction{
  //在类初始化方法中,引入相关类库
  public function _initialize() {
    header("Content-type:text/html;charset=utf-8");
    vendor('Netpay.util.common',"",".php"); //导入加密核心文件夹
    vendor('Netpay.util.SecssUtil',"",".class.php"); //导入加密核心文件夹
    vendor('Netpay.util.Settings_INI',"",".php"); //导入加密核心文件夹
    vendor('Netpay.util.Settings',"",".php"); //导入加密核心文件夹
    $this->securityPropFile= $_SERVER['DOCUMENT_ROOT'] . "/ThinkPHP/Extend/Vendor/Netpay/config/security.properties"; //谁知道这是啥,反正他们要我加的
    $this->b2cPaySend = __APP__."/Index/NetPay/b2cPaySend";
    $this->b2cRefundSend = __APP__."/Index/NetPay/b2cRefundSend";
    $this->b2cQuerySend = __APP__."/Index/NetPay/b2cQuerySend";
    $this->;MerBgUrl = __APP__."/Index/NetPay/MerBgUrl";
    $this->MerPageUrl = __APP__."/Index/NetPay/MerPageUrl";
  }
  
      
   if (count($paramArray) >0) {
      $dispatchUrl = $this->b2cPaySend;
      $transResvedJson = array();
      $cardInfoJson = array();
      $sendMap = array();
       foreach ($paramArray as $key => $value) {
        if (isEmpty($value)) {
          continue;
       }
       if (startWith($key, "trans_")) {
            $key = substr($key, strlen("trans_"));
                  $transResvedJson[$key] = $value;
       } else
           if (startWith($key, "card_")) {
                $key = substr($key, strlen("card_"));
                $cardInfoJson[$key] = $value;
           } else {
                $sendMap[$key] = $value;
           }
     }
  
     $transResvedStr = null;
     $cardResvedStr = null;
     if (count($transResvedJson) >0) {
        $transResvedStr = json_encode($transResvedJson);
     }
     if (count($cardInfoJson) > 0) {
        $cardResvedStr = json_encode($cardInfoJson);
     }
  
    $secssUtil = new SecssUtil();
    if (! isEmpty($transResvedStr)) {
      $transResvedStr = $secssUtil->decryptData($transResvedStr);
      $sendMap["TranReserved"] = $transResvedStr;
     }
    if (! isEmpty($cardResvedStr)) {
       $cardResvedStr = $secssUtil->decryptData($cardResvedStr);
       $sendMap["card_"] = $cardResvedStr;
     }
     $securityPropFile = $this>securityPropFile;
     $secssUtil->init($securityPropFile);
     $secssUtil->sign($sendMap);
  
     $sendMap["Signature"] = $secssUtil->getSign();
     $_SESSION = $sendMap;
     header("Location:" . $dispatchUrl);
   }
  }
  
  public function b2cPaySend(){
     layout(false);
     $settings = new Settings_INI();
     $settings->oad($this->securityPropFile);
     $pay_url = "https://payment.chinapay.com/CTITS/service/rest/page/nref/000000000017/0/0/0/0/0";
     $html = "<form name='payment' action='{$pay_url}' method='POST' target='_blank'>;";
     $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";
     foreach ($_SESSION as $k =>$v) {
        if (strstr($params, $k)) {
           $html .= "<input type='hidden' name = '" . $k . "' value ='" . $v . "'/>";
        }
         if ($secssUtil->verify($text)) {
                         //支付成功
            $_SESSION["VERIFY_KEY"] = "success";
       } else { //Cuoxin.com
         //支付失败
           $_SESSION["VERIFY_KEY"] = "fail";
       }
      }
     }
   }
  }
  银联支付应该是算比较简单的!!
 
  感觉银联的支付接口比支付宝的还简单好用了,当然每个考虑到的东西不一样哦,上面只是开个玩笑的哦.

(编辑:ASP站长网)

    网友评论
    推荐文章
      热点阅读