导航:首页 > 编程语言 > php银联支付接口demo

php银联支付接口demo

发布时间:2022-05-17 19:20:55

1. 银联支付接口 thinkphp怎么写

不管是支付宝支付还是网银支付都得去申请支付接口的。 有相应的文档,看看挺简单的。 申请接口需要费用的

2. PHP怎么做银联的支付接口调用

PHP做银联支付接口调用问题
//在工商支付接口之前要找到工行提供的接口文件级dll文件
//将订单签名数据公钥加密提供给工行指定页面
//组织要签名的数据串
$src="ICBC_PERBANK_B2C1.0.0.0".$infomer["merid"].$infomer["meracct"].$returnaddress."HS".$ddnumber.$amount."0010".$nowtime."0";
$com=new com('ICBCEBANKUTIL.B2CUtil');
$rc=$com->init("c:\WINDOWS\user.crt","c:\WINDOWS\user.crt","c:\WINDOWS\user.key","11111111");
$ssrc=$com->signC($src, strlen($src)); //订单签名数据
$rc=$com->verifySignC($src,strlen($src), $ssrc, strlen($ssrc));
$cert=$com->getCert(1); //商城证书公钥
//将商户证书存储到c:\WINDOWS目录下,然后创建form表单,将指定的数据提交到工行指定的网页中
<!--支付宝支付的接口操作,提交的数据-->
<td width="100"><a href="<{$link}>"><img src="images/sy_19.gif" width="90" height="25" border="0"></a></td>
<!--——————————————————-->
<!--工行支付的接口操作,提交的数据-->
<form action="https://mybank.icbc.com.cn/" method="post" name="form_bank">
<input name="interfaceName" type="hidden" value="ICBC_PERBANK_B2C"/>
<input name="interfaceVersion" type="hidden" value="1.0.0.0"/>
<input name="orderid" type="hidden" value="<{$ddnumber}>"/>
<input name="amount" type="hidden" value="<{$amount}>"/>
<input name="curType" type="hidden" value="001"/>
<input name="merID" type="hidden" value="<{$merid}>"/>
<input name="merAcct" type="hidden" value="<{$meracct}>"/>
<input name="verifyJoinFlag" type="hidden" value="0"/>
<input name="notifyType" type="hidden" value="HS"/>
<input name="merURL" type="hidden" value="<{$returnaddress}>"/>
<input name="resultType" type="hidden" value="0"/>
<input name="orderDate" type="hidden" value="<{$nowtime}>"/>
<input name="merSignMsg" type="hidden" value="<{$ssrc}>" />
<input name="merCert" type="hidden" value="<{$cert}>" />
</form>

3. 亲,php银联在线支付,没做过,请求帮助

支付接口现在有第三方的支付接口也有银行的支付接口。这里就来介绍php版本银联支付接口开发的方法。

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

PHP运行环境是5.4.18以上

开了扩展openssl

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

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

/**
*银联支付v0.1
*@auther:Summer<[email protected]>;
*@date:20151202
***/
{
//在类初始化方法中,引入相关类库
publicfunction_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";
}
publicfunctionindex()
{
$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($paramArrayas$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=newSecssUtil();
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);
}
}
publicfunctionb2cPaySend(){
layout(false);
$settings=newSettings_INI();
$settings->oad($this->securityPropFile);
$pay_url="https://payment.chinapay.com/CTITS/service/rest/page/nref/000000000017/0/0/0/0/0";
$html="<formname='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($_SESSIONas$k=>$v){
if(strstr($params,$k)){
$html.="<inputtype='hidden'name='".$k."'value='".$v."'/>";
}
}
$html.="<nputtype='button'type='hidden'value='提交订单'>";
$html.="<;/from>";
$this->html=$html;
$this->display();
}
publicfunctionpgReturn(){
if($_POST){
if(count($_POST)>0){
$secssUtil=newSecssUtil();
$securityPropFile=$this>securityPropFile;
$secssUtil->init($securityPropFile);
$text=array();
foreach($_POSTas$key=>$value){
$text[$key]=urldecode($value);
}
if($secssUtil->verify($text)){
//支付成功
$_SESSION["VERIFY_KEY"]="success";
}else{
//支付失败
$_SESSION["VERIFY_KEY"]="fail";
}
}
}
}
}

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

