Braintree-国外支付对接(二)

本文介绍如何使用Braintree进行支付与退款操作。首先,讲解了Braintree的支付流程,包括生成clientToken、获取nonce以及后台扣款。接着,详细阐述了项目的引用,包括后端引用Braintree.dll和前端引用官方JavaScript库。在代码解析部分,讨论了web.config的配置、前端drop-in UI的实现以及后端生成clientToken和处理支付、退款的方法。最后,提到了自定义支付控件样式(Customer UI)的后续内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在前文 国外支付对接:Braintree(一)的基础上   已经拿到了相关配置信息,接下来就是码代码了,这里完成的主要功能是支付与退款。

在此之前,先说一下Briantree的支付流程:

    第一步先生成clientToken,一组根据 MerchantId,BraintreePublicKey,BraintreePrivateKey生成的字符串,用于前端生成初始化支付控件。第二步点击支付按钮客户输入用户名密码确定支付之后,Briantree在前端会返回nonce给我们(相当于支付授权凭证)。第三步,将nonce传到后台,我们进行扣款。至此支付完成。

1.项目引用

  •    后端

 从官方下载的demo中可以看到,其实我们的后端需要用的dll就是一个:Braintree.dll,NUGET上也能下载

  

  •   前端

     需要的就是引用官方js,这个需要看个人需求吧,如果你不想麻烦自己写样式,可以直接使用官方的js生成的支付按钮,那么用drop-in UI即可。使用drop-in是最直接便利的方式,我们在前端直接引用:

<script src="https://js.braintreegateway.com/web/dropin/1.9.2/js/dropin.min.js"></script>

 生成的样式长这样:

     如果需要自己设计样式,按照自己的规则来控制前端的话,那就得使用Customer UI。那当然需要引用的js就不同了,前端的写法也就不同了,后面细说。这块主要的js是

<script src="https://js.braintreegateway.com/web/3.29.0/js/client.min.js"></script>

2.代码解析

  •  web.config配置

        API keys 拿到之后需要在程序中使用,我们直接配置在web.config中即可,当然安全着想也可以加密配置到数据库中。

       

  •    前端(这里先介绍使用drop-in UI的写法)

 html:
   form只需要2个参数amount,nonce。最重要的是要定义一个div控件给生成支付控件使用,这里使用的id为bt-dropin的div

<form id="payment-form" method="post" action="/checkouts/Create">
            <section>
                <label for="amount">
                    <span class="input-label">Amount</span>
                    <div class="input-wrapper amount-wrapper">
                        <input id="amount" name="amount" type="tel" min="0.01" placeholder="Amount" value="0.01">
                    </div>
                </label>

                <div class="bt-drop-in-wrapper">
                    <div id="bt-dropin"></div>
                </div>
            </section>
            <input id="nonce" name="payment_method_nonce" type="hidden" />
            <button class="button"  type="submit"><span>Test Transaction</span></button>
        </form>

js:

<script src="https://js.braintreegateway.com/web/dropin/1.9.2/js/dropin.mi
<think>好的,用户之前询问了如何在Neovim + LazyVim中配置C++代码补全,现在他们提到在lua/config目录下没有lsp.lua文件。我需要先回想之前的对话,确认之前给出的配置建议是否有提到这个文件的位置。 用户当前的问题是关于目录结构中的文件缺失,可能他们在按照指南操作时遇到了路径问题。我需要检查之前提供的步骤,看是否有误导用户创建错误的文件路径。比如,在之前的回答中,我可能让用户创建了~/.config/nvim/lua/plugins/lsp.lua,而用户现在检查的是lua/config目录下的文件,这可能是个误解。 接下来,我需要确定LazyVim的默认配置结构。LazyVim通常将用户的自定义配置放在lua/plugins目录下,而默认的配置可能在config文件夹中。但用户可能在尝试添加配置时混淆了这两个目录的位置。 用户可能的问题在于他们按照之前的指导创建了lua/plugins/lsp.lua,但指南中的某个部分可能提到了lua/config/lsp.lua,导致他们困惑。或者,他们可能参考了其他资料,导致路径混淆。 我需要解释清楚LazyVim的配置结构,说明正确的文件位置应该是lua/plugins下的文件,而不是config目录。同时,检查是否需要用户自己创建config目录,或者是否需要调整配置路径。 另外,用户可能没有正确创建文件或目录,导致Neovim无法加载配置。需要指导他们如何正确创建目录和文件,并确认路径的正确性。 还需要考虑用户可能对Lua模块的加载机制不熟悉,比如使用require时的路径问题,或者文件命名是否正确(比如lsp.lua是否正确定义了模块)。 最后,确保回答清晰,分步骤说明如何解决文件缺失的问题,并验证配置是否正确加载。可能还需要提醒用户重启Neovim或运行:Lazy sync来重新加载配置。</think>以下是针对LazyVim配置目录结构的详细说明和解决方案: --- ### 问题原因分析 LazyVim的默认配置结构为: ``` ~/.config/nvim/ ├── lua/ │ ├── config/ -- *核心配置目录(通常不需要手动修改)* │ ├── plugins/ -- **用户插件配置主目录** │ └── plugin/ -- Vimscript插件配置(可选) ``` **关键点**:用户自定义的LSP配置应放在 `plugins/` 目录下,`config/` 目录由LazyVim框架自身管理 --- ### 正确操作步骤 #### 1. 创建必要文件 ```bash # 创建插件配置目录(如果不存在) mkdir -p ~/.config/nvim/lua/plugins # 新建LSP配置文件 nvim ~/.config/nvim/lua/plugins/lsp.lua ``` #### 2. 配置内容示例 ```lua -- 文件位置:~/.config/nvim/lua/plugins/lsp.lua return { { "neovim/nvim-lspconfig", opts = { servers = { clangd = { capabilities = { offsetEncoding = "utf-8", }, cmd = { "clangd", "--background-index", "--clang-tidy", "--header-insertion=never", }, }, }, }, }, -- 可选:添加clangd扩展插件 { "p00f/clangd_extensions.nvim", config = function() require("clangd_extensions").setup() end, } } ``` #### 3. 生效配置 1. 保存文件后执行: ```vim :Lazy sync -- 重新加载插件配置 :LspRestart -- 重启LSP服务 ``` --- ### 验证配置成功 1. 执行诊断命令: ```vim :checkhealth lspconfig -- 应显示clangd可用 :LspInfo -- 查看当前文件LSP连接状态 ``` 2. 预期现象: - 打开`.cpp`文件时状态栏显示`clangd` - 输入`std::vector`能触发补全建议 - 支持`gd`跳转到定义 --- ### 目录结构最终形态 ``` ~/.config/nvim/ └── lua/ └── plugins/ ├── lsp.lua -- 你新建的配置文件 ├── coding.lua -- 其他插件配置 └── ui.lua -- 界面相关配置 ``` --- ### 常见问题排查 1. **配置未生效**: - 确认文件路径和名称正确 - 检查`:Lazy log`是否有加载错误 2. **缺少依赖项**: ```bash # 确认clangd已安装 clangd --version # 输出应包含:clangd version 15.0.0+ ``` 3. **项目级配置**: - 确保在项目根目录存在`compile_commands.json` - 可通过`bear -- make`生成(非CMake项目) --- 通过以上配置,您无需修改`config/`目录即可实现C++代码补全功能。LazyVim的模块化设计使得所有用户自定义配置都集中在`plugins/`目录下,保持配置的整洁性和可维护性。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值