Skip to content

彩虹易支付

彩虹易支付 SDK,仅需一行代码即可向任何 彩虹易支付系统平台 发起支付请求,例如对接该彩虹易支付平台:https://pay.v8jisu.cn/?invite=Q24GfEo

发起支付

语法

  • url 彩虹易支付平台接口地址
  • pid 彩虹易支付平台商户 ID
  • key 彩虹易支付平台商户密钥
  • type 支付类型(如:wxpay、alipay)
  • out_trade_no 商户订单号
  • notify_url 支付结果通知地址(可指向云函数地址)
  • return_url 支付结果跳转地址(支付成功后跳转展示的页面)
  • name 商品名称
  • money 商品价格
  • param 附加参数(支付成功后原样返回,没有可使用 null 代替,注意该参数为字符串类型)
js
function main() {
    const url = epay.create(
        url,
        pid,
        key,
        type,
        out_trade_no,
        notify_url,
        return_url,
        name,
        money,
        param,
    )
}

订单创建成功后该函数返回 url 支付链接,用户点击链接即可跳转到支付页面(可使用云函数 重定向 至该页面供用户支付)。

代码示例

js
function main() {
    const url = 'https://pay.v8jisu.cn/' // 支付接口地址
    const pid = 1001 // 商户ID
    const key = 'C6An86nk***************m5LU01PON' // 商户密钥
    const name = '测试商品' // 商品名称
    const money = 1.0 // 商品金额
    /*** 生成不重复的订单号 Start ***/
    const timestamp = new Date().getTime() // 获取当前时间戳
    const randomDigits = Math.floor(Math.random() * 1000000)
        .toString()
        .padStart(6, '0') // 生成6位随机数字
    const out_trade_no = `${timestamp}${randomDigits}` // 订单号(不能重复)
    /*** 生成不重复的订单号 End ***/
    const pay_url = epay.create(
        url,
        pid,
        key,
        'alipay',
        out_trade_no,
        'https://api.t1y.net/1001/epay_notify', // 请指向你的异步通知云函数地址,见下文
        'https://baidu.com/',
        name,
        money,
        null,
    )
    ctx.redirect(302, pay_url) // 重定向至付款地址供用户付款
}

将以上代码粘贴到云函数中,若参数没有问题,访问云函数即可显示彩虹易支付付款页面。

异步通知

当用户付款成功后,彩虹易支付服务器会向异步通知地址发送一个 GET 请求,该请求中包含订单号、金额、签名等信息。我们需要使用 epay.notifySignVerify() 方法验证当前请求是不是彩虹易支付官方服务器发送出来的,确保支付安全。

语法

  • key 彩虹易支付平台商户密钥
js
epay.notifySignVerify(key)

该方法返回一个 boolean 值,表示当前请求是不是彩虹易支付官方服务器发送出来的,该方法的结果是可信的。

代码示例

js
function main() {
    const trade_status = ctx.query('trade_status') // 获取 GET 请求中的支付状态
    console.log(trade_status)
    if (!epay.notifySignVerify('C6An86nk***************m5LU01PON')) {
        // 验证签名是不是彩虹易支付服务器发出的,只有验证成功才执行业务逻辑(可能存在有人伪冒彩虹易支付服务器发送请求,签名验证是必须的,确保安全)
        console.log('签名验证失败')
        return 'fail'
    }
    console.log('签名验证成功')
    if (trade_status == 'TRADE_SUCCESS') {
        // 判断是否付款成功
        // 付款成功,在这里编写业务逻辑,例如:修改数据库中的用户余额,为用户增加余额
        console.log('付款成功')
        return 'success'
    }
    console.log('付款失败')
    return 'fail'
}

异步通知云函数中,必需返回 failsuccess 字符串,否则彩虹易支付服务器会一直发送请求(处理成功返回 success,反之返回 fail 即可)。

实战说明

在创建订单时应当在数据库中创建相应的订单以及相应的操作数据,当用户付款成功时,应当判断当前订单有没有处理完成,避免二次充值,并修改订单状态。

举例

例如创建订单时,在数据库中创建订单,订单中应当包含订单号、金额、用户 ID、订单状态等信息。当用户付款成功判断订单状态是否为未处理,如果为未处理,则修改订单状态为已处理,并修改用户余额。

技术支持、市场合作:wwwanghua@outlook.com