我正在尝试将 Pin.net.au CC 处理集成到我的站点中。我正在使用 Omnipay 库来拨打电话。
为了不在我的服务器中存储 CC 详细信息,我使用了Pin.js 令牌方法。
在表单提交页面(在用户填写个人和抄送详细信息后),javascript 执行“防止默认”并将数据从表单(浏览器)直接发送到 pin.net.au 服务器。服务器发送一个 card_token 作为响应并将表单重新提交到我的服务器。
此令牌已成功接收,我可以在测试中输出它。
当我拿走该令牌并向 pin.net.au 发送购买请求时,我遇到了麻烦。根据 API 文档,我在发送令牌时不需要发送用户和卡的详细信息(实际上是令牌的整个点)。我将此令牌连同其他必填信息一起发送,例如电子邮件、金额、描述等。
当我在终端上卷曲并成功充电时,此方法有效。
但是,每次使用 Omnipay 库发送此购买/收费请求时,我都会收到一个 422(无效资源),询问用户详细信息和 CC 信息。它应该从我发送的令牌中填充这些东西。
我搜索了 Omnipay 和 Pin.net.au 的 API 文档。我似乎没有做错什么。我错过了什么?
这是我的收费要求:
$gateway = GatewayFactory::create('Pin');
$gateway->setSecretKey('MY_SECRET_KEY');
$response = $gateway->purchase([
'email' => 'user@email.com',
'description' => 'Package',
'amount' => '99',
'currency' => 'AUD',
'card_token' => Input::get('card_token'),
'ip_address' => Input::get('ip_address')
])->send();
最后,这并不重要,但如果你想知道,我正在使用 Laravel 4。