99 lines
2.9 KiB
PHP
99 lines
2.9 KiB
PHP
<?php
|
|
|
|
namespace App\Api\Controllers;
|
|
|
|
use App\Exceptions\ApiException;
|
|
use Illuminate\Http\Request;
|
|
use XuanChen\UnionPay\UnionPay;
|
|
|
|
class UnionPayController extends Controller
|
|
{
|
|
|
|
public function index(Request $request)
|
|
{
|
|
|
|
$action = new UnionPay($request->all());
|
|
// $sign = $action->getSign(false);
|
|
$sign = 'd8e5bf46d0d9f1da702170c2e141d85cf3ca785106886dbfedb3310ee9ce2ca3f18a2e6c179ec9908fc4f41d05df463634106918bdbefc63b8f199c7d2f3b0d45510b4dd6ccdf4549e11a8551a5098b14c01fdaa5840a4608f462fdafdc14b8f2a35471da315d8245a4ef6281b6e04bd22d5a266500a6caf6e5203202c37111d';
|
|
$action->sign = $sign;
|
|
$res = $action->checkSign(false, false);
|
|
dump('签名: ' . $sign);
|
|
$res_str = ($res === true) ? '成功' : '失败';
|
|
dump('验签结果:' . $res_str);
|
|
dd($action);
|
|
|
|
}
|
|
|
|
//签名
|
|
public function toSign($sign_data)
|
|
{
|
|
//签名字段
|
|
// $sign_data['msg_type'] = $array['msg_type'];
|
|
// $sign_data['msg_txn_code'] = $array['msg_txn_code'];
|
|
// $sign_data['msg_crrltn_id'] = $array['msg_crrltn_id'];
|
|
// $sign_data['msg_flg'] = $array['msg_flg'];
|
|
// $sign_data['msg_sender'] = $array['msg_sender'];
|
|
// $sign_data['msg_time'] = $array['msg_time'];
|
|
// $sign_data['msg_sys_sn'] = $array['msg_sys_sn'];
|
|
// $sign_data['msg_ver'] = $array['msg_ver'];
|
|
|
|
// if (isset($array['msg_rsp_code'])) {
|
|
// $sign_data['msg_rsp_code'] = $array['msg_rsp_code'];
|
|
// }
|
|
|
|
// if (isset($array['msg_rsp_desc'])) {
|
|
// $sign_data['msg_rsp_desc'] = $array['msg_rsp_desc'];
|
|
// }
|
|
|
|
//将字段名按字母表顺序排序
|
|
ksort($sign_data);
|
|
|
|
//将post的数据utf-8编码
|
|
$str_data = utf8_encode(http_build_query($sign_data));
|
|
//获取私钥资源ID
|
|
$private = config('unionpay.check.self.private');
|
|
|
|
if (!file_exists($private)) {
|
|
throw new \Exception('缺少私钥文件');
|
|
}
|
|
|
|
$private_key = file_get_contents($private);
|
|
$pkeyid = openssl_get_privatekey($private_key);
|
|
|
|
//签名赋值sign
|
|
if (openssl_sign($str_data, $sign, $pkeyid)) {
|
|
$sign_data = bin2hex($sign);
|
|
} else {
|
|
$sign_data = '';
|
|
}
|
|
//释放ssl资源
|
|
openssl_free_key($pkeyid);
|
|
|
|
return $sign_data;
|
|
}
|
|
|
|
/**
|
|
* Notes: 银联接口
|
|
* @Author: 玄尘
|
|
* @Date : 2020/9/28 16:31
|
|
* @param Request $request
|
|
* @return mixed
|
|
*/
|
|
public function query(Request $request)
|
|
{
|
|
$inputs = $request->all();
|
|
$sign = $inputs['sign'];
|
|
unset($inputs['sign']);
|
|
$action = new UnionPay($inputs, $sign);
|
|
|
|
// $action->addLog();
|
|
$action->start();
|
|
|
|
// $action->updateLog();
|
|
|
|
return $action->respond();
|
|
|
|
}
|
|
|
|
}
|