PHP实现个人支付宝支付开发五

在前面的文章PHP实现个人支付宝支付开发(四)》中,我们为大家介绍了在网站上安装使用支付宝接口文件的流程。

下面我们继续结合之前的案例源码,给大家介绍PHP实现个人支付宝支付开发功能的相关内容

codepay_config.PHP文件是码支付的配置文件。前文中的码支付ID和通信秘钥就在如下图中的位置。

34255be6eaed2ffbdc28fde015a3860.jpg

前文中创建的数据表如下。

2d6d08566b21ce6c620d16e2e0fd373.png

案例中index.html前台文件

<!doctype html>
<html>
<head>
    <Meta charset=utf-8>
    <Meta http-equiv=Access-Control-Allow-Origin content=*>
    <title>信息</title>
    <link rel=stylesheet href=__INDEX__/layui/css/layui.css media=all>
</head>
<body>
<ul class=layui-nav style=border-radius:0px; lay-filter=>
    <li class=layui-nav-item><a href=>最新活动</a></li>
    <li class=layui-nav-item ><a href=>产品</a></li>
    <li class=layui-nav-item><a href=>大数据</a></li>
    <li class=layui-nav-item><a href=>社区</a></li>
</ul>
<div class=layui-carousel id=test1>
    <div carousel-item>
        <div>条目1</div>
        <div>条目2</div>
        <div>条目3</div>
        <div>条目4</div>
        <div>条目5</div>
    </div>
</div>

<div class=layui-fluid>
    <div class=layui-row layui-col-space15>
        <div class=layui-col-md12>
            <div class=layui-card>
                <div class=layui-card-header>网站设置</div>
                <div class=layui-card-body pad15>

                    <div class=layui-form lay-filter=text>
                        <div class=layui-form-item>
                            <label class=layui-form-label>信息名</label>
                            <div class=layui-input-block>
                                <input type=text name=provenance_url id=provenance_url
                                       placeholder=信息名 value= class=layui-input>
                            </div>
                        </div>
                        <div class=layui-form-item>
                            <label class=layui-form-label>信息描述</label>
                            <div class=layui-input-inline style=width: 85%;>
                                <textarea name=provenance_desc id=provenance_desc lay-verify=required
                                          placeholder=请仔细填写描述 class=layui-textarea></textarea>
                            </div>
                            <div class=layui-form-mid layui-word-aux>
                                <span class=x-red style=color: red>*必填</span>
                            </div>
                        </div>
                        <div class=layui-form-item>
                            <label class=layui-form-label>联系方式</label>
                            <div class=layui-input-inline>
                                <input type=text name=user_qq id=user_qq
                                       lay-verify=required placeholder=要求填写QQ联系方式 class=layui-input>
                            </div>
                            <div class=layui-form-mid layui-word-aux>
                                <span class=x-red style=color: red>*必填</span>
                            </div>
                        </div>
                        <div class=layui-form-item>
                            <label class=layui-form-label>信息图片</label>
                            <div class=layui-input-block>
                                <button type=button class=layui-btn id=test2>图片上传</button>
                                <div class=layui-upload-list id=thumbnail></div>
                            </div>
                        </div>
                        <div class=layui-form-item>
                            <div class=layui-input-block>
                                <button class=layui-btn lay-submit lay-filter=test>保存</button>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<div class=layui-fluid id=order style=display: none>
    <div class=layui-row layui-col-space15>
        <div class=layui-col-md12>
            <div class=layui-card>
                <div class=layui-card-header>确认订单</div>
                <div class=layui-card-body pad15>

                    <div class=layui-form lay-filter=text>
                        <div class=layui-form-item>
                            <label class=layui-form-label>信息名</label>
                            <div class=layui-input-block>
                                <input type=text name=provenance_url id=url
                                       placeholder=信息名 value= class=layui-input  disabled=true>
                            </div>
                        </div>
                        <div class=layui-form-item>
                            <label class=layui-form-label>信息描述</label>
                            <div class=layui-input-inline>
                                <textarea name=provenance_desc id=desc lay-verify=required
                                          placeholder=请仔细填写描述 class=layui-textarea   disabled=true></textarea>
                            </div>
                        </div>
                        <div class=layui-form-item>
                            <label class=layui-form-label>联系方式</label>
                            <div class=layui-input-inline>
                                <input type=text name=user_qq id=qq
                                       lay-verify=required placeholder=要求填写QQ联系方式   disabled=true class=layui-input>
                            </div>
                        </div>
                        <div class=layui-form-item>
                            <label class=layui-form-label>金额</label>
                            <div class=layui-input-inline>
                                <input type=text name=price id=price
                                       lay-verify=required placeholder=要求填写QQ联系方式 value=   disabled=true class=layui-input>
                            </div>
                        </div>
                        <div class=layui-form-item>
                            <label class=layui-form-label>支付方式</label>
                            <div class=layui-input-block>
                                <input type=radio name=type value=1 title=支付宝>
                                <img src=static/index/images/Alipay.png>
                                <input type=radio name=type value=2 title=微信>
                                <img src=static/index/images/WeChat.png>
                            </div>
                        </div>
                        <div class=layui-form-item>
                            <div class=layui-input-block>
                                <button class=layui-btn lay-submit lay-filter=pay>确定支付</button>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

