1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 银联电子支付 php chinapay

银联电子支付 php chinapay

时间:2022-08-23 03:08:18

相关推荐

银联电子支付 php chinapay

之前看我博客百度关键字的时候,很多人都是因为银联搜到我这里,一直想做一个demo 给大家,可惜没商户申请不到,这次机缘巧合帮朋友做支付三部曲:微信支付,支付宝支付和银联支付,其他两个支付都烂大街的,这里就只把银联支付分享给大家,因为涉及到客户的信息,所以就不提供源代码下载了。

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

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

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

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

/*** 银联支付 v0.1* @auther:Summer<dengwz7788@>;* @date:1202* **/class NetPayAction extends BaseAction{//在类初始化方法中,引入相关类库public function _initialize() {header("Content-type:text/html;charset=utf-8");vendor('mon',"",".php"); //导入加密核心文件夹vendor('Netpay.util.SecssUtil',"",".class.php"); //导入加密核心文件夹vendor('Netpay.util.Settings_INI',"",".php"); //导入加密核心文件夹vendor('Netpay.util.Settings',"",".php"); //导入加密核心文件夹$this-&gt;securityPropFile= $_SERVER['DOCUMENT_ROOT'] . "/ThinkPHP/Extend/Vendor/Netpay/config/security.properties"; //谁知道这是啥,反正他们要我加的$this->b2cPaySend = __APP__."/Index/NetPay/b2cPaySend";$this-&gt;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' => '1219','TranTime' =>'171248','TranType' => '0001','BusiType' =>'0001','Version' => '0728','CurryNo' => 'CNY','AccessType' =>; '0','CommodityMsg' => '测试商品1号','MerPageUrl' => $this-&gt;MerBgUrl,'MerBgUrl' =>$this-&gt;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;} elseif (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) &gt; 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 = "/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 . "'/>";}}$html .= "<nput type='button' type='hidden' value='提交订单' >";$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";}}}}}

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。