1

我正在尝试将 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。

4

2 回答 2

1

您的示例请求金额为 99,Pin Payments 费用的最低金额为 1 美元(金额 = 100)。

不过,我认为这不是您所指的问题,看起来 Omnipay 不支持使用 card_token 设备。如果你去看看这里 - https://github.com/adrianmacneil/omnipay/blob/master/src/Omnipay/Pin/Message/PurchaseRequest.php#L34 - 你可以看到 Omnipay 没有发送 card_token 字段请求,它只尝试发送卡详细信息,这显然不存在于您的示例中!

也许您可以与 Omnipay 开发人员取得联系或自己编写拉取请求!

于 2013-09-20T07:34:16.070 回答
1

这在 Omnipay v1.0.4 中已修复 - 您应该能够像这样使用令牌:

$gateway = GatewayFactory::create('Pin');
$gateway->setSecretKey('MY_SECRET_KEY');
$response = $gateway->purchase([
  'description' => 'Package',
  'amount'      => '99.00',
  'currency'    => 'AUD',
  'token'       => Input::get('token'),
  'ip_address'  => Input::get('ip_address'),
  'card'        => ['email' => 'user@email.com'],
 ])->send();
于 2013-09-21T01:30:49.197 回答