php银联支付密钥,php银联网页支付实现方法
php银联网页支付实现方法
/**
* 取签名证书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'];
}
php银联支付密钥,php银联网页支付实现方法相关推荐
- 支付宝支付,支付宝手机网页支付
1.首先你需要与支付宝的蚂蚁金服建立合作关系然后进入开放平台 2.在开放平台中建立你的应用,我这里的应用已经创建好了,就不在演示了,这个也比较简单 3.在应用中添加你需要的功能,注意:添加的功能必须是 ...
- 银联支付页面怎么调起 php,php银联网页支付实现方法
这篇文章主要介绍了php银联网页支付实现方法,实例分析了php操作银联网支付接口的技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了php银联网页支付实现方法.分享给大家供大家参考.具体 ...
- php实现网站支付,php银联网页支付实现方法
php银联网页支付实现方法 php银联网页支付实现方法,实例分析了php操作银联网支付接口的技巧,具有一定参考借鉴价值,需要的朋友可以参考下. 这里介绍的`银联WAP支付功能,仅限消费功能. 1. P ...
- think PHP 银联支付,thinkphp3.2整合银联手机网页支付
1.和银联签约,签约成功之后才进行技术集成,到银联官方下载手机网页支付的技术文档和demo代码: https://open.unionpay.com/ajweb/help/file/techFile? ...
- 银联支付-手机网页支付接口开发
这2天因为项目需要,银联支付的手机网页支付,已经把测试ok了, 所以这里做个记录. 1,到银联的官网下载demo,注意官网是按照平台区别的(pc端.手机网页.手机控件),下载手机网页版本的demo.d ...
- 使用Java完成网上支付(1. 银联)
一. 账号申请 1. 打开网址,并注册 https://merchant.unionpay.com/cas/login?service=http%3A%2F%2Fmerchant.unionpay.c ...
- 第三方支付平台:银联在线支付
前言 现将银联在线支付所需相关资料整理如下,前期资料仅涉及相关支付接口内容初步了解,不涉及具体技术实现环节. 银联商户注册所需信息 1.填写两方合作协议并打印二份盖章,一式二份(法定代表人签字盖公章并 ...
- php 银行支付通道_PHP银联在线支付接口的开发实例
本文主要和大家分享PHP银联在线支付接口的开发实例,希望能帮助到大家. 1. 登录银联自助化测试平台(登陆地址:open.unionpay.com),登录后,点击我的产品,如下:点击右方需要测试的接口 ...
- IOS开发之—— IOS 支付 [支付宝、银联、微信]
支付宝iOSsdk官方下载sdk地址:https://b.alipay.com/order/productDetail.htm?productId=2013080604609654&tabId ...
最新文章
- Java中事件监听机制
- 初识Nginx服务器
- flip java_java的flip(). 这里用flip()有什么作用?这是反转缓冲区的方法,好像用不上。...
- CF1511G-Chips on a Board【倍增】
- java 新功能_Java 14的新功能
- uniapp中qrcode生成二维码后传的参数不见了_二维码扫描登录,你必须知道的 3 件事...
- iOS开发初探篇——UITabBarController
- 计算机视觉SLAM方向顶会
- Spring属性编辑器解读(转载)
- kafaka,activityMQ,rabbitMQ消息中间件对比
- 萤火商城V2.0开源版[uni-app端],轻量级前后端分离的电商系统,支持微信小程序 + H5+ 公众号 + APP
- 深入理解socket中的recv函数和send函数
- es7 如何从项目resource读取index的mapping、setting.json文件
- 时序数据库TSDB逐日统计的Jave算法实现过程
- linux安装vscode(中标麒麟+龙芯CPU)
- vue element UI 学习总结笔记(十一)_vue中打印模板设置
- 关于java中JDBC读取字段属性原理
- 周末闲暇用javascript写个网页“斗兽棋”小游戏
- 客户端设置超时,max_fails失效----问题分析
- WPF触控程序开发(三)——类似IPhone相册的反弹效果
热门文章
- 关于图片阿里云OSS的处理x-oss-process
- pythonNet 06进程pool
- 【Lifelong learning】Efficient Meta Lifelong-Learning with Limited Memory
- R语言biom包安装和读取文件格式无法识别问题解决
- 如何使用facebook_如果每个人都已经开始使用Facebook,Facebook能否继续发展?
- ANSYS Maxwell 2D螺线管磁场分析
- oracle房贷还款计划,还款计划表数据查询
- Dubbo RPC框架都支持哪些协议
- 知道了为什么osg::impostor可以这样设置geometry的QUADS了
- 【数据结构与算法】之深入解析“保持城市天际线”的求解思路与算法示例