银联开发必须要开启mcrypt 和 bcmath 两个PHP扩展库的支持 如果没有就没有办法进行开发,先确认数据库是否开启扩展

关于银联支付接口 最主要的是银行提供的秘钥和私钥,

netpayclient.php加密文件   MerPrK.key私钥   PgPubk.key秘钥 是银联也商户签约后提供 非常重要

1:from表单 提交商户数据个银行  https://payment.ChinaPay.com/pay/TransGet银联生产环境接口 在测试是用银联提供的测试环境比较好

通过require_once 加载submit页面

    <!-- 银联支付页面 -->        <form action="https://payment.ChinaPay.com/pay/TransGet" method="post" target="_blank"><?php require_once("chinapay/netpayclient_order_submit.php");?><div style="display: none;"><input type=hidden name="MerId" value="<?php echo $merid ?>"/><input type=hidden name="OrdId" value="<?php echo $ordid ?>"/><input type=hidden name="TransAmt" value="<?php echo $transamt ?>"/><input type=hidden name="CuryId" value="<?php echo $curyid ?>"/><input type=hidden name="TransDate" value="<?php echo $transdate?>"/><input type=hidden name="TransType" value="<?php echo $transtype?>"/><input type=hidden name="Version" value="<?php echo $version?>"/><input type=hidden name="BgRetUrl" value="<?php echo $bgreturl?>"/><input type=hidden name="PageRetUrl" value="<?php echo $pagereturl?>"/><input type=hidden name="GateId" value="<?php echo $gateid?>"/><input type=hidden name="Priv1" value="<?php echo $priv1?>"/><input type=hidden name="ChkValue" value="<?php echo $chkvalue?>"/></div><li><div class="pay_boxin pay_curr"><span class="left"><img src="<?php echo Yii::app()->request->baseUrl ?>/assets/default/images/unionpay.jpg" height="40px"></span><span class="pay_money right"><p>支付<strong><?php echo @sprintf('%0.2f',$OrderInfo['TotalMoney'])?></strong>元</p></span></div><input type="submit" style="width:220px; height:50px; border:0px; margin:30px 0 0 500px; background: url(<?php echo Yii::app()->request->baseUrl ?>/assets/default/images/pay_quite.png) center no-repeat; cursor:pointer;" value="" ><div class="pay_disno" style="margin:30px 0 0 500px;"><img src="<?php echo Yii::app()->request->baseUrl ?>/assets/default/images/pay_quite.png"></div></li></form>

View Code

2:netpayclient_order_submit.php 进行数据的签名验证 并且导入私钥文件 加密部分的代码可以根据商户需求进行修改

<?php//header('Content-type: text/html; charset=gbk');include_once("netpayclient_config.php");
?>
<title>支付交易</title>
<?php//加载 netpayclient 组件include_once("netpayclient.php");//导入私钥文件, 返回值即为您的商户号,长度15位$merid = buildKey(PRI_KEY);if(!$merid) {echo "导入私钥文件失败!";exit;}//生成订单号,定长16位,任意数字组合,一天内不允许重复,本例采用当前时间戳,必填$ordid = substr($OrderInfo["PayNumber"], 1, 16);//"00" . date('YmdHis');//订单金额,定长12位,以分为单位,不足左补0,必填$transamt = padstr(str_replace(".", "", $OrderInfo['TotalMoney']),12);//padstr('1',12);//货币代码,3位,境内商户固定为156,表示人民币,必填$curyid = "156";//订单日期,本例采用当前日期,必填$transdate = date('Ymd');//交易类型,0001 表示支付交易,0002 表示退款交易$transtype = "0001";//接口版本号,全报文签名接口版本为20141120,必填$version = "20141120";//页面返回地址(您服务器上可访问的URL),最长80位,当用户完成支付后,银行页面会自动跳转到该页面,并POST订单结果信息,可选$pagereturl = "$site_url/index.php/Payment/ChinaPayReturn";//后台返回地址(您服务器上可访问的URL),最长80位,当用户完成支付后,我方服务器会POST订单结果信息到该页面,必填$bgreturl = "$site_url/index.php/Payment/ChinaPayReturn";/************************页面返回地址和后台返回地址的区别:后台返回从我方服务器发出,不受用户操作和浏览器的影响,从而保证交易结果的送达。************************///支付网关号,4位,上线时建议留空,以跳转到银行列表页面由用户自由选择,本示例选用0001农商行网关便于测试,可选$gateid = "";//备注,最长60位,交易成功后会原样返回,可用于额外的订单跟踪等,可选$priv1 = "";//按次序组合订单信息为待签名串$plain = $merid . $ordid . $transamt . $curyid . $transdate . $transtype . $version    . $bgreturl    . $pagereturl . $gateid . $priv1;//生成签名值,必填$chkvalue = sign($plain);if (!$chkvalue) {echo "签名失败!";exit;}
?>

