Omnipay Stripe 额外参数

Posted

技术标签:

【中文标题】Omnipay Stripe 额外参数【英文标题】:Omnipay Stripe Extra Parameters 【发布时间】:2014-05-20 10:31:17 【问题描述】:

我正在尝试将 Omnipay API 与 Stripe 一起使用,但我无法传入额外的参数,例如“名称”、“元数据”或“邮编”。

   // The token is grabbed from stripe JS
   $this->stripe_gateway = Omnipay::create('Stripe');

   $response = $this->stripe_gateway->purchase([
        'amount' => $amount,
        'currency' => 'usd',
        'name' => $name,
        'description' => $product->title,
        'zip_address' => $zip,
        'metadata' => [
            'name' => $name,
            'user_id' => $this->session->get('id')
        ],
        'token' => $stripeToken,
    ])->send();

我什么都做不了,这不是内置在 API 中的吗?

【问题讨论】:

【参考方案1】:

Omnipay 使用它自己的参数名称,而不是 Stripe 的。这是因为 Omnipay 试图抽象出各种支付网关之间的大部分差异。

目前,omnipay/stripe 包不支持发送其中一些参数(仅支持amountcurrencydescription 和现在的metadata)。您可以在此处查看支持的参数:

https://github.com/omnipay/stripe/blob/master/src/Message/AuthorizeRequest.php

也就是说,您仍然可以轻松访问底层 Stripe 请求以添加您自己的自定义参数:

$request = $this->stripe_gateway->purchase([
    'amount' => $amount,
    'token' => $stripeToken,
    'metadata' => ['foo' => 'bar'],
]);
$data = $request->getData();

$data['zip_address'] = '12345';
$data['another_custom_parameter'] = 'wow';
$response = $request->sendData($data);

注意:

$data = $request->getData();
$response = $request->sendData($data);

和调用完全一样:

$response = $request->send();

或者,您可以创建一个拉取请求以向 Omnipay Stripe 包添加额外的参数。我刚刚添加了metadata 参数作为示例:

https://github.com/omnipay/stripe/commit/99c82dc42c7c0b9ec58d8c4fb917f3dc5d1c23e2

【讨论】:

以上是关于Omnipay Stripe 额外参数的主要内容,如果未能解决你的问题,请参考以下文章

Omnipay:将钱从 PayPal 账户转移到 Stripe 账户

创建带有额外天数的 Stripe 订阅但立即计费?

Omnipay-Stripe 将信用卡详细信息从表单存储到数据库

有没有办法在没有额外服务器的情况下将 Firebase 与 Stripe 一起使用?

Laravel Omnipay - transactionReference 参数是必需的

Omnipay 代币计费不适用于条带