我不是程序员,我刚买了一个php脚本,但是支付网关Stripe说它使用了过时的api。
这是付款码:
else if ($request->gateway == "stripe") {
try {
$stripe = new StripeClient($this->settings->stripe_secret_key);
$data = $stripe->checkout->sessions->create([
'success_url' => route('fund.verify', ['trans' => $ref]),
'cancel_url' => route('fund.verify', ['trans' => $ref]),
'payment_method_types' => ['card'],
'line_items' => [
[
'name' => $ref,
'amount' => number_format($amount + $charge, 2, '.', '') * 100,
'currency' => $link->getCurrency->real->currency,
'quantity' => 1,
],
],
'mode' => 'payment',
]);
$sav->update([
'charge_id' => $data->id,
]);
} catch (StripeExceptionCardException $e) {
return back()->with('alert', $e->getMessage());
} catch (StripeExceptionInvalidRequestException $e) {
return back()->with('alert', $e->getMessage());
}
这是我得到的错误:此API版本不支持使用line_items.amount
、line_items.currency
、line_items.name
、line_items.description
、line_items.images
。请使用line_items.price
或line_items.price_data
。更多信息请访问https://stripe.com/docs/payments/checkout/migrating-prices。
我也想在沙箱中使用paypal,但它给了我一个克林特认证失败,所以我不得不使用生产代替。有什么办法可以改变这一点吗?
这是支付网关代码:
else if ($request->gateway == "paypal") {
$authToken = base64_encode($this->settings->paypal_client_id . ':' . $this->settings->paypal_secret_key);
$param = [
'intent' => "CAPTURE",
"purchase_units" => [
[
'amount' => [
"currency_code" => $link->getCurrency->real->currency,
"value" => number_format($amount + $charge, 2, '.', '')
],
]
],
"application_context" => [
'return_url' => route('fund.verify', ['trans' => $ref]),
'cancel_url' => route('fund.failed', ['trans' => $ref])
]
];
$curl = new Curl();
$curl->setHeader('Authorization', 'Basic ' . $authToken);
$curl->setHeader('Content-Type', 'application/json');
$curl->post("https://api-m.paypal.com/v2/checkout/orders", $param);
$curl->close();
$data = $curl->response;
}
如果有人能帮我解决这个问题,我将非常高兴。
已经阅读stripe和paypal的api文档,但不理解任何东西。
与其升级你所有的代码,不如找出代码对应的是Stripe API的哪个版本,然后降级到那个版本。在stripe-php库中,你可以指定创建stripe客户端时使用的版本[1]。你也可以联系Stripe的支持[2]来降低你账户的API版本。
"api_key" => "sk_123456",
"stripe_version" => "2022-11-15"
]);
如果你想改变你的代码,你可以看看Stripe的API参考[3],看看如何把这些字段放在新版本的checkout->sessions->create
调用[3]中。
[1] https://stripe.com/docs/api/versioning
[2] https://support.stripe.com/?contact=true[3] https://stripe.com/docs/api/checkout/sessions/create?lang=php create_checkout_session-line_items-price_data