电脑网页支付宝支付

一、

创建订单并调起支付页面

public function alipayCreate()
    {
        if (is_numeric($_POST['total'])) {
            $orderAmount = $_POST['total'];
        }
        $data = $_POST;
        $config=array (
            //应用ID,您的APPID。
            'app_id' => "2018111962272505",
            //商户私钥
            'merchant_private_key' => "私钥",
            //异步通知地址
            'notify_url' => "127.0.0.5/Alipay/alinotify",//http://house.mydtsk.cn/Alipay/alinotify
            //同步跳转
            'return_url' => "127.0.0.5/Alipay/returnUrl",//http://house.mydtsk.cn/Alipay/returnUrl
            //编码格式
            'charset' => "UTF-8",
            //签名方式
            'sign_type'=>"RSA2",
            //支付宝网关
            'gatewayUrl' => "https://openapi.alipay.com/gateway.do",
            //支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。
            'alipay_public_key' => "支付宝公钥",
        );
        //导入支付宝类
        Vendor('Aplipay.pagepay.service.AlipayTradeService');
        Vendor('Aplipay.pagepay.buildermodel.AlipayTradePagePayContentBuilder');
        //商户订单号,商户网站订单系统中唯一订单号,必填
        $out_trade_no = (int)(microtime(true)*1000);
        //订单名称,必填
        $subject = '好房充值';
        //付款金额,必填
//        $total_amount = '0.01';
        $total_amount = $data['info']['total'];
        //商品描述,可空
        $body = '';
        $data['uid'] = $data['info']['uid'];
        $data['type'] = 1;
        $data['money'] = $total_amount;
        $data['addtime'] = time();
        $data['title'] = $subject;
        $data['isorder'] = $out_trade_no;
        $data['khdip'] = $_SERVER['HTTP_CLIENT_IP'];
        $res = M('usermoney')->add($data);
        //构造参数
        $payRequestBuilder = new AlipayTradePagePayContentBuilder();
        $payRequestBuilder->setBody($body);
        $payRequestBuilder->setSubject($subject);
        $payRequestBuilder->setTotalAmount($total_amount);
        $payRequestBuilder->setOutTradeNo($out_trade_no);
        $aop = new AlipayTradeService($config);
        /**
         * pagePay 电脑网站支付请求
         * @param $builder 业务参数,使用buildmodel中的对象生成。
         * @param $return_url 同步跳转地址,公网可以访问
         * @param $notify_url 异步通知地址,公网可以访问
         * @return $response 支付宝返回的信息
         */
        $response = $aop->pagePay($payRequestBuilder,$config['return_url'],$config['notify_url']);
        var_dump($response);
}

二、

异步回调

