评论
【BuildAdmin】如何调用插件配置小程序支付教程

【BuildAdmin】如何调用插件配置小程序支付教程

云霾在黑暗中发愁,竟忘了遮住太阳的就是它们自己。 ---泰戈尔-

由于最近在接触buildadmin框架,在插件市场是有支付插件,文章描述插件的使用和配置过程

【BuildAdmin】如何调用插件配置小程序支付教程

教程

1.Buildadmin后台市场安装插件

2.安装插件之后配置支付的商户号和相关证书。

证书的位置上传到项目目录的pubilc/crt/wx目录下。添加绝对路径到配置项中(支付公钥和v3证书)

商户私钥

/www/wwwroot/你的域名/public/cert/wx/apiclient_key.pem

商户公钥证书

/www/wwwroot/你的域名/public/cert/wx/apiclient_cert.pem

回调地址

https://你的域名/api/PayNotify/wechat

支付公钥绝对路径

/www/wwwroot/你的域名/public/cert/wx/pub_key.pem

3.后台接口

Buildadmin项目app/api/ controller目录下建一个AppPay.php文件配置支付函数

教程中openid还有金额就使用前端传入,正式项目中请为安全考虑

<?php
namespace app\api\controller;
use ba\PayLib;
use Yansongda\Pay\Pay;
use think\facade\DB;
use think\facade\Log;
use app\common\controller\Api;
/**
 * 支付示例控制器
 * 本文件提供了完整的支付流程示例,适合新手学习
 */
class AppPay extends Api
{
    /**
     * 小程序支付
     * @return void
     */
    public function miniPay()
    {
            // 获取用户提交的参数
            $openid = $this->request->param('openid');
            $amount = $this->request->param('amount'); // 默认1分
            // 吧 $amount转成数值类型
            $amount = floatval($amount);
            // 2. 获取支付配置
            $config = PayLib::getConfig();
            Pay::config($config);
            // 3. 构建支付订单参数
           $order = [
                'out_trade_no' => time().'',
                'description' => '会员商品',
                'amount' => [
                    'total' => $amount,
                    'currency' => 'CNY',
                ],
                'payer' => [
                    'openid' => $openid,
                ]
            ];
            // 4. 发起小程序支付
            $result = Pay::wechat()->mini($order);
            // 5. 返回支付参数给前端
            $this->success('获取支付参数成功',$result);
    }
}

4.uni-app发起支付

点击支付按钮后,触发支付函数;手机上直接调用支付,开发工具会想出现二维码


payTap() {
    uni.request({
        url: '你的域名/index.php/api/AppPay/miniPay',
        method: 'POST',
        data: {
            openid: '用户openid',
            amount: '1',
            product_name: '测试'
        },
        success: (res) => {
            console.log(res)
            const payData = res.data.data;
            // 2. 调起微信支付
            uni.requestPayment({
                rovider: 'wxpay',
                timeStamp: String(payData.timeStamp),
                nonceStr: payData.nonceStr,
                package: payData.package,
                signType: payData.signType,
                paySign: payData.paySign,
                success: (payRes) => {
                    resolve({
                        success: true,
                        orderNo: payData.order_no,
                        data: payRes
                    })
                },
            })      

        }
    })      
},

最后

更简单的方式可以使用uni-pay + uni云空间;不用调试太多的代码,更快上手

解决uni-pay公众号H5支付,获取openid跨域请求失败

解决uni-pay公众号支付history路由,刷新报404解决方法

利用uni-pay支付插件统一快速获取用户openid;文档getOpenid组件方法不管用!!!