支付宝支付APP服务端(PHP语言)

//生成支付订单信息
    public function orderInfo(){ 
        $request = request();
        $data_get = $request->param();
        $uid = $data_get['uid'];
        $price = $data_get['price'];
        $data = array(
            'uid'=>$uid,
            'price'=>$price,
            'ordersn'=>time().rand(1000,9999),
            'productname'=>'APP充值',
            'addtime'=>time(),
            'status'=>2//未充值
        );
        db('orders')->insert($data);
        $where['uid'] = $uid;
        $where['status'] = 2;
        $res = db('orders')->where($where)->order('addtime desc')->find();
        $subject = 'APP充值'; //商品标题
        $body = '给APP充值'.$price.'元'; //商品描述
        $order_sn = $res['ordersn']; //订单号
        $total_amount = $price; //充值金额



    require_once(EXTEND_PATH.'Alipay/AopSdk.php');
        $aop = new \AopClient();
        $aop->gatewayUrl = "https://openapi.alipay.com/gateway.do";
        $aop->appId = "2018051560175558";
        $aop->rsaPrivateKey = 'MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCTj7hmIqzpkyzdL+LeJRFi/FZAEJ3griU49EMOZAd0w9Kb9DyTh6qS2IA/GrF2W2Bo7qEnVFfTJH46Y1bprkuduRdmqhig1BgEEeODsSgJVtItjd5inx8txye/z0cBZi0JOh1vtPrqM90U/e1UvcRSLsAs+AHTSYY8wMuGOJiEuwzEiyU5I7qF79EuY/VDVCyLR1/DXbTUsy4Fby6LcbdVyZMG49tnCfeAeQUfTW1hVBStpWgVdQEHTud37YzQB4jaX/zN1R6cdcKqsEYaAJ2cj+8vfTVFOLUBLOEKnngo+Irsfr+vgJ9bA1ls04u8WMO0rPuQuoZnA8WniEq1c5UvAgMBAAECggEBAIpzBH6/9iDJeASoE2J+wQtw2rQNYzQV8NK5S9lKvTwvJ4Iv7E43sjFJdTrAHtV/8rtBem7eUfDHgq/h2QA0CrqXmX84BReRKF9ZMXC0XW41ycn4HDnINobLH152apbDeWn43vmagvoPY1V40p751iONvb3zjDLj/1EtS0hJ/cA6F62CwVVmNiXGBuFjUh/xV/8vMMXLI7EuO7rojnJmokrfzSPI76ta2AvXdhA4wtZiUvkO7Op/Ut9X8aUWVVSvsunRdPcyuArWE2wyZXbOCZrUJBCEq4zxtwg3GcWCL9doY3LVMNfPdWiWfd9MYSH1kh3QX7+aA60W8F3sRBGtykECgYEA4Nc7apoDHuunYDz6vKozLU0ry0NY/S2q7JFRBeHessJHmzlutCARkRTU7lsLv7AW3bYv9cmSDnVR8NAklOvD+c7C5DStbrWSJgJIbofx7AQAeBR4ZdH1EDyM48om3AoPiw9p86rDZLK4+Zo+BXYhS5d4STH19q0HR+cAyv1g3fECgYEAqALRL9E2qI8Q/e5DQyjH5zOeocbelXqcQaYPLpqD74MWWwHDxmnF73B/Vf3SrDjbdI1rpW6mHchGHdPbiwrreUpC2X8z1JUOInTF/errpUK9WWTFumK7ElACzxQafyVhAa6ZiC2Jva8Tu8gu47rrNLizx0uAS4TioZYC4cGTBR8CgYAXidDZlygOe6M5Kwkg6TyUWIjmLbXKQ5aqT4hI8l2LH1W5xWh2iQjtxF2KWpO/TKMIMQOSWrjktJmQeWnrAUeyBlhW5cDmXzHessx8bdUA3WZjK9ly52kdewlQ65/n11HLQCDadp0gFKnSz7gAgF55+HCKUSWr3m9tspxdo+sZMQKBgAQwXcrVaol1V7UdFaw8/g7zqIbcEHylm/O/Ei3VSGjWWd5XAuyVgovfwC0CsRf+KuqTBBYR1i5z6dughp7G3OwfP99wXnh0Zu/Q/YbBLrLmIRZzfsKQ550jRY6oL6jv46VJFybgC8kg7lsGOLUQ2gBsgn77kO1RGN1yggvi6al9AoGAOAj5DcCoVnAqQaJa48+NqjAVQNtVkWTiPfVXeWZ/fZk/2fZQ/CxLVdcqmDdQjkhXmD+8rgq0trzqigrrOM2/5drQxmTA7L7+bCSU2om38Y5Khp6J/aGWLWO1r6Y16G9a9yZoAYNfZB08d68AUQ90PD8CTQ60LZijHQbr/zDG/Vg=';
        $aop->format = "json";
        $aop->charset = "utf-8";
        $aop->signType = "RSA2";
        $aop->alipayrsaPublicKey = 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAleF75Kiwzt675L7ouW9COm9pleOMUXmveiJ7T/IRBVorMEXfqSyVTNR0e1qC72yqjh8ooNjzTTT6zdh4EBPi/wbmoBKRCbDygmPrPQ08ZijOO26JbHIAKZv+MC2iWNcm2s6G+TWpHynVL+DuH9gR81lwcSENXscS4W7ZE//RAYC9CN4zKbYD+IPso8onttbzBwxMkfAY8TUVKAz/5fSiL0/c1iFT8XI+tWyosVYejQ7EMY4WSSQvKo/EUaKjUDLPaFZ3wiaeK9bPaqEKHa4JqzZvtlidVktnoS7rWcRzJRo1igCzcrMvDpfHwXtGe5V1Fh1iCf3GI+5Rtk3aFkNEdQIDAQAB';
        //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
        $request = new \AlipayTradeAppPayRequest();
        $bizcontent = "{\"body\":\"{$body}\","
            . "\"subject\": \"{$subject}\","
            . "\"out_trade_no\": \"{$order_sn}\","
            . "\"timeout_express\": \"30m\","
            . "\"total_amount\": \"{$total_amount}\","
            . "\"product_code\":\"QUICK_MSECURITY_PAY\""
            . "}";
        //商户外网可以访问的异步地址 (异步回掉地址,根据自己需求写)
        $request->setNotifyUrl("http://117.34.109.195:81/public/AliPay.php");
        $request->setBizContent($bizcontent);
        //这里和普通的接口调用不同,使用的是sdkExecute
        $response = $aop->sdkExecute($request);
        //return htmlspecialchars($response);
        echo $response;
    }