public function alinotify(){
        //导入支付宝类
        $config=array(
            'gatewayUrl'            => 'https://openapi.alipay.com/gateway.do',//支付宝网关(固定)'
            'appId'                 => '2018111962272505',
            'rsaPrivateKey'         =>  'MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDURJ1gHEWZ9i7A/WNp3Y4JOugVY7FNbXHKw66/oaDSXkf8w+KCqSG7lWI9Pv5Pe/0AezwsOccJ61cLdLm3lsAMl+enLziYbXZLHTpAQ/fk8e9VpoqQHiCJ6762fvif3uutTQMsn146P1mKw4IEp6yVYUeDvzBUIu3WQM5RF9NZkDi+VAGH+RYDdcs1+vh0gShIe9ag9DamfLwXDuKdCiZlJi4Cy4UhI7lV1x6Zzbg8bsTY+fVAKQsrh7lrKz1D731Ixq59c0nky9bvycyxnMZFurV2Fba+qNufhmIUYAbl2plNIAZMdmnuxLX26ro/88Yoo8MC0lXeMBnsQPWsAlyVAgMBAAECggEBALjiEpj1xwG01UAu83nwCZisgByxOmsQGn7bNcefha31hIn6K75WhhUWpfxmc6bTfaf/roduw5g2LRjDUEdBvIC7hn+tt4O8Q75k9KmpCa+VsjpN1n50Xy8B8JiPuwm0Zl4Jp+wj2zSsnNcqNoLLcJyjoGB2FCgUTEfDJnCnaeSlDOAplRv+m6wVUYyiQGgwDUziWFlGDD6tPwT6Msa659yQK9dffVQR5dWsyftwr1A4/bzS+jTbSSDm3l2k5tO1HK/I+LkDy4zE6VpmZDTGoZ4kPA2W8xK7+xI+2dNw3VCxFJRNE2YRouVIeLvSzMT5b7KHSq5qJESe0OZX7qjjeTkCgYEA9FNxuu97K9WJrZeNHYS9zlogeGkUkLJW7I50rFqyHHj6LStb9JvsmFhbetW+kXqYmPbY7pR0JbEwBUB4b2mFM9mgJsiBPRBeoh3+ABI18pkchg9CENyp44uN9+J9ARs/KQbTB6g/cBSIqv6jO6Lehmk708QfctIKbXYj5MX8qFMCgYEA3mkLBxfXw6btFgfk3heF5zccTC6kZcX3O6/9v4iz1uf3C5SEWAXsRPgNuCleBrkLiln6GkCDhy4ejZYhTERvgV+N0jnWCSG997aJ7JgIrj/2Hy0xYHgGY0Ndp2JD9k/dtXo8a5k0V/T3dinkV62DqUQB5oTT+PcyyhCOePfzqncCgYEAiX6gBRQaG7vq497ikhcOfZ7ooPp5kUhbdHpinE/Z5f4Kw/qfoBNTXRR0PrckrFfyojpgMDso9cE2Be6XGBOo21oAL3Msj8Gzj8YTF9UnuOODUsopYrXbgWsatMInmMTNkXf+sFN1h8x2cMwl7jykv71e5rh6/jHHnnwajPcCTXMCgYEAzLSiEcVAMjRRwxVA8al09Xsj8Hp9la6//4/cXY3U+NhH6cCojtvkuxYUioyInmdy18Q5DjCS3rj0Jh0oSKo0dz8bqYLSHVWRI44/JCRK2RbF0awm5kOSnYpDiOxI4UxhI8d+FQrNwqcVnQyxvoFVzVVq6mEXOO9NL+5NM8oD28ECgYBP8sDj7BsL+XMY2cOdCU2aEcFLYP6DeTxhs9e1eDJF66SUU6hKgO72pEnzzi/44XHhhpKcZPcNBCvggUCjgbSNJR4nOf/QhcSCDFGppyAYiKMD15BzucrCzfVMsUq5csIIhzfmkH7u72F+Oz3yqL4pp9uUhVOc4hptE+cGXgq+jw==',
            'alipayrsaPublicKey'    =>  'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsmKikSjeP5qMpIV4yWniPR+JxxkuHDXt+kaloVy90lVuJUCPnY1gVmJUBvyA1v0GKCvQifUf7MBPTL/68I15ARyD0D48fIbI1S0ekgjz4KYQdHPTnHtHkpxVbzHVJHg1PwTvnKpzzTSBaGibNj9tN3xBdWPO7LM5VnLyasmlJYHuNxP5EvKHc5x4qoXEsskBqd8l5DzvuZN4+AcScMMKVQixPTgYDXpmEseRekGfzbE297/e4Y/ciwFQVlnwoKGwYKFhcyg+xc9dIwym0aUtA4b7ieExe9ZPLabTTMfSLtbhEnBKuhLj3cU6HlB6168VGQjlJf3OdwIMOkOcYbpjtQIDAQAB',
            'notifyUrl'             => 'http://house.mydtsk.cn', // 支付成功通知地址
        );
        Vendor('Aplipay.aop.AopClient');
        $aop = new \AopClient;
        $aop->alipayrsaPublicKey = $config['alipayrsaPublicKey'];
        $flag = $aop->rsaCheckV1($_POST, NULL, "RSA2");

        if($flag){

            //商户订单号
            $out_trade_no = $_POST['out_trade_no'];
            //支付宝交易号
            $trade_no = $_POST['trade_no'];
            //交易状态
            $trade_status = $_POST['trade_status'];
            //订单的实际金额
            $total_amount = $_POST['total_amount'];
            $appid = $_POST['app_id'];
            //验证app_id是否为商户本身
            if($appid != $config['appId']){
                exit('fail');
            }

            //判断交易通知状态是否为TRADE_SUCCESS或TRADE_FINISH
            if($trade_status !='TRADE_SUCCESS'){
                exit('fail');
            }
            //验证订单的准确性

            if(!empty($out_trade_no)){
                $where['isorder'] = $out_trade_no;
                $res = M('usermoney')->where($where)->find();
                if(!$res){
                    exit('fail');
                }
                //判断total_amount是否确实为该订单的实际金额
                if($total_amount != $res['money']){
                    exit('fail');
                }
            }
            //全部验证成功后修改订单状态doAliPay方法用于进行修改订单状态的逻辑,可以放手发挥了

            $data['ispass'] = 1;
            $where1['isorder'] = $out_trade_no;
            $res1 = M('usermoney')->where($where1)->save($data);
            $user = M('usermoney')->where($where1)->find();

            $where2['id'] = $user['uid'];
            $user1 = M('user')->where($where2)->find();
            $data1['money'] = $user1['money']+$total_amount;
            $re = M('user')->where($where2)->save($data1);

            if($res1 && $re){
                echo 'success';
            } else {
                echo 'fail';
            }
        } else {
            echo 'fail';
        }
    }

三、

同步回调

 public function returnUrl()
    {
        $this->success('支付成功','/Member/chongzhi');

    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值