I would output the arguments to the second post_form call just before it occurs.
Bingo! - Thank you very much hippo
That explains what is going wrong...the authorization parameter is missing...
It doesn't explain why it is going wrong.
Using this code:
print "Content-type: text/plain\n\n";
my $headers = {
'headers' => {
'Authorization' => 'Bearer ' . $Site::Variables::stripe_secret
+,
},
'agent' => 'Wayfinder/v3.0',
};
my $sub_id = 'sub_xxxxxx';
print Dumper $headers;
print "\n\n--------------\n\n";
# This line is the culprit...
my $res = $http->post_form("https://api.stripe.com/v1/subscriptions/$s
+ub_id", {}, $headers);
print Dumper $headers;
print "\n\n--------------\n\n";
I get this output:
$VAR1 = {
'headers' => {
'Authorization' => 'Bearer sk_test_abc123'
},
'agent' => 'Wayfinder/v3.0'
};
--------------
$VAR1 = {
'agent' => 'Wayfinder/v3.0'
};
--------------
Somehow the $header is being changed during the first call. I see nothing in the documentation for HTTP::Tiny to explain this.
In the short-term I can work around the problem by recreating $header between calls to Stripe. But it's not a very good solution.
I would also try to fix this first
Ordinarily, I would have fixed the API call first. However, the call requires data from the first call in order to work. Hence the need for two calls to the API. |