PHP   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用自定义cURL和PHP代码进行Stripe Charge时出错大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

经过3天的扎实研究,并尽我最大的努力解决了问题,Ive变得不成功,不得不意识到也许这是我不应该尝试的事情!在我自己的个人尝试失败后,我不得不向您求助于在我的初学者学习阶段需要一些建议和帮助的专家.

我尝试使用Stripe提供的PHP代码,但是由于我们在网站中使用了复杂的自定义表单,而且我们的网站访问量很多都来自内部,因此我们需要一种将付款发送给Stripe eiser的方法,而不是集成一个全新的PHP付款流程它也可以处理来自内部客户的付款,所以我认为我知道一些cURL,这是因为在网站流程中已经使用了多个cURL和PHP API调用.

我为条带尝试的cURL如下:

    $headers = array(
    'Authorization: Bearer sk_test_R_896_11845@y_test_key_here',
);
$ch = curl_init("https://api.Stripe.com/v1/charges -H Content-Type=application/x-www-form-urlencoded -u sk_test_R_896_11845@y_test_key: -d source[object]=card -d source[number]=4242424242424242 -d source[exp_month]=08 -d source[exp_year]=18 -d source[cvc]=123 -d amount=250 -d currency=gbp -d description=TesTing ");
curl_setopt($ch, CURLOPT_httpHEADER, $headers);
curl_setopt($ch, CURLOPT_POST, truE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, truE);
$response = curl_exec($ch);
echo $response;
curl_close($ch);

{错误”:{“类型”:“ invalid_request_Error”,“消息”:“无法识别的请求网址(POST:/ v1 / charges -H Content-Type = application / x-www-form-urlencoded -u sk_test_keyP:-d source [object] = card -d source [number] = 4242424242424242 -d source [exp_month] = 08 -d source [exp_year] = 18 -d source [cvc] = 123 -d金额= 250 -d货币= gbp -d description = TesTing).请参阅https://stripe.com/docs,否则我们可以在https://support.stripe.com/提供帮助.” }}

我已经尝试阅读文档,但是没有任何关于我得到的错误的解释,我认为问题的最大部分是我没有足够的经验来确切了解要研究的内容以及像您一样会想看的关键短语专家起来

我尝试了使用-H Content-Type和不使用-H Content-Type仍然遇到相同的问题,但是如果我要复制curl并将其粘贴到命令行中并使用以下命令从命令中执行

curl.exe https://...................

则消息成功,我得到响应,我想回说卡已收费.

also tried  `$String = rawurlencode($data) and then http_build_query` on the $String

这是我尝试过的足够的示例:

<?PHP
$headers = array(
    'Authorization: Bearer sk_test_removed_for_stackoverflow',
);

// create curl resource 
$ch = curl_init(); 

// set url 
curl_setopt($ch, CURLOPT_URL, "https://api.Stripe.com/v1/charges -u sk_test_removed: -d source[object]=card -d source[number]=4242424242424242 -d source[exp_month]=08 -d source[exp_year]=18 -d source[cvc]=123 -d amount=250 -d currency=gbp -d description=Test "); 

也尝试这样:

// set url 
curl_setopt($ch, CURLOPT_URL, "https://api.Stripe.com/v1/charges -u sk_test_removed: -d source[object]=$card -d source[number]=$number -d source[exp_month]=$exPDAte -d source[exp_year]=$expmonth -d source[cvc]=$ccv -d amount=$amount -d currency=gbp -d description=$SALE "); 

// set headers
curl_setopt($ch, CURLOPT_httpHEADER, $headers);

//return the transfer as a String 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

// $output contains the output String 
$output = curl_exec($ch); 
print($output);

// close curl resource to free up system resources 
curl_close($ch);
?>

老实说,我现在处在迷茫的境地,对于任何能够在这个问题上为我提供帮助和帮助的人,我都将非常高兴.经过三天的痛苦,我真的不知道该怎么办.

作为新手学习者,在进行问题重新搜索时,很难确切知道要搜索什么.我在Google上花了3天的时间,收到2条警告消息,说他们认为由于进行了多少次研究,我发送了自动查询信息!因此,任何建议和帮助都将在此方面大有帮助.

谢谢大家

解决方法:

使用Stripe PHP bindings不是可行的解决方案吗?这样会更简单:

\Stripe\Stripe::setApiKey("sk_test_...");

// Token creation. In production this should be done client-side via Stripe.js or checkout.
$token = \Stripe\Token::create([
  "card" => array(
    "number" => "4242424242424242",
    "exp_month" => 8,
    "exp_year" => 18,
    "cvc" => "123"
  )
]);

// Charge creation
try {
    $charge = \Stripe\Charge::create([
      "amount" => 250,
      "currency" => "gbp",
      "source" => $token->id,
      "description" => "TesTing"
    ]);
} catch(...) {
    // Handle possible @R_870_4895@. See https://Stripe.com/docs/api/PHP#errors
}

如果您真的坚持使用curl,这应该可以工作:

$apiKey = 'sk_test_...';
$curl = curl_init();
curl_setopt_array($curl, [
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_URL => "https://api.Stripe.com/v1/charges",
    CURLOPT_POST => 1,
    CURLOPT_httpHEADER => [
        "Authorization: Bearer " . $apiKey
    ],
    CURLOPT_POSTFIELDS => http_build_query([
        "amount" => 250,
        "currency" => 'gbp',
        "source" => array(
            "object" => "card",
            "number" => "4242424242424242",
            "exp_month" => 8,
            "exp_year" => 18,
            "cvc" => "123"
        ),
        "description" => "TesTing"
    ])
]);
$resp = curl_exec($curl);
curl_close($curl);

笔记:

>自行提供卡的详细信息,而无需通过Stripe.jsCheckout进行客户端令牌化,则会出现PCI compliance的问题,但是我想您已经意识到了这一点.
>使用绑定使通过异常处理电荷创建失败更加容易.有关更多信息,请参见the documentation.

大佬总结

以上是大佬教程为你收集整理的使用自定义cURL和PHP代码进行Stripe Charge时出错全部内容,希望文章能够帮你解决使用自定义cURL和PHP代码进行Stripe Charge时出错所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: