【问题标题】:Stripe PHP charge::create response条纹 PHP 收费::创建响应
【发布时间】:2021-07-26 08:45:27
【问题描述】:

我正在开发一个带有 PHP 后端的 Ionic 5 应用程序。我从 Stripe 文档中复制了代码并将其放入 try/catch 中,如下所示:

\Stripe\Stripe::setApiKey('sk_test_********************');

$postedChargeObject = file_get_contents("php://input");

$cO = json_decode($postedChargeObject);

try {

    $charge = \Stripe\Charge::create([
        'amount' => $cO->amount,
        'currency' => 'usd',
        'description' => 'charge test with token 2',
        'source' => $cO->token,
    ]);

    echo "success";

} catch(\Stripe\Error\Base $e){
    echo($e->getMessage());
} catch (Exception $e){
    echo $e;
}

使用 echo "success",我得到了一些意想不到的行为。 1)从我的服务器获得任何响应需要很长时间,并且 2)我在开发人员控制台中收到以下错误:

如果我注释掉 echo "success",它仍然需要几秒钟,但收费会通过,因为我可以在我的 Stripe 仪表板上看到它。

理想情况下,我希望我的 PHP 脚本使用 Stripe::create 对卡片进行收费,并将 Stripe charge object docs 中定义的收费对象返回给客户端脚本。所以不仅仅是echo "success",而是整个 Stripe 充电对象。

我调用 PHP 脚本的服务是:

chargeCardForOrder(chargeObj): Observable<any> {
let c = JSON.stringify(chargeObj);
console.log("stringified c from service", c);
return this.http.post(this.chargeUrl, c);

}

我调用服务的.ts文件是:

this.coService.chargeCardForOrder(cO).subscribe( resp => {
  console.log( "response from server charge", resp );
})

附带说明,如果我从 PHP 脚本中取出 echo "success",则费用会按照我的 Stripe 仪表板进行,但控制台会显示 "response从服务器收费无效”。我很困惑我错过了什么。非常感谢您的帮助。

【问题讨论】:

    标签: php ionic-framework stripe-payments


    【解决方案1】:

    您的客户端代码需要一个 JSON 对象,而您发送的只是字符串 success,它不是有效的 JSON。您可能应该以客户端代码期望的形式使用 JSON 进行响应,或者如果客户端不需要它,则根本不返回任何内容。

    【讨论】:

    • 谢谢。看来我的远程托管服务器没有连接到条带服务器时遇到了另一个问题。一旦我解决了这个问题,我将回到这个问题。待命。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-19
    • 1970-01-01
    • 2013-11-26
    • 1970-01-01
    • 2021-11-18
    • 2019-04-15
    • 2016-05-27
    相关资源
    最近更新 更多