love_php/app/Services/AlipayService.php

168 lines
6.6 KiB
PHP
Raw Permalink Normal View History

2026-04-02 09:20:51 +08:00
<?php
namespace App\Services;
use Omnipay\Omnipay;
use Illuminate\Http\Request;
class AlipayService
{
protected $love_app_id;
protected $love_pid;
protected $love_private_key;
protected $gateway;
public function __construct()
{
$notify_url = env('APP_URL').'/alipay/auth/callback';
$partner_id = '2021000195678447';
$private_key = '50hi4JBBgz1rDMUTZrJE9Q==';
$app_private_key = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCE/7cBh1xPS2yoVegckquCJcLUJ0ehZLOjfNWHH8DvuFhjJgiS0TuEzCDJ/8WDyfn7PaHawQsnQUXCyAEZ3KCemjA/vzS6VBnIP/VrXR32e3L8P691kp+1lzCRGrQi2pEVMOFEGr5QyOtXfbQbVMQlDFV0zOsVhxJNN1RD+PDh7Eq94uKleBOQykgfWrVscip+ksXaBf8z+rCatfHcemPmp9FB7XUfPm/g34bey7Hd+bP7f3nuq7PMcYfvRAx2RuVNPeTEz9j3jsq0pZahGAGux3K8GWuHZ17P0WbYFIgkTSJTDMq096LMix1ymRpBhdOG7QCMTZfNJuMswMboaJ9ZAgMBAAECggEAKIbLOxoGFNuE1p6mxd4jiNr8zSzS9Oj8nDqzziLs5Z8kv8GdJy++lS6mZycbBpeLJvWW1lOwlFudaEcNntXN08ZkIWigJo7t9EkY/Yg4Ux024op9arQtGmZhlDWw4lX7k5t7aQdFKtSucdCKCzH/OtLRT3AJyluIRiMv+C5pKE4ptvOswkZWRt40kGSVaCf2LWyMorb03pPzo0vJjMNXMhCFjjPrb+PRkHQA2bf6rfGPRtsr3pISApu5IcHZLNXm3T81jrsuVB7/rSqJuPPZbTvPDrxhgKz2s4MjRpEcsUwJnQF/E5LeguhITRqMK+7kNpr+tPeKtThZkZppxV/OAQKBgQDCJ1H89a06/J12IbzXBbmrOWCINlW2Sdz7MAVuvPWwlbaPSzQ4RZ5crGSJKgwFVZRJ+Cwi1us+QTilBva1NczsZFyQW5PiGU8HX0HySKdAM5K4kbpCDmWfYG2tBF/UpJlmQ0wANqJh654B2B8BiKegeNNi15qveNfSm3qWTUsEIQKBgQCvXWZrAd9mptVtEe7qG8mejp2QBnQDnqbLcyhV48uDsANwsYGoe5fNAOAx6NXfK3Qj/TE0xCVDGrLM8SKDPRqgcTl9dYFuU6FsKSJulpFjgKAfe1HNIpLYBCvtL0F9zoFed8EL25s+zgU+ZxYqyoTsqIfYNpsRZHKQWaOSuh40OQKBgCzTXTeVFUDIMCalFW9jkAF7RtFMEi/7D70i0i5GDEeP2U1uJIlVcYGd/7w3a/0TTCBj3vTQQBHohwZ6/BzMZhqx9TkTG6qZA0kFcjlZEtxcy+Q3KRS1NDs+zTOkDegPdKdKpFJsSsNm3d05I7d78I+5NbzdYIZg1Rt38C6he89hAoGBAJxglHjttZJrSTy21i7LUrJiiJyrNH8Z1bDs4tYciRnINnkiwPVGKSq1EjdPYpBcxndlS6C7HGNHhpP8n4MaVQknjlWTGDUSvIqf78Vf3Qw24hLQvDRKFVot9iHOlv8hy/k6ntn9HeYWf1STRpAoAfqrml+y6frLcOHKHXQ1JcP5AoGAYV0uWPrtptawbdQozI9QPNztYCPz93hMs4xER3u0sfyD10KrhrVGz1thDBukGLvek3FGO7LaIzXDkKKPPSee8knj2OMK92NMweLJog42qwpQCFSTD5ZRbqlutGKONf2X3AI1SEDFjPYouN/jAb5rnixvvjy7hFZn5GY7UXZa8IQ=";
$app_public_key = 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjdHlN8FKF5SIGilCiGoMAwMDD1N812d2hOOSh3XXqAMBanFQEeBBAD7CDI7xFwaRhTiv8Uot0HR7VRnVjHHj8AA1IVlCg65LF0FiTmqeHmF1ghJn+b5n+8L7Wfw2Rk0Wz5p1Uui+7KZdoNY/6yj5El3z33y7UZtrYa37eOUBzTuj2rD16S7gONiAz0xjWG4U0u4OtJ+QEpJmoSGHx48gxLl8sY52Ske68oyIjRsUwAChu3rHFGZqyVnMFkeUGnZzkKLUm/MVqgotCi5cEIQGB8RLcyK1MNF+uij1coFNUgAIiQwV+XMSQ9COdKl2MApzEQyo+yYS9/JUK2yYelUcawIDAQAB';
$alipay_public_key = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqz5kQlSk+fW0se/ls1JGBfUrCJSi4wDrWo9PiphEdNXOAM+PpiQ587nflCkbO7XXZ8MCbd2DZMMlSJQZnhlbxiRqMdGQoQABLvs1SVPeuKuN47rn99JmgNFu/XAnGCO6QK0hS35wG/BnTq5zjiNPbPiojrw6kDjROsgs75pnkAj8eW5YvRPXSVZyvLVBrN8WAh5uW3tSXtHAOzFl7CRxAccROfz3CnsS1oonw7QuxRhh/ktLApScqsa6kKbxsi59aacAK2n5DHY0UMsn8VMRr5Nr7hjy3FinuCb6lnYzzI0q0m3acEOMCzj3YaOM7GvtWxG4g8GUIaRLrpgH+mO65QIDAQAB";
//手机app支付
$gateway = Omnipay::create('Alipay_AopApp');
$gateway->setSignType('RSA2');
$gateway->setAppId($partner_id);
// $gateway->setSellerId($partner_id);
$gateway->setPrivateKey($app_private_key);
$gateway->setAlipayPublicKey($alipay_public_key);
$gateway->setNotifyUrl($notify_url);
$this->gateway = $gateway;
$this->love_app_id = '2021001147602775';
$this->love_pid = "2088731994488878";
$this->love_private_key = $app_private_key;
}
public function purchase($subject, $out_trade_no, $total_fee)
{
$total_fee = number_format($total_fee, 2);
$request = $this->gateway->purchase();
// $request->setBizContent([
// 'subject' => $subject,
// 'out_trade_no' => $out_trade_no,
// 'total_amount' => $total_fee,
// 'product_code' => 'QUICK_MSECURITY_PAY',
// ]);
$request->setBizContent([
'subject' => $subject,
'out_trade_no' => $out_trade_no, //date('YmdHis') . mt_rand(1000, 9999),
'total_amount' => $total_fee,
'product_code' => 'QUICK_MSECURITY_PAY',
]);
/**
* @var LegacyAppPurchaseResponse $response
*/
$response = $request->send();
$orderString = $response->getOrderString();
return $orderString;
// if ($orderString) {
// $result = $this->alipayReturn($orderString);
// return $result;
// }
}
public function alipayReturn(Request $request)
{
$data = $request->input('data');
$request = $this->gateway->completePurchase();
$request->setParams([
'memo' => '',
'result' => $data,
'resultStatus' => '9000'
]);
/**
* @var LegacyCompletePurchaseResponse $response
*/
try {
$response = $request->send();
if($response->isPaid()){
/**
* Payment is successful
*/
}else{
/**
* Payment is not successful
*/
}
} catch (Exception $e) {
/**
* Payment is not successful
*/
}
}
public function notify(Request $request)
{
// $tade_no = $request->
/**
* @var LegacyCompletePurchaseResponse $response
*/
try {
$response = $this->gateway->completePurchase()->setParams($_POST)->send();
} catch (InvalidRequestException $e) {
/**
* Payment is not successful
*/
die('fail');
}
if ($response->isPaid()) {
/** Payment is successful */
die('success'); //The response should be 'success' only
} else {
/** Payment is not successful */
die('fail');
}
}
/**
* InfoStr APP登录需要的的infostr
*
* @return String
*/
public function infoStr()
{
$infoStr = http_build_query([
'apiname' => 'com.alipay.account.auth',
'method' => 'alipay.open.auth.sdk.code.get',
'app_id' => $this->love_app_id,
'app_name' => '福恋智能',
'biz_type' => 'openservice',
'pid' => $this->love_pid,
'product_id' => 'APP_FAST_LOGIN',
'scope' => 'kuaijie',
'target_id' => mt_rand(999, 99999), //商户标识该次用户授权请求的ID该值在商户端应保持唯一
'auth_type' => 'AUTHACCOUNT', // AUTHACCOUNT代表授权LOGIN代表登录
'sign_type' => 'RSA2',
]);
$infoStr .= '&sign='.$this->enRSA2($infoStr);
return $infoStr;
}
/**
* enRSA2 RSA加密
*
* @param String $data
* @return String
*/
private function enRSA2($data)
{
$str = chunk_split(trim($this->love_private_key), 64, "\n");
$key = "-----BEGIN RSA PRIVATE KEY-----\n$str-----END RSA PRIVATE KEY-----\n";
// $key = file_get_contents(storage_path('rsa_private_key.pem')); 为文件时这样引入
$signature = '';
$signature = openssl_sign($data, $signature, $key, OPENSSL_ALGO_SHA256)?base64_encode($signature):NULL;
return $signature;
}
}