创建订单
请求地址:http://orderapi.liangtouyang.com/api/orders/pay
请求名 | 类型 | 参考值 | 备注 | |
appid | String | 100010000 | 后台应用中心获取 | |
type | int | 0 | 0:微信支付 1:支付宝支付 | |
out_trade_no | string | Y1234567989 | 用户订单号 | |
money | string | 1.00 | 付款金额,注意必须是标准的金额格式如1.00 1.01 | |
notify_url | string | 可填可不填 不填则用后台应用内设置的为准 | ||
device | int | 1 | 1:电脑 2:手机 填写的类型会利于接口的返回类型 | |
sign | string | 32位的MD5加密字符串 |
|
计算签名
library(digest)
generate_sign <- function(parameters, secret_key) {
# 移除 'sign' 参数
parameters <- parameters[names(parameters) != "sign"]
# 排序参数
sorted_params <- parameters[order(names(parameters))]
# 拼接字符串
param_string <- paste(names(sorted_params), sorted_params, sep = "=", collapse = "&")
# 在拼接的字符串后面加上密钥
string_to_sign <- paste(param_string, secret_key, sep = "")
# 计算MD5签名
sign <- digest(string_to_sign, algo = "md5", serialize = FALSE)
return(sign)
}
parameters <- list(
appid = "100010000",
type = "0",
out_trade_no = "Y1234567989",
money = "1.00",
notify_url = "",
device = "1"
)
secret_key <- "your_secret_key_here"
sign <- generate_sign(parameters, secret_key)
print(sign)
查询订单
请求地址:http://orderapi.liangtouyang.com/api/orders/query
请求名 | 类型 | 参考值 | 备注 | |
appid | string | 100010000 | 后台应用处获取 | |
out_trade_no | string | Y123456789 | 用户自己订单号 (二选一) | |
trade_no | string | R201400000000000000 | 平台订单号(二选一) |
// 查询订单 无需sign计算
验证回调签名
library(digest)
verify_callback_signature <- function(data, secret_key) {
# 提取签名
signature <- data$sign
data$sign <- NULL
# 排序参数
sorted_data <- data[order(names(data))]
# 拼接字符串
param_string <- paste(names(sorted_data), sorted_data, sep = "=", collapse = "&")
# 在拼接的字符串后面加上密钥
string_to_sign <- paste(param_string, secret_key, sep = "")
# 计算MD5签名
computed_signature <- digest(string_to_sign, algo = "md5", serialize = FALSE)
# 验证签名
return(tolower(signature) == tolower(computed_signature))
}
data <- list(
appid = "100100001",
time = "1713760397",
amount = "1.100",
status = "1",
out_trade_no = "y1713760297",
trade_no = "R240422123135450090",
sign = "a7762b869a349409616ed4cbc5018dae"
)
secret_key <- "your_secret_key_here"
is_valid <- verify_callback_signature(data, secret_key)
print(if (is_valid) "签名验证通过" else "签名验证失败")
进件地址:两头羊支付