php版本银联支付接口开发实例
发布:smiling 来源: PHP粉丝网 添加日期:2018-10-30 09:49:38 浏览: 评论:0
银联支付,首先要注意二重要的部分:
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";
- }
- 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 = "<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 { //phpfensi.com
- //支付失败
- $_SESSION["VERIFY_KEY"] = "fail";
- }
- }
- }
- }
- }
银联支付应该是算比较简单的!!
感觉银联的支付接口比支付宝的还简单好用了,当然每个考虑到的东西不一样哦,上面只是开个玩笑的哦.
Tags: php版本 php银联支付
相关文章
- ·隐藏PHP版本与apache版本方法总结(2014-08-22)
- ·详解PHP版本兼容之openssl调用参数(2021-10-19)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)