chengkun
2025-05-22 1a8aea45ebb1582c9f65d9e8dcd520002f83ae12
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<?php
 
class AlipayMini{
    
    function alipay($data)
    {
        require_once 'AopClient.php';
        require_once 'request/AlipayTradeCreateRequest.php';
        require_once 'request/AlipaySystemOauthTokenRequest.php';
        
        require (DATA_PATH."api/alipay/alipay_aop.php");
        
        $aop = new AopClient();
        $aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do';
        $aop->appId = $alipaydata['sy_xcxAppid'];
        $aop->rsaPrivateKey = $alipaydata['sy_privateKey'];
        $aop->alipayrsaPublicKey = $alipaydata['sy_publicKey'];
        $aop->apiVersion = '1.0';
        $aop->signType = 'RSA2';
        $aop->postCharset='utf-8';
        $aop->format='json';
        
        //1 获取用户user_id
        $t_request = new AlipaySystemOauthTokenRequest();
        $t_request->setGrantType("authorization_code");
        $t_request->setCode($data['code']);
        
        //自定义抛出异常
        set_exception_handler('myException');
        
        $t_result = $aop->execute($t_request);
        
        $responseNode = str_replace(".", "_", $t_request->getApiMethodName()) . "_response";
        $resultCode = $t_result->$responseNode->code;
        
        if(!empty($resultCode)&&$resultCode != 10000){
            
            return array('msg'=>$t_result->$responseNode->sub_msg);
        } else {
            
            $user_id  =  $t_result->$responseNode->user_id;
        }
        //2 创建交易订单
        $c_request = new AlipayTradeCreateRequest();
        $c_request->setBizContent("{" .
            "\"out_trade_no\":\"".$data['id']."\"," .
            "\"total_amount\":\"".$data['total_amount']."\"," .
            "\"subject\":\"".$data['subject']."\",".
            "\"buyer_id\":\"".$user_id."\"".
            "}");
        //$c_request->setReturnUrl($returnUrl);
        $c_request->setNotifyUrl($alipaydata['sy_weburl'].'/api/aop/notify_url.php');
        $c_result = $aop->execute($c_request);
        
        $responseNode = str_replace(".", "_", $c_request->getApiMethodName()) . "_response";
        $resultCode = $c_result->$responseNode->code;
        if(!empty($resultCode)&&$resultCode == 10000){
            
            return array('trade_no'=>$c_result->$responseNode->trade_no);
            
        } else {
            
            return array('msg'=>$t_result->$responseNode->sub_msg);
        }
    }
}
 
function myException($exception)
{
    echo "<b>Exception:</b> " , $exception->getMessage();
}
?>