支付宝 二维码花呗分期
1,phpqrcode 这是php的一个自带生成二维码的包
2,phpqrcode地址在这里 https://sourceforge.net/projects/phpqrcode/files/
-
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', '创建订单失败', []); } }
祝你开心=.=