我已经按照Paypal开发者网站上的建议添加了代码。
<form id="myPaymentContainer" method="post"></form>
<script type="text/javascript">
window.paypalCheckoutReady = function () {
paypal.checkout.setup('XUM4RANUNKG4U',
{
environment: 'sandbox',
container: 'myPaymentContainer'
});
};
</script>
<script type="text/javascript" src="//www.paypalobjects.com/api/checkout.js" async></script>
上下文检查概述描述了步骤:
要使用PayPal结账,买家会点击PayPal Check out按钮。
响应按钮单击,会发生以下操作:
In-Context JavaScript打开一个弹出窗口,等待你的 表单提交以创建快速结账付款。一个成功的创造 付款电话会返回您在后续步骤中使用的HATEOAS链接。 使用响应中的重定向网址将买方重定向到 PayPal网址。 如果您已正确集成了In-Context JavaScript,弹出窗口管理重定向。
对于我的OnLoad事件,我正在测试:
var config = ConfigManager.Instance.GetProperties();
if (Page.IsPostBack)
{
var accessToken = new OAuthTokenCredential(config).GetAccessToken();
var apiContext = new APIContext(accessToken);
var transaction = new Transaction()
{
amount = new Amount()
{
currency = "USD",
total = "20"
},
description = "My product description",
item_list = new ItemList()
{
items = new List<Item>()
{
new Item()
{
name="The Product",
currency="USD",
price="20",
quantity = "1"
}
}
},
invoice_number = "123"
};
var payer = new Payer()
{
payment_method = "paypal"
};
var payment = new Payment()
{
intent = "sale",
transactions = new List<Transaction>() { transaction },
payer = payer,
redirect_urls = new RedirectUrls
{
cancel_url = "/Home.aspx",
return_url = "/Checkout.aspx",
}
};
var createdPayment = payment.Create(apiContext);
var paypalLinks = createdPayment.links;
if (paypalLinks != null)
{
var redirectLink = paypalLinks.FirstOrDefault(lnk => lnk.method == "REDIRECT");
if (redirectLink != null)
{
Response.Redirect(redirectLink.href);
}
}
}
如果我将action属性添加到<form>
,弹出窗口将填充该操作。我期待弹出窗口填充Paypal HTML,以便用户可以登录。如果我删除表单上的操作,则在弹出窗口中呈现托管该按钮的同一页面。
更新
我确实让这个工作正常。我没有使用表单标签,而是使用div:
<div id="myPaymentContainer" />
<script type="text/javascript">
window.paypalCheckoutReady = function () {
paypal.checkout.setup('XUM4RANUNKG4U',
{
environment: 'sandbox',
container: 'myPaymentContainer'
});
};
</script>
<script type="text/javascript" src="//www.paypalobjects.com/api/checkout.js" async></script>
我稍微重构了逻辑,但它对Response.Redirect( link )的调用基本相同。希望这会有所帮助。
答案 0 :(得分:0)
我发布这个并设置为我的答案,以防人们看到问题有实际答案。
我的问题已通过修复程序更新。