我正在尝试建立一个使用全方位授权AuthorizeNet_CIM的支付处理器。这方面的文件不多。
步骤1)我成功地创建了网关对象,并可以向authorize.net沙箱服务器发出请求。
步骤2)是“创建一张卡片”,以便将来与令牌计费一起使用:$gateway->createCard()。这是成功的。
来自通用Omnipay令牌计费文档
“. createCard($options) --返回包含cardReference的响应对象,该对象可用于将来的事务.”
我在上面的createCard()响应对象中没有看到特定的‘createCard’。
因此,我创建了一个$cardRef数组并获取返回的响应CustomerProfileId和CustomerPaymentProfileId。
$profileResult['customerProfileId']=$response->getCustomerProfileId();
$profileResult['paymentProfileId']=$response->getCustomerPaymentProfileId();步骤3)是生成失败的购买的函数:
function create_transaction($cardRef,$amount,$description,$invoice_number){
global $status, $gateway;
try {
// Send purchase request
$response = $gateway->purchase(
array(
'cardReference' => $cardRef ,
'amount' => $amount,
'currency' => 'USD',
'description' => $_POST['description'],
'transactionId' => $invoice_number
)
)->send();
if ($response->isSuccessful()) {
// Payment was successful
$status.='Success: '.$response->getMessage();
} elseif ($response->isRedirect()) {
// Redirect to offsite payment gateway
$response->redirect();
} else {
// Payment failed
$status.='Transaction Failure: '.$response->getMessage();
}
} catch (Exception $e) {
$status.='<strong>Error:</strong> '.$e->getMessage(). "<br/>";
}
}购买失败,当我查看Response对象时,似乎请求没有填充cardReference对象。
[cardReference] => Omnipay\AuthorizeNet\Model\CardReference Object
(
[customerProfileId:Omnipay\AuthorizeNet\Model\CardReference:private] =>
[paymentProfileId:Omnipay\AuthorizeNet\Model\CardReference:private] =>
[shippingProfileId:Omnipay\AuthorizeNet\Model\CardReference:private] =>
)显然,我没有将正确的cardReference数据传递给购买方法。
任何帮助都将不胜感激。
谢谢
发布于 2017-02-21 21:28:06
我显然需要使用无证件的Omnipay方法;
$response->getCardReference();以使cardReference对象传递给我的create_transaction()函数。
都修好了。
谢谢
https://stackoverflow.com/questions/42377571
复制相似问题