【发布时间】:2016-09-09 21:19:27
【问题描述】:
我已按照 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>
In-Context Checkout Overview 描述了该步骤:
要使用 PayPal 结账,买家点击 PayPal Check out 按钮。
响应按钮单击,会发生以下操作:
In-Context JavaScript 会打开一个弹出窗口并等待您的 表单提交以创建 Express Checkout 付款。成功的创作 付款调用会返回您在后续步骤中使用的 HATEOAS 链接。 使用响应中的重定向 URL 将买家重定向到 贝宝网址。 如果您已正确集成 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);
}
}
}
如果我将动作属性添加到我的<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) 的调用基本相同。希望这会有所帮助。
【问题讨论】:
标签: .net paypal paypal-sandbox