更新记录

1.0.0(2026-04-17) 下载此版本

1.0.0 初步版本,未经测试很多,我看市场都收费,我就做了一个,只能用来调试支付宝沙箱使用,没有别的东西


平台兼容性

uni-app(4.0)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
- - - - - - - - -
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
- - - - - - - - - - - -

uni-app x(4.0)

Chrome Safari Android iOS 鸿蒙 微信小程序
- - - - -

dsx-alipay-env

用于在 Android App 中通过 UTS 插件切换支付宝 SDK 到沙箱环境。

调用

import { switchAlipayToSandboxEnv } from "@/uni_modules/dsx-alipay-env";

const success = switchAlipayToSandboxEnv();

完整示例

下面示例演示在页面中先切换 Android 支付宝 SDK 到沙箱环境,再调用 uni.requestPayment 拉起支付。

<template>
    <view class="page">
        <button :disabled="paying" @tap="handlePay">
            {{ paying ? "支付中..." : "发起支付宝支付" }}
        </button>
    </view>
</template>

<script setup lang="ts">
import { ref } from "vue";
import {
    isAlipayEnvSwitchAvailable,
    switchAlipayToSandboxEnv
} from "@/uni_modules/dsx-alipay-env";

/**
 * 服务端返回的支付宝支付参数。
 */
type PaymentOrderResult = {
    /**
     * App 端支付串。
     */
    orderInfo: string;
};

/**
 * 当前是否处于支付中。
 */
const paying = ref(false);

/**
 * 是否启用 Android 支付宝沙箱环境。
 *
 * 仅建议本地联调或测试环境开启,正式环境请改为 `false`。
 */
const useSandboxEnv = true;

/**
 * 模拟获取服务端签名后的支付宝支付串。
 * @returns 支付串结果
 */
async function fetchPaymentOrder(): Promise<PaymentOrderResult> {
    return {
        orderInfo: "这里替换成服务端返回的 orderInfo"
    };
}

/**
 * 在 Android App 中切换支付宝 SDK 到沙箱环境。
 * @returns 是否切换成功
 */
function ensureSandboxEnv(): boolean {
    // #ifdef APP-ANDROID
    if (!useSandboxEnv) {
        return false;
    }

    /**
     * 当前运行环境是否支持切换支付宝环境。
     */
    const available = isAlipayEnvSwitchAvailable();

    if (!available) {
        console.warn("[dsx-alipay-env] 当前环境不支持切换支付宝沙箱");
        return false;
    }

    return switchAlipayToSandboxEnv();
    // #endif

    return false;
}

/**
 * 发起支付宝支付。
 */
async function handlePay(): Promise<void> {
    try {
        paying.value = true;

        /**
         * 当前服务端返回的支付参数。
         */
        const paymentOrder = await fetchPaymentOrder();

        ensureSandboxEnv();

        await new Promise<void>((resolve, reject) => {
            uni.requestPayment({
                provider: "alipay",
                orderInfo: paymentOrder.orderInfo,
                success() {
                    resolve();
                },
                fail(error) {
                    reject(error);
                }
            });
        });

        uni.showToast({ title: "支付发起成功", icon: "success" });
    } catch (error) {
        console.error("[dsx-alipay-env] handlePay", error);
        uni.showToast({ title: "支付失败", icon: "none" });
    } finally {
        paying.value = false;
    }
}
</script>

接入时建议按下面顺序处理:

  1. 服务端生成并返回支付宝签名后的 orderInfo
  2. Android App 在 uni.requestPayment 前调用 switchAlipayToSandboxEnv()
  3. 再执行 uni.requestPayment({ provider: "alipay", orderInfo })

注意:

  • 仅 Android App 有效
  • 需要在 uni.requestPayment 前调用
  • 正式环境不要开启沙箱模式

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

暂无用户评论。