[英]Error while integrating Braintree php
我正在使用Braintree在我的codeigniter项目中处理信用卡付款,并且Braintree_Transaction :: sale抛出无效的参数异常 ,该异常表示帐单邮寄地址参数无效的密钥消息。 但是我不认为有任何验证错误。 我正在尝试做的事情可以简化如下:
$card_info = [
'cardholderName' =>mysql_real_escape_string($_POST['full_name']),
'number' =>mysql_real_escape_string($_POST['number']),
'expirationMonth' =>mysql_real_escape_string($_POST['expiry_month']),
'expirationYear' =>mysql_real_escape_string($_POST['expiry_year']),
'cvv' =>mysql_real_escape_string($_POST['card_cvv']),
'billingAddress' =[
'firstName' =>mysql_real_escape_string($_POST['first_name']),
'lastName'=>mysql_real_escape_string($_POST['last_name']),
'streetAddress'=>mysql_real_escape_string($_POST['user_address']),
'city'=>mysql_real_escape_string($_POST['user_city']),
'state'=>mysql_real_escape_string($_POST['user_state']),
'country' =>mysql_real_escape_string($_POST['user_country']),
]
]
$result = Braintree_Transaction::sale(['amount'=>'4.99',
'creditCard'=>$card_info,
'options'=>['submitForSettlement' => true]
])
但是当我运行以下代码时,出现以下错误:
<br />
<b>Fatal error</b>: Uncaught exception 'InvalidArgumentException' with message 'invalid keys: creditCard[billingAddress][city], creditCard[billingAddress][country], creditCard[billingAddress][firstName], creditCard[billingAddress][lastName], creditCard[billingAddress][state], creditCard[billingAddress][streetAddress]' in C:\xampp\htdocs\naya_admin\application\third_party\braintree\lib\Braintree\Util.php:343
Stack trace:
#0 C:\xampp\htdocs\naya_admin\application\third_party\braintree\lib\Braintree\TransactionGateway.php(48): Braintree\Util::verifyKeys(Array, Array)
#1 C:\xampp\htdocs\naya_admin\application\third_party\braintree\lib\Braintree\TransactionGateway.php(251): Braintree\TransactionGateway->create(Array)
#2 C:\xampp\htdocs\naya_admin\application\third_party\braintree\lib\Braintree\Transaction.php(480): Braintree\TransactionGateway->sale(Array)
#3 C:\xampp\htdocs\naya_admin\application\modules\brain_tree\controllers\brain_tree .php(67): Braintree\Transaction::sale(Array)
#4 [internal function]: Brain_tree->transaction()
#5 in
<b>C:\xampp\htdocs\naya_admin\application\third_party\braintree\lib\Braintree\Ut il.php</b> on line
<b>343</b>
<br />
您需要分隔帐单邮寄地址:
$card_info = [
'cardholderName' =>mysql_real_escape_string($_POST['full_name']),
'number' =>mysql_real_escape_string($_POST['number']),
'expirationMonth' =>mysql_real_escape_string($_POST['expiry_month']),
'expirationYear' =>mysql_real_escape_string($_POST['expiry_year']),
'cvv' =>mysql_real_escape_string($_POST['card_cvv']),
];
$billing =[
'firstName' =>mysql_real_escape_string($_POST['first_name']),
'lastName'=>mysql_real_escape_string($_POST['last_name']),
'streetAddress'=>mysql_real_escape_string($_POST['user_address']),
'city'=>mysql_real_escape_string($_POST['user_city']),
'state'=>mysql_real_escape_string($_POST['user_state']),
'country' =>mysql_real_escape_string($_POST['user_country']),
];
$result = Braintree_Transaction::sale(['amount'=>'4.99',
'creditCard'=>$card_info,
'billing' => $billing,
'options'=>['submitForSettlement' => true]
]);
全面披露:我在Braintree工作。 如果您还有其他疑问,请随时与支持小组联系 。
Ilan Hasanov是正确的,您需要在交易呼叫中将计费参数与信用卡详细信息分开传递。 另外,您应将“ city”替换为“ locality” ,将“ state”替换为“ region” ,将“ country”替换为数据库中存储的任何国家/地区字段
$billing =[
'firstName' =>mysql_real_escape_string($_POST['first_name']),
'lastName'=>mysql_real_escape_string($_POST['last_name']),
'streetAddress'=>mysql_real_escape_string($_POST['user_address']),
'locality'=>mysql_real_escape_string($_POST['user_city']),
'region'=>mysql_real_escape_string($_POST['user_state']),
'countryName' =>mysql_real_escape_string($_POST['user_country']),
];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.