🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 第一步 下载demo 请自行注册开发者账号。 1. 进入支付宝开放平台,文档中心》APP支付》下载SDK&Demo,放到tp框架的Vendor中 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200104155429202.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzcxNDMwMQ==,size_16,color_FFFFFF,t_70) 4.配置文件 在tp框架中配置接入支付宝需要的配置的参数 ~~~php //支付宝 支付配置 'ALI_CONFIG' => array( 'gatewayUrl' => 'https://openapi.alipay.com/gateway.do',//支付宝网关(固定)' 'appId' => 'appIDappIDappIDappIDappIDappIDappID',//APPID即创建应用后生成 //由开发者自己生成: 请填写开发者私钥去头去尾去回车,一行字符串 'rsaPrivateKey' => 'AfewqFEWfefedwfewfewfewfewfewfewfwefewfewfeefwef', //支付宝公钥,由支付宝生成: 请填写支付宝公钥,一行字符串 'alipayrsaPublicKey' => 'ewqdwqfwqdfwqfwqfwqfqwfwqfwqfwqfwqfwqferagrGERW', ) ~~~ 5. 控制器代码 调用alipay之前可根据自己的业务需求传入相应的参数,如我添加了一个订单,我把订单号传入do\_alipay的方法中去进行支付,在回调中修改订单状态。进而完成支付。 ~~~php //每日刮分支付宝报名 public function do_alipay($id){ if(IS_POST){ Vendor('Alipay.aop.AopClient'); //引入alipay文件 Vendor('Alipay.aop.request.AlipayTradeAppPayRequest'); $huiyuan = M("huiyuan")->where("id = $id")->find(); $out_trade_no = $huiyuan['order_sn'];//订单号 $body = '年费会员';//商品名 $subject = '教育';//商品介绍 $order_amount = $huiyuan['money'];//总价 $aliConfig = C('ALI_CONFIG'); //加载配置项 $aop = new \AopClient(); $aop->gatewayUrl = $aliConfig['gatewayUrl']; //赋值网关 $aop->appId = $aliConfig['appId']; //APPid $aop->rsaPrivateKey = $aliConfig['rsaPrivateKey']; //私钥 $aop->alipayrsaPublicKey=$aliConfig['alipayrsaPublicKey']; //支付宝公钥 $aop->apiVersion = '1.0'; $aop->postCharset='UTF-8'; $aop->format='json'; $aop->signType='RSA2'; $request = new \AlipayTradeAppPayRequest(); $bizContent = "{"."\"body\":\"$body\","."\"subject\":\"$subject\","."\"out_trade_no\":\"$out_trade_no\","."\"timeout_express\":\"90m\","."\"total_amount\":\"$order_amount\","."\"product_code\":\"QUICK_MSECURITY_PAY\""."}"; $request->setBizContent($bizContent); $request->setNotifyUrl('http://xxx.xxx.cn/Api/Notify/huiyuan_ali');//这里是设置回调方法 $request->setReturnUrl($aliConfig['returnUrl']); // pageExecute 是PC和手机网站 有页面输出 // Execute API调用 没页面输出 // SdkExecute APP服务端的 // $result = $aop->pageExecute($request);//pc端 $result = $aop->sdkExecute($request); return $result; } } ~~~ 7. 回调方法 回调方法 我在里获取了订单号 对订单号修改了状态 ~~~php public function huiyuan_ali(){ $order_sn = I("post.out_trade_no"); // var_dump($order_sn);die; file_put_contents('./huiyuan.txt',$order_sn); $huiyuan = M('huiyuan')->where("order_sn = $order_sn")->find(); if($huiyuan['status']=='1'){ // var_dump($e_time);die; $arr = array( 'k_time' =>time(), 'e_time'=> strtotime("+1 year"), 'status' =>2, ); $res = M("huiyuan")->where("id = '$huiyuan[id]'")->save($arr); $k_time = date('Y-m-d H:i:s'); $e_time = date('Y-m-d H:i:s',strtotime("+1 year")); $row = array('user_id' => $huiyuan['user_id'], 'name'=>'会员购买', // 'cont'=>'恭喜,'.$k_time.'会员购买成功,'.$e_time.'到期', 'cont'=>'恭喜你成功充值年费vip会员', 'add_time'=>time()); $res = M("new_log")->add($row); } echo "success"; } ~~~ 9. 回调地址 可以为域名/模块名/控制器/方法 10. 码字不易,求点赞 11. 如果任何侵权行为请联系管理员删除