支付宝 二维码花呗分期

 

1,phpqrcode 这是php的一个自带生成二维码的包
2,phpqrcode地址在这里 https://sourceforge.net/projects/phpqrcode/files/

 

  1.     
    public function codeImg()
        {
            //先模拟 商家ID 和价格。前端传给后端的数据。
            $store_id = 176;
            $money = 100;
            $url =  "https://zxzhdc.zx-xcx.com/admin/Flower/pay?";
            vendor('phpqrcode.phpqrcode');
            $url = $url . "store_id=" . $store_id . "&money=" . $money;
            $value = $url;
            $errorCorrectionLevel = 'L'; //容错级别 
            $matrixPointSize = 5; //生成图片大小        
            //生成二维码图片
            $filename = 'qrcode.png';
            \QRcode::png($value, $filename, $errorCorrectionLevel, $matrixPointSize, 2);
    
            echo '<img src="/' . $filename . '" alt="使用微信扫描支付">';
        }

     

     
    3,上面生成了二维码,接下来就是分期页面了,我截个屏,有能力的宝贝,可以自己写一个页面。
    注意!!!宝们,以下图片的分期,和每一期的金额,都是展示只限于,展示!!!展示!!!展示!!!支付宝自己是会判断了!!!轮不到我们这些菜菜儿~~
     

     

     

    4,选择分期,对了支付宝分期只有 【3 6 12】提醒一下~,而后点击支付我用的是ajax请求。

     
     
     //这是创建订单号
        public function flower(Request $request)
        {
            $store_id = 176;//门店ID
            $id = 3; //分期的期数
            $money = 100;//金额
            $per = 1;
            if (empty($store_id) || empty($id) || empty($money)) {
                return jsonr('400', '不可为空', []);
            }
            $admin_id = Db::name('1')->where('store_id', $store_id)->find(); //通过admin_id查找        
            $merchantid = Db::name('2')->where('admin_id', $admin_id['admin_id'])->find(); //商户ID       
            $super_id = Db::name('3')->where('id', $merchantid['agent_id'])->value('super_id'); //这是超管ID        
            $system = Db::name('4')->where('super_id', $super_id)->find(); //这是支付宝的一系列信息
            $wh['merchant_id'] = $merchantid['id']; //商户ID
            $wh['copy'] = 1; //1是直连 2是间连
            $wh['pay_way_id'] = 2; //2支付宝       
            $entry = Db::name('merchant_entry')->where($wh)->find(); //直连场景填写商户收单pid
            if (empty($entry)) {
                return jsonr('400', '该支付通道不是直连or支付宝', []);
            }
            vendor('aop.AopClient'); //构造支付配置类 //创建支付宝订单
            $aop = new \AopClient();
            $aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do';
            $aop->appId = '支付宝app_id'; //引用APP
            $aop->rsaPrivateKey = '私钥'; //支付宝 私钥
            $aop->alipayrsaPublicKey = '公钥'; //支付宝 公钥
            $aop->apiVersion = '1.0';
            $aop->signType = 'RSA2';
            $aop->postCharset = 'utf-8';
            $aop->format = 'json';
            //这是支付宝官方的sdk 还是 demo 来着我忘了~
            vendor('aop.request.AlipayTradePrecreateRequest');
            $request = new \AlipayTradePrecreateRequest();
            $data['out_trade_no'] = createOutTradeNo($store_id); //商家定义的订单号
            $data['total_amount'] = $money; //订单总金额。
            $data['subject'] = "卖掉宝贝"; //订单标题。
    
            //判断是否有分期
            if (in_array($id, [3, 6, 12])) {
                $data['extend_params']['hb_fq_num'] = $id;
                $data['extend_params']['hb_fq_seller_percent'] = '0';
                if ($per == 1) { //hb_fq_seller_percent 1是商家 2是用户 收取手续费 
                    $Aliinfo['extend_params']['hb_fq_seller_percent'] = '100';
                }
            }
    
            $notifyurl = "https://" . $_SERVER['HTTP_HOST'] . '/api/notify/alipay';   //回调地址
            $request = new \AlipayTradePrecreateRequest();
            $request->setNotifyUrl($notifyurl);
            $data['buyer_id'] = "支付宝账号ID,每个人的都是不一样!!"; //支付宝账号ID
            $request->setBizContent(json_encode($data)); //json 格式请求
            //判断是否是第三方授权
            if (!empty($entry['mno'])) {
                //$entry['mno'] 第三方授权 token
                $result = $aop->execute($request, null, $entry['mno']);
            } else {
                $result = $aop->execute($request);
            }
            // $responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response";        
            $result = json_encode($result); //这里这里!!!一定要转json!!!
            $flag = json_decode($result, true); //嘿嘿嘿接下来还是要转回来……
            if ($flag['alipay_trade_precreate_response']['code'] == 10000) {
                return jsonr('200', '创建订单成功', $flag['alipay_trade_precreate_response']);
            } else {
                return jsonr('200', '创建订单失败', []);
            }
        }

     

      

     
     
     
     
posted @ 2021-08-06 17:51  辛蕾亓  阅读(291)  评论(0编辑  收藏  举报