<script src=__INDEX__/layui/layui.js></script>
<script>
    //注意:导航 依赖 element 模块,否则无法进行功能性操作
    layui.use('element', function () {
        var element = layui.element;

        //…
    });
    layui.use('carousel', function () {
        var carousel = layui.carousel;
        //建造实例
        carousel.render({
            elem: '#test1'
            , width: '100%' //设置容器宽度
            , arrow: 'always' //始终显示箭头
            //,anim: 'updown' //切换动画方式
        });
    });

    layui.use(['form', 'upload'], function () {
        var form = layui.form,
            $ = layui.jquery,
            upload = layui.upload;

        upload.render({
            elem: '#test2',
            url: index.PHP/index/upload,
            multiple: true,
            before: function (obj) {
                //预读本地文件示例,不支持ie8
                obj.preview(function (index, file, result) {
                    $('#thumbnail').append('<img src=' + result + ' alt=' + file.name + ' class=layui-upload-img>')
                });
            },
            done: function (res) {
                //上传完毕
                $('#thumbnail').append('<input type=hidden name=file[] id=file value=' + res.data + ' />')
            }
        });

        form.on('submit(test)', function (data) {
            console.log(data.field);
            $.ajax({
                url: index.PHP/index/order,
                dataType: json,
                data: data.field,
                success: function (res) {
                    console.log(res)
                    if (res.code >= 1) {
                        layer.alert(res.msg, {icon: 5})
                    } else {
                        $('#url').val(res.data['provenance_url'])
                        $('#desc').val(res.data['provenance_desc'])
                        $('#qq').val(res.data['user_qq'])
                        $('#price').val(res.price)
                        layer.open({
                            type: 1 //此处以iframe举例
                            , title: '提交BUG'
                            , area: ['700px', '650px']
                            , maxmin: true
                            , btnAlign: 'c'
                            , shade: false
                            , content: $('#order')
                        });
                    }

                }
            });
        })

        form.on('submit(pay)',function (data) {

            $.post('codepay/codepay.PHP',{
                'type':data.field.type,
                'price':data.field.price,
                'user':'admin'
            },function (data) {
                console.log(data)
                   layer.open({
                    type: 1 //此处以iframe举例
                    , title: '提交BUG'
                    , area: ['700px', '650px']
                    , maxmin: true
                    , btnAlign: 'c'
                    , shade: false
                    , content: data
                });
            })
        })
    })
</script>

注:前台获取的三个信息'type', 'price'和'user'必须要提交给接口文件codepay.PHP

e365d7d693200340c5e7c8a35715cbc.png

控制器中的index.PHP文件

<?PHP
/**
 * Created by PHPStorm.
 * User: win7
 * Date: 2019/1/2
 * Time: 9:32
 */

namespace app\index\controller;

use think\Controller;
use \think\facade\Request;
use think\facade\Session;

class Index extends Controller
{
    public function index()
    {
        return $this->fetch();
    }

    public function order()
    {
        $data = Request::param();
        if(empty($data['file'])){
            return json(['code'=>1,'msg'=>'请添加车牌相关图片']);
        }
        $pic_count = count($data['file']);
        if ($pic_count > 1){
            return json(['code'=>0,'msg'=>'订单生成','price'=>15,'data'=>$data]);
        }else{
            return json(['code'=>0,'msg'=>'订单生成','price'=>0.1,'data'=>$data]);
        }
    }

    public function upload()
    {
        // 获取上传图片
        $file = request()->file('file');

        // 移动到框架应用根目录/uploads/ 目录下
        if ($info = $file->validate(['ext' => 'jpg,jpeg,png,gif'])->move('upload')) {

            //客户端要求返回的必须是JSON格式数据,认没有加上上传目录,需要手工添加一下
            return json([1, '上传成功!', 'data' => ['/upload/' . $info->getSaveName()]]);
        } else {
            //处理出错信息,其实客户端也会处理的,可省略
            return $file->getError();
        }

    }
}

因为我们只写了一个小案例,这里的订单内容也就很简单,当上传图片大于1时则需要付15元,小于1时,只需付0.1元。

本篇文章就是关于PHP实现个人支付宝支付开发的相关介绍,其实也非常简单易懂,在后续的文章中,我们再继续为大家讲解相关知识内容

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...