View Code

3:netpayclient_order_feedback.php 支付应答页面 加载公钥 与私钥进行验证签名 成功银行会返回数据给商户

<?php//header('Content-type: text/html; charset=gbk');include_once("netpayclient_config.php");
?>
<title>支付应答</title>
<h1>支付应答</h1>
<?php//加载 netpayclient 组件include_once("netpayclient.php");//导入公钥文件$flag = buildKey(PUB_KEY);if(!$flag) {echo "导入公钥文件失败!";exit;}//获取交易应答的各项值$merid = $_REQUEST["merid"];$orderno = $_REQUEST["orderno"];$transdate = $_REQUEST["transdate"];$amount = $_REQUEST["amount"];$currencycode = $_REQUEST["currencycode"];$transtype = $_REQUEST["transtype"];$status = $_REQUEST["status"];$checkvalue = $_REQUEST["checkvalue"];$gateId = $_REQUEST["GateId"];$priv1 = $_REQUEST["Priv1"];if(strlen($orderno) == 16){$orderno = "2" . $orderno;}//验证签名值,true 表示验证通过$flag = verifyTransResponse($merid, $orderno, $amount, $currencycode, $transdate, $transtype, $status, $checkvalue);if(!$flag) {//echo "<h2>验证签名失败!</h2>";//exit;}//echo "<h2>验证签名成功!</h2>";//交易状态为1001表示交易成功,其他为各类错误,如卡内余额不足等if ($status == '1001'){//echo "<h3>交易成功!</h3>";//您的处理逻辑请写在这里,如更新数据库等。//注意:如果您在提交时同时填写了页面返回地址和后台返回地址,且地址相同,请在这里先做一次数据库查询判断订单状态,以防止重复处理相通的订单$this->actionSetPayN($orderno,3);$this->redirect(array('/UserCenter'));} else {echo "<h3>交易失败!</h3>";}?>

View Code

4:后台回调跳转

5:netpayclient_config.php 设置页面

<?php/*请按照您的实际情况配置以下各参数*///私钥文件,在CHINAPAY申请商户号时获取,请相应修改此处,可填相对路径,下同define("PRI_KEY", "MerPrk.key");//公钥文件,示例中已经包含define("PUB_KEY", "PgPubk.key");/*如您已有生产密钥,请修改以下配置,默认为测试环境*///支付请求地址(测试)//define("","http://payment-test.ChinaPay.com/pay/TransGet");//支付请求地址(生产)//define("","https://payment.ChinaPay.com/pay/TransGet");//取得本示例安装位置 商户的网站地址$site_url = "http://www.xxxx.com"//getSiteUrl();
?>

转载于:https://www.cnblogs.com/huii/p/4726791.html

