我们目前在进行付款时使用的是来自paypal的checkout.js,一切正常,我们现在希望升级到Paypal API的v2。
以下是我们使用checkout.js的代码 https://jsfiddle.net/hxm0cjbp/
public class Trie : Dictionary<char, Trie>
{
public void Add(string value)
{
var c = String.IsNullOrEmpty(value) ? '\0' : value[0];
if (!this.ContainsKey(c))
{
this[c] = new Trie();
}
if (c != '\0')
{
this[c].Add(value.Substring(1));
}
}
}
下面是我们使用v2的新代码。 https://jsfiddle.net/sk3rpme5/
paypal.Button.render({
style: {
// style here
},
env: variable_here,
client: {
sandbox: variable_here,
production: variable_here
},
commit: true,
validate: function (actions) {
// problem occur from here in v2
// by using actions.disable();
functionToDisableButtonIfValidationFail();
},
onClick: function () {
// more functions here
},
payment: function (data, actions) {
// more functions here
},
onAuthorize: function (data, actions) {
// more functions here
}
}, '#selector_here');
错误开始于validate方法。
在使用v1时,单击贝宝按钮。如果验证失败,它将显示表单错误。在v2中,单击“贝宝”按钮时。贝宝重定向页面仍然显示,并且表单错误也是如此。我们想像v1一样进行工作,如果验证正确,则仅显示贝宝页面。检查SDK时,看起来paypal.Buttons({
validate: function(){
// problem occur from here
// actions.disable() is not recognize anymore
functionToDisableButtonIfValidationFail();
},
createOrder: function() {
// function here
}
}).render('#selector_here');
已被删除。