JRE*_*EAM 3 stripe-payments omnipay
我试图使用带条纹的Omnipay API,但我无法传递额外的参数,如"名称","元数据"或"Zip".
// 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();
Run Code Online (Sandbox Code Playgroud)
我不能得到任何工作,这不是内置于API?
Omnipay使用它自己的参数名称,而不是Stripe的.那是因为Omnipay试图抽象出各种支付网关之间的大部分差异.
眼下,omnipay/stripe包不支持发送一些参数(只amount,currency,description,和现在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);
Run Code Online (Sandbox Code Playgroud)
注意:
$data = $request->getData();
$response = $request->sendData($data);
Run Code Online (Sandbox Code Playgroud)
与调用完全相同:
$response = $request->send();
Run Code Online (Sandbox Code Playgroud)
或者,您可以创建一个拉取请求,以将额外参数添加到Omnipay Stripe包中.我刚添加metadata参数作为示例:
https://github.com/omnipay/stripe/commit/99c82dc42c7c0b9ec58d8c4fb917f3dc5d1c23e2