```
//回调逻辑
<?php
/**支付宝支付异步通知**/
//应用ID
const APPID = '2018051560175558';
//请填写开发者私钥去头去尾去回车,一行字符串
const RSA_PRIVATE_KEY ='MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCTj7hmIqzpkyzdL+LeJRFi/FZAEJ3griU49EMOZAd0w9Kb9DyTh6qS2IA/GrF2W2Bo7qEnVFfTJH46Y1bprkuduRdmqhig1BgEEeODsSgJVtItjd5inx8txye/z0cBZi0JOh1vtPrqM90U/e1UvcRSLsAs+AHTSYY8wMuGOJiEuwzEiyU5I7qF79EuY/VDVCyLR1/DXbTUsy4Fby6LcbdVyZMG49tnCfeAeQUfTW1hVBStpWgVdQEHTud37YzQB4jaX/zN1R6cdcKqsEYaAJ2cj+8vfTVFOLUBLOEKnngo+Irsfr+vgJ9bA1ls04u8WMO0rPuQuoZnA8WniEq1c5UvAgMBAAECggEBAIpzBH6/9iDJeASoE2J+wQtw2rQNYzQV8NK5S9lKvTwvJ4Iv7E43sjFJdTrAHtV/8rtBem7eUfDHgq/h2QA0CrqXmX84BReRKF9ZMXC0XW41ycn4HDnINobLH152apbDeWn43vmagvoPY1V40p751iONvb3zjDLj/1EtS0hJ/cA6F62CwVVmNiXGBuFjUh/xV/8vMMXLI7EuO7rojnJmokrfzSPI76ta2AvXdhA4wtZiUvkO7Op/Ut9X8aUWVVSvsunRdPcyuArWE2wyZXbOCZrUJBCEq4zxtwg3GcWCL9doY3LVMNfPdWiWfd9MYSH1kh3QX7+aA60W8F3sRBGtykECgYEA4Nc7apoDHuunYDz6vKozLU0ry0NY/S2q7JFRBeHessJHmzlutCARkRTU7lsLv7AW3bYv9cmSDnVR8NAklOvD+c7C5DStbrWSJgJIbofx7AQAeBR4ZdH1EDyM48om3AoPiw9p86rDZLK4+Zo+BXYhS5d4STH19q0HR+cAyv1g3fECgYEAqALRL9E2qI8Q/e5DQyjH5zOeocbelXqcQaYPLpqD74MWWwHDxmnF73B/Vf3SrDjbdI1rpW6mHchGHdPbiwrreUpC2X8z1JUOInTF/errpUK9WWTFumK7ElACzxQafyVhAa6ZiC2Jva8Tu8gu47rrNLizx0uAS4TioZYC4cGTBR8CgYAXidDZlygOe6M5Kwkg6TyUWIjmLbXKQ5aqT4hI8l2LH1W5xWh2iQjtxF2KWpO/TKMIMQOSWrjktJmQeWnrAUeyBlhW5cDmXzHessx8bdUA3WZjK9ly52kdewlQ65/n11HLQCDadp0gFKnSz7gAgF55+HCKUSWr3m9tspxdo+sZMQKBgAQwXcrVaol1V7UdFaw8/g7zqIbcEHylm/O/Ei3VSGjWWd5XAuyVgovfwC0CsRf+KuqTBBYR1i5z6dughp7G3OwfP99wXnh0Zu/Q/YbBLrLmIRZzfsKQ550jRY6oL6jv46VJFybgC8kg7lsGOLUQ2gBsgn77kO1RGN1yggvi6al9AoGAOAj5DcCoVnAqQaJa48+NqjAVQNtVkWTiPfVXeWZ/fZk/2fZQ/CxLVdcqmDdQjkhXmD+8rgq0trzqigrrOM2/5drQxmTA7L7+bCSU2om38Y5Khp6J/aGWLWO1r6Y16G9a9yZoAYNfZB08d68AUQ90PD8CTQ60LZijHQbr/zDG/Vg=';
//请填写支付宝公钥,一行字符串
const ALIPAY_RSA_PUBLIC_KEY ='MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAleF75Kiwzt675L7ouW9COm9pleOMUXmveiJ7T/IRBVorMEXfqSyVTNR0e1qC72yqjh8ooNjzTTT6zdh4EBPi/wbmoBKRCbDygmPrPQ08ZijOO26JbHIAKZv+MC2iWNcm2s6G+TWpHynVL+DuH9gR81lwcSENXscS4W7ZE//RAYC9CN4zKbYD+IPso8onttbzBwxMkfAY8TUVKAz/5fSiL0/c1iFT8XI+tWyosVYejQ7EMY4WSSQvKo/EUaKjUDLPaFZ3wiaeK9bPaqEKHa4JqzZvtlidVktnoS7rWcRzJRo1igCzcrMvDpfHwXtGe5V1Fh1iCf3GI+5Rtk3aFkNEdQIDAQAB';
//验证签名
require_once('../extend/Alipay/AopSdk.php');
$aop = new \AopClient();
$aop->alipayrsaPublicKey = 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAleF75Kiwzt675L7ouW9COm9pleOMUXmveiJ7T/IRBVorMEXfqSyVTNR0e1qC72yqjh8ooNjzTTT6zdh4EBPi/wbmoBKRCbDygmPrPQ08ZijOO26JbHIAKZv+MC2iWNcm2s6G+TWpHynVL+DuH9gR81lwcSENXscS4W7ZE//RAYC9CN4zKbYD+IPso8onttbzBwxMkfAY8TUVKAz/5fSiL0/c1iFT8XI+tWyosVYejQ7EMY4WSSQvKo/EUaKjUDLPaFZ3wiaeK9bPaqEKHa4JqzZvtlidVktnoS7rWcRzJRo1igCzcrMvDpfHwXtGe5V1Fh1iCf3GI+5Rtk3aFkNEdQIDAQAB';
$flag = $aop->rsaCheckV1($_POST, NULL, "RSA2");
//验签
if($flag){
        //支付成功:TRADE_SUCCESS   交易完成:TRADE_FINISHED
        if($_POST['trade_status'] == 'TRADE_SUCCESS' || $_POST['trade_status'] == 'TRADE_FINISHED'){
            //获取订单号
        $ordersn = $_POST['out_trade_no'];
        //交易号
        $trade_no = $_POST['trade_no'];
        //订单支付时间
        $gmt_payment = $_POST['gmt_payment'];
        //转换为时间戳
        $gtime = strtotime($gmt_payment);
        //交易金额
        $pay_money = $_POST['receipt_amount'];
        //此处编写回调处理逻辑
        header("Content-type: text/html; charset=utf-8");
        try{
            $conn = new PDO("mysql:host=localhost;dbname=xingzuo","root","167669123");
            $conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
        }catch(PDOException $e){
            echo"数据库连接失败".$e->getMessage();
        }
        $sql1 = "select * from `orders` where ordersn ='".$ordersn."'";//按订单号查询
        $orders = $conn->query($sql1)->fetch(PDO::FETCH_ASSOC);
        $money = $orders['price'];
        if($money == $pay_money){
            //更新支付状态
            $sql2 = "update `orders` set status='1' where id = '" .$orders['id']."'";
            $res2 = $conn->prepare($sql2);
            $res2 ->execute();
            //更新支付类型
            $sql3 = "update `orders` set paytype='1'where id = '" .$orders['id']."'";
            $res3 = $conn->prepare($sql3);
            $res3 ->execute();
            //更新用户的账户余额
            $user = "select * from `user` where id ='".$orders['uid']."'";
            $user = $conn->query($user)->fetch(PDO::FETCH_ASSOC);
            $balance = $user['balance'];
            $money = $balance + $pay_money;
            $sql4 = "update `user` set balance='".$money."' where id = '" .$orders['uid']."'";
            $res4 = $conn->prepare($sql4);
            $res4 ->execute();
            //更新消费记录表
            $note = '充值';
            $time = time();
            $sql5 = "insert into consumption(id,uid,amount,note,type,addtime,status) VALUES (null,'".$orders['uid']."','".$pay_money."','".$note."','1','".$time."','1')";
            $res5 = $conn->prepare($sql5);
            $abc  = $res5->execute();
            if($abc){
                die('success');
            }else{
                exit('fail');
            }
       }else{
            exit('fail');
        }
    }else{
        exit('fail');
    }
}else{
    exit('fail');
}

猜你喜欢

转载自blog.csdn.net/luoangen/article/details/82345977