98 lines
3.8 KiB
PHP
98 lines
3.8 KiB
PHP
<?php
|
||
|
||
namespace App\Http\Controllers\Web;
|
||
|
||
use App\Models\Merchant;
|
||
use App\Models\Order;
|
||
use Illuminate\Http\Request;
|
||
use Omnipay;
|
||
use Illuminate\Support\Facades\Route;
|
||
|
||
|
||
class UnionPayController extends BaseController
|
||
{
|
||
|
||
public function getKey()
|
||
{
|
||
$str = '-----BEGIN CERTIFICATE-----
|
||
MIIEQzCCAyugAwIBAgIFEBJJZVgwDQYJKoZIhvcNAQEFBQAwWDELMAkGA1UEBhMC
|
||
Q04xMDAuBgNVBAoTJ0NoaW5hIEZpbmFuY2lhbCBDZXJ0aWZpY2F0aW9uIEF1dGhv
|
||
cml0eTEXMBUGA1UEAxMOQ0ZDQSBURVNUIE9DQTEwHhcNMTcxMTAxMDcyNDA4WhcN
|
||
MjAxMTAxMDcyNDA4WjB3MQswCQYDVQQGEwJjbjESMBAGA1UEChMJQ0ZDQSBPQ0Ex
|
||
MQ4wDAYDVQQLEwVDVVBSQTEUMBIGA1UECxMLRW50ZXJwcmlzZXMxLjAsBgNVBAMU
|
||
JTA0MUBaMjAxNy0xMS0xQDAwMDQwMDAwOlNJR05AMDAwMDAwMDEwggEiMA0GCSqG
|
||
SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDDIWO6AESrg+34HgbU9mSpgef0sl6avr1d
|
||
bD/IjjZYM63SoQi3CZHZUyoyzBKodRzowJrwXmd+hCmdcIfavdvfwi6x+ptJNp9d
|
||
EtpfEAnJk+4quriQFj1dNiv6uP8ARgn07UMhgdYB7D8aA1j77Yk1ROx7+LFeo7rZ
|
||
Ddde2U1opPxjIqOPqiPno78JMXpFn7LiGPXu75bwY2rYIGEEImnypgiYuW1vo9UO
|
||
G47NMWTnsIdy68FquPSw5FKp5foL825GNX3oJSZui8d2UDkMLBasf06Jz0JKz5AV
|
||
blaI+s24/iCfo8r+6WaCs8e6BDkaijJkR/bvRCQeQpbX3V8WoTLVAgMBAAGjgfQw
|
||
gfEwHwYDVR0jBBgwFoAUz3CdYeudfC6498sCQPcJnf4zdIAwSAYDVR0gBEEwPzA9
|
||
BghggRyG7yoBATAxMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmNmY2EuY29tLmNu
|
||
L3VzL3VzLTE0Lmh0bTA5BgNVHR8EMjAwMC6gLKAqhihodHRwOi8vdWNybC5jZmNh
|
||
LmNvbS5jbi9SU0EvY3JsMjQ4NzIuY3JsMAsGA1UdDwQEAwID6DAdBgNVHQ4EFgQU
|
||
mQQLyuqYjES7qKO+zOkzEbvdFwgwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUF
|
||
BwMEMA0GCSqGSIb3DQEBBQUAA4IBAQAujhBuOcuxA+VzoUH84uoFt5aaBM3vGlpW
|
||
KVMz6BUsLbIpp1ho5h+LaMnxMs6jdXXDh/du8X5SKMaIddiLw7ujZy1LibKy2jYi
|
||
YYfs3tbZ0ffCKQtv78vCgC+IxUUurALY4w58fRLLdu8u8p9jyRFHsQEwSq+W5+bP
|
||
MTh2w7cDd9h+6KoCN6AMI1Ly7MxRIhCbNBL9bzaxF9B5GK86ARY7ixkuDCEl4XCF
|
||
JGxeoye9R46NqZ6AA/k97mJun//gmUjStmb9PUXA59fR5suAB5o/5lBySZ8UXkrI
|
||
pp/iLT8vIl1hNgLh0Ghs7DBSx99I+S3VuUzjHNxL6fGRhlix7Rb8
|
||
-----END CERTIFICATE-----';
|
||
return $str;
|
||
}
|
||
|
||
function UnionPayConfig()
|
||
{
|
||
$gateway = Omnipay\Omnipay::create('UnionPay_Express'); //银联全产品网关(PC,APP,WAP支付)
|
||
$gateway->setMerId('777290058167387'); //商户号
|
||
$gateway->setCertPath(to_linux_path(app_path()) . '/certs/700000000000001_acp.p12'); // 商户私钥证书
|
||
$gateway->setCertDir(to_linux_path(app_path()) . '/certs/verify_sign_acp.cer'); //测试环境银联公钥证书
|
||
$gateway->setCertPassword('000000'); // 密码
|
||
$gateway->setReturnUrl(route('web.unpay.return')); // 支付后同步通知页面地址
|
||
$gateway->setNotifyUrl(route('web.unpay.return'));
|
||
return $gateway;
|
||
}
|
||
|
||
public function pay()
|
||
{
|
||
$order = [
|
||
'orderId' => date('YmdHis') . mt_rand(1000, 9999), // 订单号
|
||
'txnTime' => date('YmdHis'),
|
||
'orderDesc' => 'UnionPay Test', //订单名称
|
||
'txnAmt' => ('15' * 100), //订单价格,单位是:"分" 1x100
|
||
];
|
||
$gateway = $this->UnionPayConfig();
|
||
$response = $gateway->purchase($order)->send();
|
||
//$response->redirect(); // 发起银联支付请求
|
||
// $response = $gateway->purchase($order)->send();
|
||
echo '<div style="display: none">'.$response->getRedirectHtml().'</div>';
|
||
|
||
}
|
||
|
||
|
||
public function result(Request $request)
|
||
{
|
||
|
||
dump($request->all());
|
||
echo $request->input('orderId');
|
||
$gateway = Omnipay\Omnipay::create('UnionPay_Express');
|
||
$gateway->setMerId('777290058167387');
|
||
$gateway->setPublicKey(to_linux_path(app_path()) . '/certs/verify_sign_acp.cer'); // path or content
|
||
|
||
$response = $gateway->completePurchase(['request_params' => $_REQUEST])->send();
|
||
|
||
if ($response->isPaid()) {
|
||
//pay success
|
||
|
||
$data = $response->getData();
|
||
dump($data);
|
||
//dump($response);
|
||
echo 'respcode=00,success!';
|
||
} else {
|
||
echo 111;
|
||
}
|
||
}
|
||
|
||
}
|