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

时间:2020-09-02  来源:开发手册  阅读:

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

PHP运行环境是5.4.18以上
开了扩展openss

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

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

/**
* 银联支付 v0.1
* @auther:Summer;
* @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";
}
 
public function index()
{
  $paramArray=array (
     "MerId" => "商户号",
     "MerOrderNo" => "0000001944663232",
     "OrderAmt" => "1",
     "TranDate" => "20151219",
    "TranTime" =>"171248",
    "TranType" => "0001",
    "BusiType" =>"0001",
    "Version" => "20140728",
    "CurryNo" => "CNY",
    "AccessType" =>; "0",
    "CommodityMsg" => "测试商品1号",
    "MerPageUrl" => $this->MerBgUrl,
    "MerBgUrl" =>$this->MerPageUrl,
    "MerResv" => "MerResv",
 );
 
 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 = "

;";
   $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 .= "";
      }
   }
 
        $html .= "";
        $html .= "<;/from>";
        $this->html = $html;
        $this->display();
}
 
public function pgReturn(){
  if ($_POST) {
      if (count($_POST) > 0) {
       $secssUtil = new SecssUtil();
       $securityPropFile = $this>securityPropFile;
       $secssUtil->init($securityPropFile);
       $text = array();
       foreach($_POST as $key=>$value){
           $text[$key] = urldecode($value);
        }
 
      if ($secssUtil->verify($text)) {
                       //支付成功
          $_SESSION["VERIFY_KEY"] = "success";
     } else {
       //支付失败
         $_SESSION["VERIFY_KEY"] = "fail";
     }
    }
   }
 }
}
银联支付应该是算比较简单的!!

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

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

http://m.bbyears.com/shipin/96286.html

推荐访问:
相关阅读 猜你喜欢
本类排行 本类最新