我在我的网络应用程序中使用Braintree支付网关。我想知道我是否可以从中获取用户信息。
我无法保存卡的详细信息,这是不允许的。但如果我需要为同一个用户运行另一个交易,我可以从Braintree本身获取他的信息并自动填写卡片详细信息吗?
答案 0 :(得分:5)
我在Braintree工作。如果您想了解比Stack Overflow更多的信息,请联系我们的support team。
像Braintree这样的支付网关的主要优势之一就是它们可以在不必接触信用卡信息的情况下对信用卡信息进行标记。
基本上,您使用Braintree.js加密浏览器中的卡信息,以便您的服务器永远不会看到它。
然后,您将加密的信息传递给Braintree。作为回报,您会获得"xg67ba"
之类的令牌,以后您可以再次使用该令牌为同一张卡充电:
result = Braintree::Transaction.sale(
:amount => "100.00",
:customer => {
:first_name => "Dan",
:last_name => "Smith"
},
:credit_card => {
:number => "encryped_credit_card_number",
:expiration_date => "encryped_expiration_date",
:cvv => "encrypted_cvv"
},
:options => {
:store_in_vault => true
}
)
result.transaction.customer_details.id
#=> e.g. "131866"
result.transaction.credit_card_details.token
#=> e.g. "f6j8"
所以下次,它看起来像:
result = Braintree::Transaction.sale(
:amount => "10.00",
:customer_id => "131866",
:credit_card => {:cvv => 'encrypted_cvv'}
)
每张信用卡都与客户相关联,因此,如果您只想向客户的/默认卡收费,则只需提供customer id
即可。建议再次从客户那里获取cvv
(不允许任何人存储),但不是必需的。
答案 1 :(得分:1)
获得客户ID后,您可以使用以下PHP代码获取客户详细信息。
$customerId = 67222186;
try{
$result = Braintree_Customer::find($customerId);
echo $result->id; echo "\n";
echo $result->firstName; echo "\n";
echo $result->lastName; echo "\n";
echo $result->email; echo "\n";
echo $result->phone; echo "\n";
} catch (Exception $e){
echo $e->getMessage();
}
http://www.web-technology-experts-notes.in/2015/06/manage-customer-details-in-braintree.html