www.gusucode.com > ShopEx481 & PHPWind 整合版码程序 > plugins/payment/pay.nps.php
<?php require('paymentPlugin.php'); class pay_nps extends paymentPlugin{ var $name = 'NPS网上支付-内卡';//NPS网上支付-内卡 var $logo = 'NPS'; var $version = 20070902; var $charset = 'gb2312'; var $submitUrl = 'https://payment.nps.cn/PHPReceiveMerchantAction.do'; // var $submitButton = 'http://img.alipay.com/pimg/button_alipaybutton_o_a.gif'; ##需要完善的地方 var $supportCurrency = array("CNY"=>"CNY"); var $supportArea = array('AREA_CNY'); var $desc = ''; var $orderby = 19; function toSubmit($payment){ $merId = $this->getConf($payment["M_OrderId"], 'member_id'); $ikey = $this->getConf($payment["M_OrderId"], 'PrivateKey'); $state = 0; $language = 1; $payment["M_Currency"]=1; if ($payment["R_Name"] == "") $payment["R_Name"] = "NA"; if ($payment["R_Address"] == "") $payment["R_Address"] = "NA"; if ($payment["R_PostCode"] == "") $payment["R_PostCode"] = "NA"; if ($payment["R_Telephone"] == "") $payment["R_Telephone"] = "NA"; if ($payment["R_Email"] == "") $payment["R_Email"] = "NA"; $m_info = $merId."|".$payment["M_OrderId"]."|".$payment["M_Amount"]."|".$payment["M_Currency"]."|".$this->callbackUrl."|".$language ; $s_info = $payment["P_Name"]."|".$payment["P_Address"]."|".$payment["P_PostCode"]."|".$payment["P_Telephone"]."|".$payment["P_Email"] ; $r_info = $payment["R_Name"]."|".$payment["R_Address"]."|".$payment["R_PostCode"]."|".$payment["R_Telephone"]."|".$payment["R_Email"]."|".$payment["M_Remark"]."|".$state."|".date("Y-m-d H:i:s",$payment["M_Time"]) ; $OrderInfo = $m_info."|".$s_info."|".$r_info ; $charset = $this->system->loadModel('utility/charset'); $OrderInfo = $charset->utf2local($OrderInfo,'zh'); $OrderInfo = $this->StrToHex($OrderInfo); $digest = strtoupper(md5($OrderInfo.$ikey)); $return['M_ID'] = $merId; $return['digest'] = $digest; $return['OrderMessage'] = $OrderInfo; return $return; } function callback($in,&$paymentId,&$money,&$message){ $m_id = $in['m_id']; $m_orderid = $in['m_orderid']; //商家订单号 $m_oamount = $in['m_oamount']; //支付金额 $State = $in['m_status']; //支付状态2成功,3失败 //接收组件的加 $OrderInfo = $in['OrderMessage']; //订单加密信息 $signMsg = $in['Digest']; //密匙 //接收新的md5加密认证 $newmd5info = $in['newmd5info']; $paymentId = $m_orderid; $money = $m_oamount; $key = $this->getConf($m_orderid,"PrivateKey"); $digest = strtoupper(md5($OrderInfo.$key)); //新的整合md5加密 $newtext = $m_id.$m_orderid.$m_oamount.$key.$State; $newMd5digest = strtoupper(md5($newtext)); if ($digest == $signMsg){ //解密 $OrderInfo = $this->HexToStr($OrderInfo); //md5密匙认证 if($newmd5info == $newMd5digest){ if ($State == 2){ return PAY_SUCCESS; }else{ $message = '更新数据库,支付失败。'; return PAY_FAILED; } }else{ $message = '支付信息不正确,可能被篡改。'; return PAY_ERROR; } }else{ $message = '支付信息不正确,可能被篡改。'; return PAY_ERROR; } } function getfields(){ return array( 'member_id'=>array( 'label'=>'客户号', 'type'=>'string' ), 'PrivateKey'=>array( 'label'=>'私钥', 'type'=>'string' ) ); } /**** NPS 公共函数定义******/ function stringToHex ($s) { $r = ""; $hexes = array ("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"); for ($i=0; $i<strlen($s); $i++) {$r .= ($hexes [(ord($s{$i}) >> 4)] . $hexes [(ord($s{$i}) & 0xf)]);} return $r; } function HexToStr($hex) { $string=""; for ($i=0;$i<strlen($hex)-1;$i+=2) $string.=chr(hexdec($hex[$i].$hex[$i+1])); return $string; } function StrToHex($string) { $hex=""; for ($i=0;$i<strlen($string);$i++) $hex.=dechex(ord($string[$i])); $hex=strtoupper($hex); return $hex; } /**** NPS 公共函数定义******/ } ?>