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

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

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-&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' => '20151219',
    'TranTime' =>'171248',
    'TranType' => '0001',
    'BusiType' =>'0001',
    'Version' => '20140728',
    '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;
     } 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) &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 = "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 {
       //支付失败
         $_SESSION["VERIFY_KEY"] = "fail";
     }
    }
   }
 }
}
银联支付应该是算比较简单的!!

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

时间: 2024-11-13 06:38:16

php版本银联支付接口开发实例的相关文章

php版银联支付接口开发简明教程_php技巧

本文实例讲述了php版银联支付接口开发的方法.分享给大家供大家参考,具体如下: 支付接口现在有第三方的支付接口也有银行的支付接口.这里就来介绍php版本银联支付接口开发的方法. 银联支付,首先要注意二重要的部分: PHP运行环境是5.4.18以上 开了扩展openssl 开发手册上面的列子只做参考,因为基本都是错的.你可以试着去官网下一个demo...注意现在银联开发,没有测试密钥提供,只能在正式环境开发 下面是我用ThinkPHP编写的一个支付类 /** * 银联支付 v0.1 * @auth

银联支付接口+支付宝接口统一支付功能

这个demo发出来已经比较久了,后面发现陆续还有同学找到我,我这里说下现在的情况.这个接口中的银联支付接口实际也是走的支付宝接口,不需要单独申请银联了.但是!支付宝的这个接口已经下架了,以前已经接入的此接口还可以照常使用,新接入的不能再使用银联接口.===================这个model将支付宝和银行支付统一到一起,摆脱了对SDK的依赖,我尽量封在了PayAction: <?php  class PayAction extends Action{     //支付跳转     fu

php微信支付接口开发程序_php技巧

php微信支付接口开发程序讲解: 必要条件: appid //公众号后台开发者中心获得(和邮件内的一样)   mchid//邮件内获得  key//商户后台自己设置  appsecret //公众号开发者中心获得 两个证书文件,邮件内获得 apiclient_cert.pem   apiclient_key.pem注意事项:公众号后台微信支付->开发配置->新增测试目录和测试个人微信号. 开发者中心->网页授权获取用户基本信息->修改成你的测试域名.否则会出现redirect_ur

ThinkPHP微信支付接口开发完整例子

最近有个微商城做了微信支付的接口,现在整理一下发上来.   首先是需要有已开通微信支付接口的公众号,这个相信大家都知道,开通之后微信会发一封邮件到你的邮箱,邮件的内容就是开发需要用到的一些接口信息了(包含账号密码之类的东西).   开发步骤   一.进入公众号平台,先设置几个参数,包括绑定域名.设置回调地址等等.   1.在设置 -> 公众号设置 -> 功能设置 -> 设置JS接口安全域名     2.在微信支付 -> 开发配置 -> 配置你的js支付接口,回调地址等等,正式

PHP版微信小店接口开发实例_php技巧

本文实例讲述了PHP版微信小店接口开发方法.分享给大家供大家参考,具体如下: 首先 大家可以去下一份小店开发的 API接口 因为 下面所有的 微信小店接口 数据格式 参数 API手册 里面都有现成的 你可以直接拿来用 好了 下面上代码 这里给大家 下载微小店 API文档 这里就先拿查询商品作为例子 //首先第一步是 获取access_token的代码 我这里呢 对token做了存表里的 因为token有限制 private function access_token(){ appid=shopa

php支付宝在线支付接口开发教程_php实例

1.什么是第三方支付 所谓第三方支付,就是一些和各大银行签约.并具备一定实力和信誉保障的第三方独立机构提供的交易支持平台.在通过第三方支付平台的交易中,买方选购商品后,使用第三方平台提供的账户进行货款支付,由第三方通知卖家货款到达. 目前提供第三方支付的机构很多,常见的有支付宝.财付通.快钱.网银在线.易宝支付.云网等各大支付平台.网站如果需要实现第三方支付首先应该向第三方支付平台申请一个账号并签署协议,协议生效后第三方支付平台将为其开通在线支付功能,通过程序将接口集成到网站中. 为什么要使用第

php版本交通银行网银支付接口开发示例

概述:网银支付接口 和支付宝接口大体上差不多,主要的区别是 交通银行提供的 接口核心的比如,加密等是通过java实现的.所以,要想办法使php和java能正常的通信,为此.官方也提供了两套实现方法,一个是通过 socket 进行通信,另一个方法是通过 java 桥接.下面演示的是 socket方法: 1. 配置运行环境 1.1  安装java,自行到oracle官网下载 java,然后安装,并配置正确的 环境变量. 1.2  把 测试的证书导入到java 虚拟机:  keytool " -imp

PHP后端银联支付及退款实例代码

声明:此文以当前银联官方最新SDK(2016-08-09 5.1.0版)进行说明,若出现包不相同的情况请检查是否是此版本 近期遇到银联支付以及相关退款(此文仅以手机控件支付作为前提)操作,下面会依次写出期间遇到的问题以及基本流程,在此之前通过官方的一张图片了解一个支付中,对于后端人员的我们需要做到的一些事情 由此图可以看出,后端在此负责1.平台订单生成:2.银联全渠道平台订单推送:3.返回tn码给前端进行支付:4.处理前台通知以及全渠道平台的异步通知. 此间难点有三,订单推送.异步通知处理.订单

php微信支付接口开发程序(流程已通)

必要条件: appid //公众号后台开发者中心获得(和邮件内的一样)   mchid//邮件内获得  key//商户后台自己设置  appsecret //公众号开发者中心获得 两个证书文件,邮件内获得 apiclient_cert.pem   apiclient_key.pem 注意事项: 公众号后台微信支付->开发配置->新增测试目录和测试个人微信号. 开发者中心->网页授权获取用户基本信息->修改成你的测试域名.否则会出现redirect_uri 参数错误 --------