Javascript 如何在客户端编辑键值配对中的字符串。(贝宝结账演示)
我有一个小的在线业务,我想实施一个在线支付系统。我选择的是paypal,他们有一个易于使用的解决方案:Javascript 如何在客户端编辑键值配对中的字符串。(贝宝结账演示),javascript,rest,api,paypal,Javascript,Rest,Api,Paypal,我有一个小的在线业务,我想实施一个在线支付系统。我选择的是paypal,他们有一个易于使用的解决方案: // Render the PayPal button into #paypal-button-container // by - Using PayPal REST V2 API paypal .Buttons({ style: { layout: 'horizontal', color:
// Render the PayPal button into #paypal-button-container
// by - Using PayPal REST V2 API
paypal
.Buttons({
style: {
layout: 'horizontal',
color: 'gold',
shape: 'pill',
label: 'checkout',
size: 'responsive',
tagline: 'true',
},
// Set up the transaction
createOrder: function(data, actions) {
$('#paypalmsg').hide();
$('#transmsg').html('<b>'+'WAITING ON AUTHORIZATION...'+'</b>');
$('#chkoutmsg').hide()
return actions.order.create({
purchase_units: [{
description: 'GnG Order',
amount: {
value: cartTotal (HERE IS WHERE YOUR USER INPUT AMOUNT WOULD GO AS
A VARIABLE, you will have to make it a VAR using JavaScript or
Jquery, I.E. UserVal = $(USERSelect).val();)
}
}],
application_context: {
shipping_preference: 'NO_SHIPPING'
}
});
},
// Finalize the transaction
onApprove: function(data, actions) {
return actions.order.get().then(function(orderDetails) {
// Show a success message to the buyer
$('#transmsg').html('<b>' + 'AUTHORIZED...' + '</b>');
$('#transmsg').append('<br>'+'Transaction completed by: ' +
orderDetails.payer.name.given_name +' '+
orderDetails.payer.name.surname + '<br>' + "Order Id: " +
orderDetails.id + '<br>' + 'Status: ' + orderDetails.status+'!' +
'<br>'+ 'Thank You For Your Order'+ '<br>');
if (orderDetails.status === "APPROVED") {
window.setTimeout(function() {}, 500)
$('#transmsg').append('<b>' + 'Sending Order...Please Wait' +
'</b>'+'<br>');
// do some form clean up before the email post
var getId = '#'+ $('span:contains("Market")').attr('id');
var getmrktDiv = '#'+ $(getId).offsetParent().attr('id');
var mrktchkId = '#'+
$(getmrktDiv).closest(getmrktDiv).find(".chkbox").attr('id');
var mrktpriceId = '#'+
$(getmrktDiv).closest(getmrktDiv).find(".price").attr('id');
var chkboxId = "#chk6";
var hidpriceId = "#pricef";
var marketLocation = $(mrktchkId);
/* Lets do a little Validation */
/* This is WHERE you do any form validation (without using PayPal
built-in Validation function */
if (marketLocation.length > 0 ) {
var checked = $(mrktchkId).prop('checked');
if (!checked) {
var storedVal = $(mrktpriceId).val();
if ($(mrktpriceId+':not([data-val])')) {
$(mrktpriceId).attr("data-val", storedVal);
}
$(mrktpriceId).val("");
}
}
$('#transid').val(orderDetails.id); (PAYPAL RETURN TRANSACTION ID,
ADD TO FORM BEFORE POST)
$('#orderstat').val(orderDetails.status); (PAYPAL ORDER STATUS,
ADD TO FORM BEFORE POST)
$('#orderform').submit(); (SEND EMAIL TO BUSINESS EMAIL AFTER
TRANSACTION IS AUTHORIZED)
}
});
if (details.error === 'INSTRUMENT_DECLINED') {
$('#transmsg').html('<b>' + 'TRANSACTION WAS DECLINED'+'</b>');
$('#transmsg').fadeIn('slow').delay(3000).fadeOut('slow', function() {
$('#paypalmsg').show();
$('#chkoutmsg').show();
$('#transmsg').empty();
});
return actions.restart();
};
},
onCancel: function(data) {
$('#transmsg').html('<b>' + 'YOUR TRANSACTION WAS CANCELLED' + '</b>');
$('#transmsg').fadeIn('slow').delay(3000).fadeOut('slow', function() {
$('#paypalmsg').show();
$('#chkoutmsg').show();
$('#transmsg').empty();
});
}
}).render('#paypal-button-container');
</script>
我目前还不清楚如何允许最终用户编辑他们愿意支付的金额。目前的情况是,在支付时,最终用户只能支付1美分(或者不管我将字符串值更改为多少。无论哪种方式,该值都是静态的)。我想找到一个解决方案,最终用户可以按照自己的意愿多付或少付
// Render the PayPal button into #paypal-button-container
// by - Using PayPal REST V2 API
paypal
.Buttons({
style: {
layout: 'horizontal',
color: 'gold',
shape: 'pill',
label: 'checkout',
size: 'responsive',
tagline: 'true',
},
// Set up the transaction
createOrder: function(data, actions) {
$('#paypalmsg').hide();
$('#transmsg').html('<b>'+'WAITING ON AUTHORIZATION...'+'</b>');
$('#chkoutmsg').hide()
return actions.order.create({
purchase_units: [{
description: 'GnG Order',
amount: {
value: cartTotal (HERE IS WHERE YOUR USER INPUT AMOUNT WOULD GO AS
A VARIABLE, you will have to make it a VAR using JavaScript or
Jquery, I.E. UserVal = $(USERSelect).val();)
}
}],
application_context: {
shipping_preference: 'NO_SHIPPING'
}
});
},
// Finalize the transaction
onApprove: function(data, actions) {
return actions.order.get().then(function(orderDetails) {
// Show a success message to the buyer
$('#transmsg').html('<b>' + 'AUTHORIZED...' + '</b>');
$('#transmsg').append('<br>'+'Transaction completed by: ' +
orderDetails.payer.name.given_name +' '+
orderDetails.payer.name.surname + '<br>' + "Order Id: " +
orderDetails.id + '<br>' + 'Status: ' + orderDetails.status+'!' +
'<br>'+ 'Thank You For Your Order'+ '<br>');
if (orderDetails.status === "APPROVED") {
window.setTimeout(function() {}, 500)
$('#transmsg').append('<b>' + 'Sending Order...Please Wait' +
'</b>'+'<br>');
// do some form clean up before the email post
var getId = '#'+ $('span:contains("Market")').attr('id');
var getmrktDiv = '#'+ $(getId).offsetParent().attr('id');
var mrktchkId = '#'+
$(getmrktDiv).closest(getmrktDiv).find(".chkbox").attr('id');
var mrktpriceId = '#'+
$(getmrktDiv).closest(getmrktDiv).find(".price").attr('id');
var chkboxId = "#chk6";
var hidpriceId = "#pricef";
var marketLocation = $(mrktchkId);
/* Lets do a little Validation */
/* This is WHERE you do any form validation (without using PayPal
built-in Validation function */
if (marketLocation.length > 0 ) {
var checked = $(mrktchkId).prop('checked');
if (!checked) {
var storedVal = $(mrktpriceId).val();
if ($(mrktpriceId+':not([data-val])')) {
$(mrktpriceId).attr("data-val", storedVal);
}
$(mrktpriceId).val("");
}
}
$('#transid').val(orderDetails.id); (PAYPAL RETURN TRANSACTION ID,
ADD TO FORM BEFORE POST)
$('#orderstat').val(orderDetails.status); (PAYPAL ORDER STATUS,
ADD TO FORM BEFORE POST)
$('#orderform').submit(); (SEND EMAIL TO BUSINESS EMAIL AFTER
TRANSACTION IS AUTHORIZED)
}
});
if (details.error === 'INSTRUMENT_DECLINED') {
$('#transmsg').html('<b>' + 'TRANSACTION WAS DECLINED'+'</b>');
$('#transmsg').fadeIn('slow').delay(3000).fadeOut('slow', function() {
$('#paypalmsg').show();
$('#chkoutmsg').show();
$('#transmsg').empty();
});
return actions.restart();
};
},
onCancel: function(data) {
$('#transmsg').html('<b>' + 'YOUR TRANSACTION WAS CANCELLED' + '</b>');
$('#transmsg').fadeIn('slow').delay(3000).fadeOut('slow', function() {
$('#paypalmsg').show();
$('#chkoutmsg').show();
$('#transmsg').empty();
});
}
}).render('#paypal-button-container');
</script>
paypal提供的代码如下:
<div class='uk-section'>
<!-- Set up a container element for the button -->
<div id="paypal-button-container"></div>
<!-- Include the PayPal JavaScript SDK -->
<script src="https://www.paypal.com/sdk/js?client-id=sd=USD"></script>
<script>
// Render the PayPal button into #paypal-button-container
paypal.Buttons({
// Set up the transaction
createOrder: function(data, actions) {
return actions.order.create({
purchase_units: [{
amount: {
value: '0.01'
}
}]
});
},
// Finalize the transaction
onApprove: function(data, actions) {
return actions.order.capture().then(function(details) {
// Show a success message to the buyer
alert('Transaction completed by ' + details.payer.name.given_name + '!');
});
}
}).render('#paypal-button-container');
</script>
</div>
// Render the PayPal button into #paypal-button-container
// by - Using PayPal REST V2 API
paypal
.Buttons({
style: {
layout: 'horizontal',
color: 'gold',
shape: 'pill',
label: 'checkout',
size: 'responsive',
tagline: 'true',
},
// Set up the transaction
createOrder: function(data, actions) {
$('#paypalmsg').hide();
$('#transmsg').html('<b>'+'WAITING ON AUTHORIZATION...'+'</b>');
$('#chkoutmsg').hide()
return actions.order.create({
purchase_units: [{
description: 'GnG Order',
amount: {
value: cartTotal (HERE IS WHERE YOUR USER INPUT AMOUNT WOULD GO AS
A VARIABLE, you will have to make it a VAR using JavaScript or
Jquery, I.E. UserVal = $(USERSelect).val();)
}
}],
application_context: {
shipping_preference: 'NO_SHIPPING'
}
});
},
// Finalize the transaction
onApprove: function(data, actions) {
return actions.order.get().then(function(orderDetails) {
// Show a success message to the buyer
$('#transmsg').html('<b>' + 'AUTHORIZED...' + '</b>');
$('#transmsg').append('<br>'+'Transaction completed by: ' +
orderDetails.payer.name.given_name +' '+
orderDetails.payer.name.surname + '<br>' + "Order Id: " +
orderDetails.id + '<br>' + 'Status: ' + orderDetails.status+'!' +
'<br>'+ 'Thank You For Your Order'+ '<br>');
if (orderDetails.status === "APPROVED") {
window.setTimeout(function() {}, 500)
$('#transmsg').append('<b>' + 'Sending Order...Please Wait' +
'</b>'+'<br>');
// do some form clean up before the email post
var getId = '#'+ $('span:contains("Market")').attr('id');
var getmrktDiv = '#'+ $(getId).offsetParent().attr('id');
var mrktchkId = '#'+
$(getmrktDiv).closest(getmrktDiv).find(".chkbox").attr('id');
var mrktpriceId = '#'+
$(getmrktDiv).closest(getmrktDiv).find(".price").attr('id');
var chkboxId = "#chk6";
var hidpriceId = "#pricef";
var marketLocation = $(mrktchkId);
/* Lets do a little Validation */
/* This is WHERE you do any form validation (without using PayPal
built-in Validation function */
if (marketLocation.length > 0 ) {
var checked = $(mrktchkId).prop('checked');
if (!checked) {
var storedVal = $(mrktpriceId).val();
if ($(mrktpriceId+':not([data-val])')) {
$(mrktpriceId).attr("data-val", storedVal);
}
$(mrktpriceId).val("");
}
}
$('#transid').val(orderDetails.id); (PAYPAL RETURN TRANSACTION ID,
ADD TO FORM BEFORE POST)
$('#orderstat').val(orderDetails.status); (PAYPAL ORDER STATUS,
ADD TO FORM BEFORE POST)
$('#orderform').submit(); (SEND EMAIL TO BUSINESS EMAIL AFTER
TRANSACTION IS AUTHORIZED)
}
});
if (details.error === 'INSTRUMENT_DECLINED') {
$('#transmsg').html('<b>' + 'TRANSACTION WAS DECLINED'+'</b>');
$('#transmsg').fadeIn('slow').delay(3000).fadeOut('slow', function() {
$('#paypalmsg').show();
$('#chkoutmsg').show();
$('#transmsg').empty();
});
return actions.restart();
};
},
onCancel: function(data) {
$('#transmsg').html('<b>' + 'YOUR TRANSACTION WAS CANCELLED' + '</b>');
$('#transmsg').fadeIn('slow').delay(3000).fadeOut('slow', function() {
$('#paypalmsg').show();
$('#chkoutmsg').show();
$('#transmsg').empty();
});
}
}).render('#paypal-button-container');
</script>
//将PayPal按钮渲染到#PayPal按钮容器中
贝宝,按钮({
//设置事务
createOrder:函数(数据、操作){
return actions.order.create({
购买单位:[{
金额:{
值:“0.01”
}
}]
});
},
//完成交易
onApprove:功能(数据、操作){
返回actions.order.capture().then(函数(详细信息){
//向买家显示成功消息
警报(“+details.payer.name.given_name+”!”完成的交易);
});
}
}).render(“#贝宝按钮容器”);
正如您所看到的,值amount是一个对象中、另一个对象中、数组中、对象中的字符串密钥对,它是函数中返回语句的输入参数。如能提供任何指导以找到有效的解决方案,我们将不胜感激 只需将您的金额输入一个输入字段,让用户输入他/她的值,并使用该值转换到PayPal API即可。。
// Render the PayPal button into #paypal-button-container
// by - Using PayPal REST V2 API
paypal
.Buttons({
style: {
layout: 'horizontal',
color: 'gold',
shape: 'pill',
label: 'checkout',
size: 'responsive',
tagline: 'true',
},
// Set up the transaction
createOrder: function(data, actions) {
$('#paypalmsg').hide();
$('#transmsg').html('<b>'+'WAITING ON AUTHORIZATION...'+'</b>');
$('#chkoutmsg').hide()
return actions.order.create({
purchase_units: [{
description: 'GnG Order',
amount: {
value: cartTotal (HERE IS WHERE YOUR USER INPUT AMOUNT WOULD GO AS
A VARIABLE, you will have to make it a VAR using JavaScript or
Jquery, I.E. UserVal = $(USERSelect).val();)
}
}],
application_context: {
shipping_preference: 'NO_SHIPPING'
}
});
},
// Finalize the transaction
onApprove: function(data, actions) {
return actions.order.get().then(function(orderDetails) {
// Show a success message to the buyer
$('#transmsg').html('<b>' + 'AUTHORIZED...' + '</b>');
$('#transmsg').append('<br>'+'Transaction completed by: ' +
orderDetails.payer.name.given_name +' '+
orderDetails.payer.name.surname + '<br>' + "Order Id: " +
orderDetails.id + '<br>' + 'Status: ' + orderDetails.status+'!' +
'<br>'+ 'Thank You For Your Order'+ '<br>');
if (orderDetails.status === "APPROVED") {
window.setTimeout(function() {}, 500)
$('#transmsg').append('<b>' + 'Sending Order...Please Wait' +
'</b>'+'<br>');
// do some form clean up before the email post
var getId = '#'+ $('span:contains("Market")').attr('id');
var getmrktDiv = '#'+ $(getId).offsetParent().attr('id');
var mrktchkId = '#'+
$(getmrktDiv).closest(getmrktDiv).find(".chkbox").attr('id');
var mrktpriceId = '#'+
$(getmrktDiv).closest(getmrktDiv).find(".price").attr('id');
var chkboxId = "#chk6";
var hidpriceId = "#pricef";
var marketLocation = $(mrktchkId);
/* Lets do a little Validation */
/* This is WHERE you do any form validation (without using PayPal
built-in Validation function */
if (marketLocation.length > 0 ) {
var checked = $(mrktchkId).prop('checked');
if (!checked) {
var storedVal = $(mrktpriceId).val();
if ($(mrktpriceId+':not([data-val])')) {
$(mrktpriceId).attr("data-val", storedVal);
}
$(mrktpriceId).val("");
}
}
$('#transid').val(orderDetails.id); (PAYPAL RETURN TRANSACTION ID,
ADD TO FORM BEFORE POST)
$('#orderstat').val(orderDetails.status); (PAYPAL ORDER STATUS,
ADD TO FORM BEFORE POST)
$('#orderform').submit(); (SEND EMAIL TO BUSINESS EMAIL AFTER
TRANSACTION IS AUTHORIZED)
}
});
if (details.error === 'INSTRUMENT_DECLINED') {
$('#transmsg').html('<b>' + 'TRANSACTION WAS DECLINED'+'</b>');
$('#transmsg').fadeIn('slow').delay(3000).fadeOut('slow', function() {
$('#paypalmsg').show();
$('#chkoutmsg').show();
$('#transmsg').empty();
});
return actions.restart();
};
},
onCancel: function(data) {
$('#transmsg').html('<b>' + 'YOUR TRANSACTION WAS CANCELLED' + '</b>');
$('#transmsg').fadeIn('slow').delay(3000).fadeOut('slow', function() {
$('#paypalmsg').show();
$('#chkoutmsg').show();
$('#transmsg').empty();
});
}
}).render('#paypal-button-container');
</script>
对于HTML,只需为用户的金额使用一个输入字段。
将RESTAPI V2客户端代码与JavaScript和Jquery混合使用
// Render the PayPal button into #paypal-button-container
// by - Using PayPal REST V2 API
paypal
.Buttons({
style: {
layout: 'horizontal',
color: 'gold',
shape: 'pill',
label: 'checkout',
size: 'responsive',
tagline: 'true',
},
// Set up the transaction
createOrder: function(data, actions) {
$('#paypalmsg').hide();
$('#transmsg').html('<b>'+'WAITING ON AUTHORIZATION...'+'</b>');
$('#chkoutmsg').hide()
return actions.order.create({
purchase_units: [{
description: 'GnG Order',
amount: {
value: cartTotal (HERE IS WHERE YOUR USER INPUT AMOUNT WOULD GO AS
A VARIABLE, you will have to make it a VAR using JavaScript or
Jquery, I.E. UserVal = $(USERSelect).val();)
}
}],
application_context: {
shipping_preference: 'NO_SHIPPING'
}
});
},
// Finalize the transaction
onApprove: function(data, actions) {
return actions.order.get().then(function(orderDetails) {
// Show a success message to the buyer
$('#transmsg').html('<b>' + 'AUTHORIZED...' + '</b>');
$('#transmsg').append('<br>'+'Transaction completed by: ' +
orderDetails.payer.name.given_name +' '+
orderDetails.payer.name.surname + '<br>' + "Order Id: " +
orderDetails.id + '<br>' + 'Status: ' + orderDetails.status+'!' +
'<br>'+ 'Thank You For Your Order'+ '<br>');
if (orderDetails.status === "APPROVED") {
window.setTimeout(function() {}, 500)
$('#transmsg').append('<b>' + 'Sending Order...Please Wait' +
'</b>'+'<br>');
// do some form clean up before the email post
var getId = '#'+ $('span:contains("Market")').attr('id');
var getmrktDiv = '#'+ $(getId).offsetParent().attr('id');
var mrktchkId = '#'+
$(getmrktDiv).closest(getmrktDiv).find(".chkbox").attr('id');
var mrktpriceId = '#'+
$(getmrktDiv).closest(getmrktDiv).find(".price").attr('id');
var chkboxId = "#chk6";
var hidpriceId = "#pricef";
var marketLocation = $(mrktchkId);
/* Lets do a little Validation */
/* This is WHERE you do any form validation (without using PayPal
built-in Validation function */
if (marketLocation.length > 0 ) {
var checked = $(mrktchkId).prop('checked');
if (!checked) {
var storedVal = $(mrktpriceId).val();
if ($(mrktpriceId+':not([data-val])')) {
$(mrktpriceId).attr("data-val", storedVal);
}
$(mrktpriceId).val("");
}
}
$('#transid').val(orderDetails.id); (PAYPAL RETURN TRANSACTION ID,
ADD TO FORM BEFORE POST)
$('#orderstat').val(orderDetails.status); (PAYPAL ORDER STATUS,
ADD TO FORM BEFORE POST)
$('#orderform').submit(); (SEND EMAIL TO BUSINESS EMAIL AFTER
TRANSACTION IS AUTHORIZED)
}
});
if (details.error === 'INSTRUMENT_DECLINED') {
$('#transmsg').html('<b>' + 'TRANSACTION WAS DECLINED'+'</b>');
$('#transmsg').fadeIn('slow').delay(3000).fadeOut('slow', function() {
$('#paypalmsg').show();
$('#chkoutmsg').show();
$('#transmsg').empty();
});
return actions.restart();
};
},
onCancel: function(data) {
$('#transmsg').html('<b>' + 'YOUR TRANSACTION WAS CANCELLED' + '</b>');
$('#transmsg').fadeIn('slow').delay(3000).fadeOut('slow', function() {
$('#paypalmsg').show();
$('#chkoutmsg').show();
$('#transmsg').empty();
});
}
}).render('#paypal-button-container');
</script>
//将PayPal按钮渲染到#PayPal按钮容器中
//通过使用PayPal REST V2 API
贝宝
.按钮({
风格:{
布局:“水平”,
颜色:“金色”,
形状:'药丸',
标签:“签出”,
尺寸:'响应',
标语:“正确”,
},
//设置事务
createOrder:函数(数据、操作){
$('#paypolmsg').hide();
$('#transmsg').html('+'等待授权…'+'');
$('chkoutmsg').hide()
return actions.order.create({
购买单位:[{
描述:“GnG订单”,
金额:{
值:cartTotal(这里是您的用户输入量
如果是变量,则必须使用JavaScript或
Jquery,即UserVal=$(USERSelect.val();)
}
}],
应用程序上下文:{
配送首选项:“无配送”
}
});
},
//完成交易
onApprove:功能(数据、操作){
返回actions.order.get().then(函数(orderDetails){
//向买家显示成功消息
$('#transmsg').html('+'授权…'+'');
$('#transmsg')。追加('
'+'事务完成人:'+
orderDetails.payer.name.given_name+“”+
orderDetails.payer.name.Nastname+'
'+“订单Id:”+
orderDetails.id+'
'+'状态:'+orderDetails.Status+'!'+
“
”+”谢谢您的订单“+”
”;
如果(orderDetails.status==“已批准”){
setTimeout(函数(){},500)
$('#transmsg')。追加('+'发送订单…请稍候'+
“+”
”);
//在发邮件之前做一些表格清理
var getId='#'+$('span:contains(“Market”)).attr('id');
var getmrktDiv='#'+$(getId).offsetParent().attr('id');
var mrktchkId='#'+
$(getmrktDiv).closest(getmrktDiv.find(“.chkbox”).attr('id');
var mrktpriceId='#'+
$(getmrktDiv).closest(getmrktDiv.find(“.price”).attr('id');
var chkboxId=“#chk6”;
var hidpriceId=“#pricef”;
var marketLocation=$(mrktchkId);
/*让我们做一点验证*/
/*这是您进行任何表单验证(不使用PayPal)的地方
内置验证函数*/
如果(marketLocation.length>0){
var checked=$(mrktchkId).prop('checked');
如果(!选中){
var storedVal=$(mrktpriceId.val();
if($(mrktpriceId+'):not([data val])){
$(mrktpriceId).attr(“数据值”,storedVal);
}
$(mrktpriceId).val(“”);
}
}
$('#transid').val(orderDetails.id);(PAYPAL退货交易id,
在发布前添加到表单)
$('#orderstat').val(orderDetails.status);(贝宝订单状态,
在发布前添加到表单)
$(“#订单”).submit();(在