gpt4 book ai didi

php - braintree paypal 在 codeigniter 中不工作

转载 作者:太空宇宙 更新时间:2023-11-03 15:58:14 24 4
gpt4 key购买 nike

我想在我的 codeigniter 网站中集成 Braintree paypal。我在我的 Controller 构造函数中从服务器加载 braintree 文件和凭据,并将其他代码放入一个方法中,但它总是给出错误未知或过期的 payment_method_nonce。下面是方法

public function braintree(){
if($this->session->userdata('user_id') != '' && $this->session->userdata('user_id') != 'user'){
$user_id = $this->input->post('user_id');
$amount = $this->input->post('amount');
$inscription_id = $this->input->post('inscription_id');

$user_details = $this->db->get_where('spm_users',array('id'=>$user_id))->row_array();
if(!empty($user_details->braintree_customer_id)){
$CustomerId = (string)$user_details->braintree_customer_id;
}else{
$result = Braintree_Customer::create([
'firstName' => $user_details->name,
'lastName' => $user_details->surname,
'email' => $user_details->email,
'phone' => $user_details->telephone,
]);
$CustomerId = (string)$result->customer->id;
$this->db->where("id",$user_id);
$this->db->update("spm_users", array('braintree_customer_id'=>$CustomerId));
}
$clientToken = Braintree_ClientToken::generate([
"customerId" => $CustomerId
]);
$card_id ='';
$clientToken_new = Braintree_ClientToken::generate();
$result1 = Braintree_Transaction::sale([
'amount' => $amount,
'paymentMethodNonce' => $clientToken_new,
'options' => [
'submitForSettlement' => True
]
]);
if($result1->success == true){
$updateArr = array(
'amount'=>$result1->transaction->amount,
'balance_transaction'=>$result1->transaction->id,
'inscription_status'=>2,
'status'=>1,
'data'=>json_encode($result1),
'payment_method' => 'Braintree',
'payment_date'=>date('Y-m-d H:i:s')
);
$this->db->where("id",$inscription_id);
$this->_db->update("spm_inscription", $updateArr);
$this->session->set_flashdata('msg','Inscription Payment Success');
redirect('frontend/paypalpayment/'.$inscription_id);
}else{
$this->session->set_flashdata('msg','Payment failed');
redirect('frontend/paypalpayment/'.$inscription_id);
}
}else{
redirect('frontend');
}
}

这是我的构造函数

public function __construct() {
parent::__construct();
require_once '/home/public_html/mysite/braintree/Braintree.php';
Braintree_Configuration::environment('sandbox');
Braintree_Configuration::merchantId('zxxxxxxxxxxxxxxd');
Braintree_Configuration::publicKey('7xxxxxxxxxxxxxxx7');
Braintree_Configuration::privateKey('1xxxxxxxxxxxxxxxxxxxxxx8');
}

我试过谷歌但没有运气。请帮助并提前致谢。

最佳答案

完全披露:我在 Braintree 工作。如果您还有任何疑问,请随时联系support .

来自documentation on Transaction:sale() :

To create a transaction, you must include an amount and either a paymentMethodNonce or a paymentMethodToken.

您在 paymentMethodNonce 参数中传递的参数不是 payment method nonce .相反,你传递给它一个 client token ,这导致它失败。这些项目的名称相似,但用途却截然不同。

  • 客户端 token :包含有关您的网关帐户的配置信息。 client-side SDKs使用它们正确设置自己的配置并与您的服务器无缝协作,不应将它们传递给交易销售电话。
  • 支付方式随机数:对一组标记化支付方式信息的引用,例如信用卡号和到期日期。这些通常由 tokenize 生产在用户输入信用卡信息后调用客户端 SDK。
  • 付款方式 token :对您保存在 Braintree 帐户中的付款方式的引用。

要在您的代码中正确创建交易,您必须引用您保存在保管库中的付款方式(通过使用付款方式 token ),或引用一组新 token 化的付款方式信息客户在您的网站上提交的(通过使用付款方式随机数)。例如,如果您要将客户的付款方式 token 保存在您的数据库中,您可能会运行如下代码:

    if (!empty($user_details->braintree_customer_id)) {
$CustomerId = (string) $user_details->braintree_customer_id;
$CustomerSavedPaymentMethod = (string) $user_details->payment_method_token;
} else {
...
}

$result1 = Braintree_Transaction::sale([
'amount' => $amount,
'paymentMethodToken' => $CustomerSavedPaymentMethod,
'options' => [
'submitForSettlement' => True
]
]);

如果您需要一些额外的资源来创建支付方式随机数并将其传回您的服务器,您可以引用 our full PHP integration example .

关于php - braintree paypal 在 codeigniter 中不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42992337/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com