Chinapay 银联支付接口相关推荐

  1. php银联支付接口 demo,php版银联支付接口开发简单实例详解

    这篇文章主要介绍了php版银联支付接口开发的方法,结合实例形式分析了php银联支付接口开发的具体流程与相关操作技巧,需要的朋友可以参考下 支付接口现在有第三方的支付接口也有银行的支付接口.这里就来介绍 ...

  2. django2.0调用银联支付接口实现银联支付

    准备工作: 1.银联技术开放平台注册:https://open.unionpay.com/tjweb/acproduct/list?apiservId=448 2.点击网关支付 --> 我要测试 ...

  3. UnionPay,ChinaPay 最新 银联支付接口C#\Asp.net\MVC 版本

    1.概念普及 一.理解什么是UnionPay.ChinaPay 这两个概念如果搞不清楚,绝对够你瞎折腾一段时间的. UnionPay:中国银联,最大的机构:他本身也提供系统接口但都是B2B的,对于单个 ...

  4. java 银联接口_银联支付接口整合开发(java)

    一.环境1.Eclipse Juno R22. Tomcat 73. Jersey 2.7 下载地址(https://jersey.java.net/download.html)二.流程1.Eclip ...

  5. php支付接口验签,银联支付接口开发php版

    官方文档:https://open.unionpay.com/ajweb/help/file/techFile?productId=1 api辅助工具:https://open.unionpay.co ...

  6. 第三方银联支付接口对接_聊聊三方支付对接那点事儿(附Demo)

    每一个做过支付对接的少年上辈子都是折翼的天使.--题记 三方支付对接是一件比较有意思的事儿,今天就拿这个话题来掰扯掰扯.相信每个做过支付对接的小伙伴都有段血与火的经历,那段日子只有痛苦与煎熬,恨不得大 ...

  7. 对接银联支付接口详解java版mac开发

    首先,这是一篇工具类的文章了,也是为了备忘,需求就是微信公众号的开发后台对接支付,有银联,支付宝,微信等,我负责写银联的接口.明天大年三十,今天在公司码完字也要灰走了,祝大家新年快乐,发大财. 先说一 ...

  8. 小程序调银联支付接口

    这几天接了一个需求,将之前的项目支付接口改成银联的支付接口,简单说一下,对于没有接触过支付的小伙伴可能会有那么一丢丢启发- 环境:微信小程序+银联支付 文档:公司提供的开发文档+银联官方文档 框架:D ...

  9. 前端直接调用银联支付接口,使用form表单访问银联

    直接调转到银联页面 银联支付 <template> <div class="pay"> <form  action="https://gat ...

最新文章

  1. Non-Maximum Suppression,NMS非极大值抑制
  2. 替换功能replaceAll
  3. 希尔排序 - 数据结构和算法91
  4. 面试和学习必备--Java多线程
  5. golang 反射_云原生的 Java与Golang
  6. 做支付遇到的HttpClient大坑(一)
  7. python itchat 的使用
  8. 《统计学》学习笔记之导论
  9. mysql 多实例 ERROR 2002 ERROR 1045
  10. Leetcode每日一题:21.merge-two-sorted-lists(合并两个有序链表)
  11. 李彦宏说吃着火锅唱着歌,奔驰你却要我命!
  12. java的socket编程---telnet客户端的实现
  13. 02 Oracle 批量导出建表语句和数据
  14. layout中蛇形线和差分线的使用
  15. Amnesia失忆症攻略(本篇+later+crowd)
  16. iOS开发之应用首次启动显示用户引导 - 疯狂的萝卜 - 博客园
  17. 微信小程序系列开发(一)
  18. 数字电路反相器符号_逻辑非门真值表教程和反相器振荡器等效
  19. Node-js-起步
  20. nova4android10,华为nova4支持NFC刷公交地铁吗 华为nova4有NFC功能吗

热门文章

  1. 再见,仙剑之父!再见,姚壮宪!
  2. (C语言)抓老鼠啊~亏了还是赚了?--pta
  3. 不怕神一样的对手,就怕。。
  4. 计算机在职双证博士的学校,国内在职双证博士5所高校是哪些
  5. 基于Linux (RHEL 5.5) 安装Oracle 10g RAC
  6. 大数据技术-Kerberos学习笔记
  7. 校园二手物品商城交易平台
  8. 刻章不要钱 5个在线印章制作工具
  9. 各个版本的Xcode/IOS SDK官网下载
  10. 深度学习目标检测之RCNN、SPP-net、Fast RCNN、Faster RCNN