Yii2 ActiveForm 条纹令牌

Yii2 ActiveForm Stripe token

在 Yii2 中,我们使用 \Stripe\Charge::create 遵循站点的文档示例:

https://stripe.com/docs/payments/accept-a-payment-charges

只要我们在视图中直接使用 HTML,一切都很好,但是当我们将卡片元素嵌入到 ActiveForm 中时,stripe.js returns:

XMLHttpRequest cannot load https://api.stripe.com/v1/tokens due to access control checks.

我们想使用 ActiveForm 来简化表单上其他字段的验证和处理。有帮助吗?

最好的, 乔

错误与 CORS 相关,请参阅 CORS。按照此处所述使用适当的 Access-Control

您可以在控制器中使用 Yii 的内置行为 yii\filters\Cors

无限制先试:

public function behaviors()
{
    return [
        'corsFilter' => [
            'class' => \yii\filters\Cors::className(),
        ],
    ];
}

如果有效,您可以通过参数化行为来限制访问,例如:

public function behaviors()
{
    return [
        'corsFilter' => [
            'class' => \yii\filters\Cors::className(),
            'cors' => [
                'Origin' => [https://api.stripe.com'],
                'Access-Control-Request-Method' => ['POST', 'PUT'],
            ],

        ],
    ];
}

因此,对于登陆这里的任何人来说,我可以让它工作的唯一方法是删除 ActiveForm 脚手架。真可惜,因为我不得不用 Javascript 验证非 Stripe 输入字段,这需要更多工作。

我确实向任何人挑战 post Yii 中使用 ActiveForm 的工作代码,这将 return 一个令牌。我不认为这是可以做到的......但我很乐意是错误的。

最好的, 乔