创建订单
请求地址: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加密字符串 |
|
计算签名
use strict;
use warnings;
use Digest::MD5 qw(md5_hex);
sub generate_sign {
my ($parameters, $secret_key) = @_;
# 移除 'sign' 参数
delete $parameters->{sign};
# 排序参数
my @sorted_keys = sort keys %$parameters;
# 拼接字符串
my $param_string = join "&", map { "$_=$parameters->{$_}" } @sorted_keys;
# 在拼接的字符串后面加上密钥
my $string_to_sign = $param_string . $secret_key;
# 计算MD5签名
return md5_hex($string_to_sign);
}
my %parameters = (
appid => '100010000',
type => '0',
out_trade_no => 'Y1234567989',
money => '1.00',
notify_url => '',
device => '1'
);
my $secret_key = 'your_secret_key_here';
my $sign = generate_sign(\%parameters, $secret_key);
print "$sign\n";
查询订单
请求地址:http://orderapi.liangtouyang.com/api/orders/query
请求名 | 类型 | 参考值 | 备注 | |
appid | string | 100010000 | 后台应用处获取 | |
out_trade_no | string | Y123456789 | 用户自己订单号 (二选一) | |
trade_no | string | R201400000000000000 | 平台订单号(二选一) |
// 查询订单 无需sign计算
验证回调签名
use strict;
use warnings;
use Digest::MD5 qw(md5_hex);
sub verify_callback_signature {
my ($data, $secret_key) = @_;
# 提取签名
my $signature = $data->{sign} or return 0;
delete $data->{sign};
# 排序参数
my @sorted_keys = sort keys %$data;
# 拼接字符串
my $param_string = join "&", map { "$_=$data->{$_}" } @sorted_keys;
# 在拼接的字符串后面加上密钥
my $string_to_sign = $param_string . $secret_key;
# 计算MD5签名
my $computed_signature = md5_hex($string_to_sign);
# 验证签名
return lc($signature) eq lc($computed_signature);
}
my %data = (
appid => '100100001',
time => '1713760397',
amount => '1.100',
status => '1',
out_trade_no => 'y1713760297',
trade_no => 'R240422123135450090',
sign => 'a7762b869a349409616ed4cbc5018dae'
);
my $secret_key = 'your_secret_key_here';
my $is_valid = verify_callback_signature(\%data, $secret_key);
print $is_valid ? "签名验证通过\n" : "签名验证失败\n";
进件地址:两头羊支付