PayPal 客户端 REST:动态价格

Posted

技术标签:

【中文标题】PayPal 客户端 REST:动态价格【英文标题】:PayPal Client-Side REST: dynamic prices 【发布时间】:2018-02-22 12:47:51 【问题描述】:

我正在为我的项目使用 PayPal 客户端 REST。我有不同的产品,每个都有不同的价格。我有一个文本框,其中包含购物车中所有产品的总价格。但是当我尝试获取该文本框的值时,我收到了 paypal API 错误。以下是我的代码:

<input type="number" id="total_amount">
<div id="paypal-button-container" class="text-right"></div>

<script src="https://www.paypalobjects.com/api/checkout.js"></script>

<script>
    var amt =  $('#total_amount').val();
    paypal.Button.render(
    env: 'sandbox',
    client: 
        sandbox:    '<sandbox_api_ey>',
        production: '<insert production client id>'
    ,

    payment: function(data, actions) 
        var amt = $('#total_amount').val();
        return actions.payment.create(
            payment: 
                transactions: [
                    
                        amount:  total: amt, currency: 'JPY' 
                    
                ]
            
        );
    ,

    onAuthorize: function(data, actions) 
        return actions.payment.execute().then(function() 
            window.alert('Payment Complete!');
        );
    

, '#paypal-button-container');
</script>

从我的代码中可以看出,我将金额存储在变量 var amt = $('#total_amount').val(); 中,然后在 json 中使用该变量。

我的问题是我在控制台中收到此错误,并且贝宝窗口无法打开。

它指向货币,但我很确定它是正确的,每当我硬编码金额时,它都能正常工作。

【问题讨论】:

你是硬编码为数字还是字符串? 我将其硬编码为字符串 【参考方案1】:

你可以试试

payment: function (data, actions) 

var x = document.getElementById("total_amount");
var currentVal = x.value;

console.log(currentVal);
return actions.payment.create(
  transactions: [
    amount: 
      total: currentVal,
      currency: 'JPY'
    
  ]
);

另外,请确保在 HTTPS 环境中进行测试

在这里查看完整的工作 sn-p

<iframe   src="//jsfiddle.net/vwas4cqj/embedded/" allowfullscreen="allowfullscreen" allowpaymentrequest frameborder="0"></iframe>

【讨论】:

以上是关于PayPal 客户端 REST:动态价格的主要内容,如果未能解决你的问题,请参考以下文章

PayPal REST API - 计费计划和协议以及增值税

PAYPAL 支付客户端 REST 脚本

为 PayPal 客户端 REST 集成传递项目名称

PayPal Rest API 小计等于零

从 Paypal 客户端 REST 集成按钮返回客户信息

Paypal Rest API - 如何获取客户端 ID 和密码?