千家信息网

php版如何开发银联支付接口

发表于:2025-01-15 作者:千家信息网编辑
千家信息网最后更新 2025年01月15日,小编给大家分享一下php版如何开发银联支付接口,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!银联支付,首先要注意二重要的部
千家信息网最后更新 2025年01月15日php版如何开发银联支付接口

小编给大家分享一下php版如何开发银联支付接口,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

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

PHP运行环境是5.4.18以上

开了扩展openssl

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

下面是我用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版如何开发银联支付接口"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

0