当前位置:学者斋 >

计算机 >php语言 >

php银联网页支付实现方法

php银联网页支付实现方法

php银联网页支付实现方法,实例分析了php操作银联网支付接口的技巧,具有一定参考借鉴价值,需要的朋友可以参考下.

php银联网页支付实现方法

这里介绍的`银联WAP支付功能,仅限消费功能。

  1. PHP代码如下:

复制代码 代码如下:

<?php

namespace commonservices;

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>

<p style="text-align:center">跳转中...</p>

<form id="pay_form" name="pay_form" action="%s" method="post">

%s

</form>

<script type="text/javascript">

adystatechange = function(){

if(yState == "complete") {

_it();

}

};

</script>

</body>

</html>

HTML;

/**

* 构建自动提交HTML表单

* @return string

*/

public function createPostForm()

{

$this->params['signature'] = $this->sign();

$input = '';

foreach($this->params as $key => $item) {

$input .= "tt<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:'ssl_error_string());

}

return $result === 1 ? true : false;

}

标签: PHP 银联 网页 支付
  • 文章版权属于文章作者所有,转载请注明 https://xuezhezhai.com/jsj/php/nn51ez.html