4. 中国银联在线支付接口php开发怎么做

对方应该有sdk和demo提供的,支付接口的流程都差不多,包括支付宝,网银,财付通,paypal等流程都一样。
1、
用户下单,收集购物车内产品的总价
2、
拼装支付参数URL跳转进入支付网关进行支付(这里会用到支付网关提供的SDK)
3、
支付成功
(1)
支付网关服务器会异步发送支付成功的通知到你的“通知URL”,你对过来的参数进行有效性验证,确保是从支付网关发来的,进行业务逻辑处理,比如设置订单完成标识等作;
(2)
注意这不是“返回URL”,这一步操作前台支付用户不会看到。
4、
网关一般在完成支付后,会自动返回我们的网站,进入网站后提示用户完成支付,并跳转到相应页面即可。

5. 求农行支付结果接收的php范例程序(参考农行网上支付平台-B2C接口编程指南demo/MerchantResult.jsp

求农行支付结果接收的php范例程序(参考农行网上支付平台-b2c接口编程指南demo/merchantresult.jsp
我给你推荐一个 星辰传奇sf支付平台 你去看下 信誉很不错,口碑也很好,
星辰传奇sf支付平台6大推荐理由!
推荐1:大企业有正规的增值业务许可证,小平台一般办不到这类证的.
推荐2:有固定电话,方便联系。避免了跑路现象.
推荐3:卡类佣金国内同行业第一。直接与各大公司签订协议免除中间收费渠道
推荐4:结算一律免手续费,免费给予手机短信通知。
推荐5:客服服务态度特好。
推荐6:永不黑单,反正我用了三个月了没发现黑单情况。

兄弟你去看看星辰传奇sf支付平台人家比较正规,我用了三个多月了,没发现人家星辰传奇sf支付平台有黑单情况!结算也满及时的,没拖延过!

星辰传奇sf支付平台优势
第三方电子支付平台是属于第三方的服务中介机构,完成第三方担保支付的功能 支付平台
。它主要是面向开展电子商务业务的企支付平台业提供电子商务基础支撑与应用支撑服务,不直接从事具体的电子商务活动。第三方支付平台独立与银行,网站以及商家来做职能清晰的支付。并且第三方支付平台还具有以下优势: (1)第三方支付平台作为中介方,可以促成商家和银行的合作。对于商家第三方支付平台可以降低企业运营成本,同时对于银行,可以直接利用第三方的服务系统提供服务,帮助银行节省网关开发成本。 (2)第三方支付服务系统有助于打破银行卡壁垒。由于目前我国实现在线支付的银行卡各自为阵,每个银行都有自己的银行卡,这些自成体系的银行卡纷纷与网站联盟推出在线支付业务,客观上造成消费者要自由地完成网上购物,手里面必须有十几张卡。同时商家网站也必须装有各个银行的认证软件, 这样就会制约网上支付业务的发展。第三方支付服务系统可以很好地解决这个问题。 (3)第三方支付平台能够提供增值服务,帮助商家网站解决实时交易查询和交易系统分析,提供方便及时的退款和止付服务。

目前中国国内的第三方支付产品主要有PayPal(易趣公司产品)、支付宝(阿里巴巴旗下)、财付通(腾讯公司,腾讯拍拍)、易宝支付(Yeepay)、快钱(99bill)、百付宝(网络C2C)、网易宝(网易旗下),环迅支付,汇付天下,其中最用户数量最大的是PayPal和支付宝,前者主要在欧美国家流行,后者是马云阿里巴巴旗下产品,据称,截止2009年7月,支付宝用户超过2亿。 另外中国银联旗下银联电子支付也开始发力第三方支付,其实力不容小视。 PayPal支付基本原理 通过PayPal支付一笔金额给商家或者收款人,可以分为以下几个步骤: 1、只要有一个电子邮件地址,付款人就可以登录开设PayPal帐户,通过验证成为其用户,并提供信用卡或者相关银行资料,增加帐户金额,将一定数额的款项从其开户时登记的帐户(例如信用卡)转移至PayPal帐户下。 2、当付款人启动向第三人付款程序时,必须先进入PayPal帐户,指定特定的汇出金额,并提供受款人的电子邮件帐号给PayPal。 3、接着PayPal向商家或者收款人发出电子邮件,通知其有等待领取或转帐的款项。 4、如商家或者收款人也是PayPal用户,其决定接受后,付款人所指定之款项即移转予收款人。星辰支付。用心服务,相信品牌的力量。JI

6. 如何利用PHP语言开发平台第三方支付接口

第一步:签订合约通过第三方拿到接口(可以邮件形式发送、也可以在第三方系统下载),拿到接口后,要确认下接口类型,是否是自己需要的接口,比如B2C接口、B2B接口等类型。
第二步:支付接口分很多语言版本,比如ASP、JSP、PHP、.NET语言版本,所以要选择与自己网站语言匹配的接口进行安装。商城网站的技术一般比较清楚商城的开发语言。
第三步:拿到的支付接口一般包括接口文档和接口代码示例,选择合适的接口代码示例,进行联调,比如自己网站是PHP开发的,就选择PHP代码示例联调。
第四步:接口联调的时候,需要第三方支付提供联调测试账号,方可以联调。联调除了需要联调账号除外,还需要该账号的支付密钥,联调过程中,有什么问题,可以直接找第三方支付技术支持给予协调处理。
第五步:接口联调通过后,可先换成生产环境账号,进行交易测试,测试没问题后,可以放到商城网站进行交易。

7. 怎么申请银联在线支付接口

1、五证齐全:营业执照、税务登记证(国地税两证)、组织机构代码证、银行开户许可证。

2、ICP备案:公司网站进行ICP备案。这个应该不是问题。上面两项通过之后基本上银行会和公司来进行协议盖章了,也算是合同,就说明已经生效了。

3、签订完合同盖完章后基本上就会给商户下发接口文件,接口文件有多种语言,asp,java,.net等根据自己网站语言需要来索要即可。

4、测试开通可以找相关接口开发人员及进行接口整合对接到公司网站上面即可进行交易了。

(7)php银联支付接口demo扩展阅读

异常应答说明

1、不返回报文体的情况:

版本号,交易类型、子类,签名方法,签名值等关键域未上送,返回“Invalid request.”; 交易类型和请求地址校验有误,返回“Invalid request URI.”

2、返回全部的请求报文,附加应答码和应答描述(包括的应答码有:01、02、03、10、11、32):

验证签名失败;

报文格式错(包含,必填域缺失,上送银联报文未定义的域,报文域的格式非法,交易时间超出范围);

签名失败;超时等其他系统异常

8. 求php银联支付简单demo(unionpay)

<?php
namespace common\services;
class UnionPay
{
/**
* 支付配置
* @var array
*/
public $config = [];
/**
* 支付参数,提交到银联对应接口的所有参数
* @var array
*/
public $params = [];
/**
* 自动提交表单模板
* @var string
*/
private $formTemplate = <<<'HTML'
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>支付</title>
</head>
<body>
<div style="text-align:center">跳转中...</div>
<form id="pay_form" name="pay_form" action="%s" method="post">
%s
</form>
<script type="text/javascript">
document.onreadystatechange = function(){
if(document.readyState == "complete") {
document.pay_form.submit();
}
};
</script>
</body>
</html>
HTML;
/**
* 构建自动提交HTML表单
* @return string
*/
public function createPostForm()
{
$this->params['signature'] = $this->sign();
$input = '';
foreach($this->params as $key => $item) {
$input .= "\t\t<input type=\"hidden\" name=\"{$key}\" value=\"{$item}\">\n";
}
return sprintf($this->formTemplate, $this->config['frontUrl'], $input);
}
/**
* 验证签名
* 验签规则:
* 除signature域之外的所有项目都必须参加验签
* 根据key值按照字典排序,然后用&拼接key=value形式待验签字符串;
* 然后对待验签字符串使用sha1算法做摘要;
* 用银联公钥对摘要和签名信息做验签操作
*
* @throws \Exception
* @return bool
*/
public function verifySign()
{
$publicKey = $this->getVerifyPublicKey();
$verifyArr = $this->filterBeforSign();
ksort($verifyArr);
$verifyStr = $this->arrayToString($verifyArr);
$verifySha1 = sha1($verifyStr);
$signature = base64_decode($this->params['signature']);
$result = openssl_verify($verifySha1, $signature, $publicKey);
if($result === -1) {
throw new \Exception('Verify Error:'.openssl_error_string());
}
return $result === 1 ? true : false;
}
/**
* 取签名证书ID(SN)
* @return string
*/
public function getSignCertId()
{
return $this->getCertIdPfx($this->config['signCertPath']);
}
/**
* 签名数据
* 签名规则:
* 除signature域之外的所有项目都必须参加签名
* 根据key值按照字典排序,然后用&拼接key=value形式待签名字符串;
* 然后对待签名字符串使用sha1算法做摘要;
* 用银联颁发的私钥对摘要做RSA签名操作
* 签名结果用base64编码后放在signature域
*
* @throws \InvalidArgumentException
* @return multitype|string
*/
private function sign() {
$signData = $this->filterBeforSign();
ksort($signData);
$signQueryString = $this->arrayToString($signData);
if($this->params['signMethod'] == 01) {
//签名之前先用sha1处理
//echo $signQueryString;exit;
$datasha1 = sha1($signQueryString);
$signed = $this->rsaSign($datasha1);
} else {
throw new \InvalidArgumentException('Nonsupport Sign Method');
}
return $signed;
}
/**
* 数组转换成字符串
* @param array $arr
* @return string
*/
private function arrayToString($arr)
{
$str = '';
foreach($arr as $key => $value) {
$str .= $key.'='.$value.'&';
}
return substr($str, 0, strlen($str) - 1);
}
/**
* 过滤待签名数据
* signature域不参加签名
*
* @return array
*/
private function filterBeforSign()
{
$tmp = $this->params;
unset($tmp['signature']);
return $tmp;
}
/**
* RSA签名数据,并base64编码
* @param string $data 待签名数据
* @return mixed
*/
private function rsaSign($data)
{
$privatekey = $this->getSignPrivateKey();
$result = openssl_sign($data, $signature, $privatekey);
if($result) {
return base64_encode($signature);
}
return false;
}
/**
* 取.pfx格式证书ID(SN)
* @return string
*/
private function getCertIdPfx($path)
{
$pkcs12certdata = file_get_contents($path);
openssl_pkcs12_read($pkcs12certdata, $certs, $this->config['signCertPwd']);
$x509data = $certs['cert'];
openssl_x509_read($x509data);
$certdata = openssl_x509_parse($x509data);
return $certdata['serialNumber'];
}
/**
* 取.cer格式证书ID(SN)
* @return string
*/
private function getCertIdCer($path)
{
$x509data = file_get_contents($path);
openssl_x509_read($x509data);
$certdata = openssl_x509_parse($x509data);
return $certdata['serialNumber'];
}
/**
* 取签名证书私钥
* @return resource
*/
private function getSignPrivateKey()
{
$pkcs12 = file_get_contents($this->config['signCertPath']);
openssl_pkcs12_read($pkcs12, $certs, $this->config['signCertPwd']);
return $certs['pkey'];
}
/**
* 取验证签名证书
* @throws \InvalidArgumentException
* @return string
*/
private function getVerifyPublicKey()
{
//先判断配置的验签证书是否银联返回指定的证书是否一致
if($this->getCertIdCer($this->config['verifyCertPath']) != $this->params['certId']) {
throw new \InvalidArgumentException('Verify sign cert is incorrect');
}
return file_get_contents($this->config['verifyCertPath']);
}
}

//银联支付设置
'unionpay' => [
//测试环境参数
'frontUrl' => 'https://101.231.204.80:5000/gateway/api/frontTransReq.do', //前台交易请求地址
//'singleQueryUrl' => 'https://101.231.204.80:5000/gateway/api/queryTrans.do', //单笔查询请求地址
'signCertPath' => __DIR__.'/../keys/unionpay/test/sign/700000000000001_acp.pfx', //签名证书路径
'signCertPwd' => '000000', //签名证书密码
'verifyCertPath' => __DIR__.'/../keys/unionpay/test/verify/verify_sign_acp.cer', //验签证书路径
'merId' => 'xxxxxxx',
//正式环境参数
//'frontUrl' => 'https://101.231.204.80:5000/gateway/api/frontTransReq.do', //前台交易请求地址
//'singleQueryUrl' => 'https://101.231.204.80:5000/gateway/api/queryTrans.do', //单笔查询请求地址
//'signCertPath' => __DIR__.'/../keys/unionpay/test/sign/PM_700000000000001_acp.pfx', //签名证书路径
//'signCertPwd' => '000000', //签名证书密码
//'verifyCertPath' => __DIR__.'/../keys/unionpay/test/verify/verify_sign_acp.cer', //验签证书路径
//'merId' => 'xxxxxxxxx', //商户代码
],

9. php 银联网站支付接口开发估计多少钱

1500块,也可以接

10. php做银联接口(upop)前台操作一切顺利,只是后台该如何接收数据,是否还要核对报文,还是是直接处理。

你是做银联接口还是用银联接口开发程序
一般银联会有两种返回方式

一直是直接postback 另一种是异步的 可能不是立即传回 比如每5分钟把所有订单传回来一次
这种方式是为了防止用户付款完毕没有等待页面弹到postback页面就关闭浏览器或者当前页面了

一般在postback页面接受银联返回数据做处理数据以银联返回的为准 存到自己系统的数据库的另一张表 再check数据 然后更新订单状态等 执行其他操作

异步方式传回来的再进行一次检查 补全关闭浏览器等原因导致的特殊情况而没有得到返回的订单
可以对已经保存的订单再次检查 执行过程和之前基本一样

银联一般还会提供一个订单查询接口 根据交易订单号 提交到银联的接口得到返回 比如返回xml数据
通过返回结果可以再次确认订单详细信息 这个查询的结果是可以做银联对账的凭据的如果他们返回的信息错了他们是有责任的.在自己的系统内给客户做关键操作之前最好查询核对一次..

详细的方法请仔细看银联提供的文档..

阅读全文

与php银联支付接口demo相关的资料

热点内容
python重启路由器脚本 浏览:819
java聊天窗口 浏览:976
单片机控制阵列led灯 浏览:577
白鹿用的什么APP修图 浏览:499
阿里云轻量应用服务器ssh无法连接 浏览:794
员工福利系统源码 浏览:982
数据加密如何设置 浏览:570
php取余运算 浏览:153
php如何压缩图片大小 浏览:137
编程三阶教程 浏览:983
pdf颜色查看 浏览:469
怎么用指令停用命令方块java 浏览:406
鼠标命令行 浏览:567
如何朗读pdf 浏览:746
压缩机启动后继电器发烫 浏览:405
小学编程项目学习 浏览:557
net编译运行原理 浏览:786
加密电脑的文件拷出来打不开 浏览:366
可达性算法根 浏览:208
ibm的服务器怎么安装系统 浏览:492