当前位置: 首页 > 知识库问答 >
问题:

Magento-使用Paypal Express创建部分付款时出错

滕祯
2023-03-14

我试图创建一个模块,允许在结帐过程中部分付款。

让我们坐一辆装有两种产品的购物车,第一种=1000欧元,第二种=500欧元。

用户必须支付1500欧元,但我允许分两步支付,第一个用户将支付1000欧元,然后他必须支付500欧元。

尝试使用Paypal Express支付时,我总是会遇到以下错误:

PayPal gateway has rejected request. 
Item total is invalid (#10426: Invalid Data). 
The totals of the cart item amounts do not match order amounts 
(#10413: Transaction refused because of an invalid argument. 
See additional error messages for details).

基本上,我所做的是修改app/code/local/Mage/Paypal/Model/Express覆盖Amount的值:

$transaction_amount = $this->_quote->getBaseGrandTotal();
if ($this->_quote->getPartialpayment_price() > 0) {
    $transaction_amount = $this->_quote->getPartialpayment_price();
}

$this->_api->setAmount($transaction_amount)
        ->setCurrencyCode($this->_quote->getBaseCurrencyCode())
        ->setInvNum($this->_quote->getReservedOrderId())
        ->setReturnUrl($returnUrl)
        ->setCancelUrl($cancelUrl)
        ->setSolutionType($solutionType)
        ->setPaymentAction($this->_config->paymentAction);

是否有可能避免Paypal内部检查的内容,将最终金额与购物车项目金额进行比较?

共有1个答案

阎阎宝
2023-03-14

为了不向Paypal API请求发送单个项目,后端有一个名为Transfer Cart Line items的选项。如果设置为否,我们不会将每个购物车项目添加到该请求中。

 类似资料:
  • 我用贝宝支付预付我的Magento购物车。我发现一个来自加拿大的客户的信用卡不断下降。我直接和客户谈了一下,做了以下测试: > 转到我的Paypal管理器中的虚拟终端,只测试授权,它也不工作。虚拟终端的单个事务测试给出错误:结果代码:12响应消息:Decreded:15005-无法处理此事务。 我在我的贝宝账户里发了一张2美元的发票,但这也不起作用。 客户然后使用信用卡从其他地方和它的工作很好。然

  • 我需要在Realex支付中更新现有卡上的到期日期和持卡人姓名。 哈希值语法应采用以下格式: 这里有一个例子说明它应该是什么样子 当我运行以下方法时,我得到错误: “SHA1哈希不正确-请检查您的代码和开发人员文档” 我做错了什么?

  • 说明api接口绑定收款账户 请求地址 http://api.dc78.cn/Api/sys_createCollectionAccount 请求方式 POST 请求参数 参数 参数名称 描述 account_id 收款账号ID 不传值则为新增,传值则为编辑(编辑只允许修改收款账号名称) pay_type 支付通道类型 1:微信 2:支付宝 3:扫呗 account_name 账号名称(账号名称只用

  • 我需要在贝宝中使用部分支付,但我不知道如何在PHP中使用贝宝部分支付。在没有信用卡的情况下使用贝宝账户授权和捕获金额的过程是什么。 例如,如果我在结账时授权1000美元,第一次发货时捕获500美元,第二次发货时捕获500美元。

  • 在C++11中,你可以有多种语法选择用以对象的初始化,这样的语法显得混乱不堪并让人无所适从,(),=,{}均可以用来进行初始化: int x(0); //使用()进行初始化 int y = 0; //使用=进行初始化 int z{0}; //使用{}进行初始化 在很多情况下,可以同时使用=和{} int z = {0}; //使用{}和=进行初始化 对于这一条,我通常的