Paypal / Flash按钮集成as3问题

时间:2012-09-18 09:09:54

标签: xml actionscript-3 paypal

我一直在网上寻找将paypal融入闪存的方法,因为我发现了一些看起来很奇怪的问题,并希望其他人可以理解为什么让这些工作变得如此痛苦

显示Paypal代码的动态文本文件似乎不起作用,因为xml验证称为“错误的xml结构”。尽管整理了它并使其满足了Paypal和xml的要求,但似乎无法显示按钮或xml超出错误:#1085。

如果没有第三方购物车,并且尝试将其按钮生成器中的代码融合到xml数组中,尝试将Flash添加到ToCart或引用您的购物车详细信息而不必每次都使用PayPal页面,以实现与来自你自己画廊的按钮是我似乎无法解决的另一个问题。

我想知道是否有一些方法可以从Flash中激活ExternalInterface以承诺对Paypal按钮代码进行操作,这两者都可以使as3和Paypal轻松同步。

我玩了一个Paypal迷你游戏这似乎是一个很好的方法来桥接这两个,但因为我无法将Paypal按钮代码放入Flash中,因为它的行为方式与其代码所需的相同。

任何帮助我指向正确方向的帮助都会很棒,因为我相信很多人都在努力让这两个人以这种方式工作。

  • (另外,考虑到Paypal和Flash已经存在了多长时间,很难理解为什么无法通过xml访问他们的按钮代码!)

修改后的例子

如果您通常尝试加载下面的代码(从Paypal代码生成器)并将其包含在标准的info.xml文件中,以便将其与典型的html设置一起使用,则会抛出以下错误代码:

错误:#1085这是我所理解的xml标记不佳的症状,因为结束标记尚未关闭,如果使用以下结尾“/&gt;”进行更正,则无法在屏幕上显示。< / p>

我尝试更正标签并验证它以检查错误并仍然具有相同的结果,并使用多种方式将数据导入为html,txt等等但仍然没有乐趣。

Paypal代码

<![CDATA[<form target="paypal" action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_cart">
<input type="hidden" name="business" value="WHATEVER YOUR BUSINESS IS">
<input type="hidden" name="lc" value="GR">
<input type="hidden" name="item_name" value="Card - Birthday">
<input type="hidden" name="item_number" value="BC 01-00-01">
<input type="hidden" name="amount" value="3.25">
<input type="hidden" name="currency_code" value="EUR">
<input type="hidden" name="button_subtype" value="products">
<input type="hidden" name="no_note" value="0">
<input type="hidden" name="cn" value="Add special instructions to the seller:">
<input type="hidden" name="no_shipping" value="2">
<input type="hidden" name="tax_rate" value="23.000">
<input type="hidden" name="shipping" value="1.75">
<input type="hidden" name="add" value="1">
<input type="hidden" name="bn" value="PP-ShopCartBF:btn_cart_LG.gif:NonHosted">
<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_cart_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">
</form>]]>

我也尝试过没有标签和原始代码,但它们都会抛出错误,或者无法显示数据。

我已成功设法分解AS3变量以获得相同的效果,以便在数组中的按钮上传递给paypal,但这导致打开浏览器,每个实例都会将您带到Paypal,其结果是需要继续按照按钮代码购物,最终不会有10个窗口每次都添加一个项目。

使用Paypal的Minicart可以获得相同的结果,并且可以在标准html中使用上面的代码,但在AS3中失败,所以看起来并且MiniCart或类似的推车都无法识别。

包含按钮代码并在xml中显示自定义按钮或Paypal按钮的选项看起来很简单我无法相信它在任何地方都没有,如果是这样,就无法在任何地方找到提及或示例。

我的想法是尽可能提供一个ExternalInterface来调用来自外部源代码的代码,Javascript或(如果可能的话)其他代码来访问/模拟相同的效果,或者能够直接从Flash传递相同的信息。

我知道xml还依赖于其他因素,例如'utf-8'标记和AS3中明确严格的错误管理,但是管理导入本质上简单的按钮代码似乎难以置信的困难。

任何反馈都是祝福,

感谢,

西蒙

修改后的代码 - 半工作

function onBtnClick(e:Event):void  {
//Setup the data.
var req:URLRequest = new URLRequest("https://www.paypal.com/cgi-bin/webscr");
var reqVars:URLVariables = new URLVariables();
reqVars.cmd = "_cart";
reqVars.business = "7BRY3X5XVSZ9Y";
reqVars.lc = "GR";
reqVars.item_name = "Card - Birthday";
reqVars.item_number = "BC 01-00-01";
reqVars.amount = "3.25";
reqVars.currency_code = "BC 01-00-01";
reqVars.button_subtype = "products";
reqVars.no_note = "0";
reqVars.cn = "Add special instructions to the seller:";
reqVars.no_shipping = "2";
reqVars.tax_rate = "23.000";
reqVars.shipping = "1.75";
reqVars.add = "1";
reqVars.bn = "PP-ShopCartBF:btn_cart_LG.gif:NonHosted";

//and so on

req.data = reqVars;
sendToURL(req);
trace(reqVars);
}

现在,当我查看购物车时,它注册在Paypal上,但Paypal Minicart错过了,所以也许这是有问题的发送方法,这两种方法之间是有效的,我只需要用其他项来测试它确保他们都注册。

如此接近!

1 个答案:

答案 0 :(得分:0)

好的,所以我认为我已经正确地理解了你的问题。而且我会说,而不是仅仅向POST导入大量数据,一些数据并不是必需的。相反,我会做类似下面的事情。但请记住,我没有使用贝宝的经验,所以我的解决方案可能不合适。

所以这是我的代码:

private function init(e:Event = null):void 
{
removeEventListener(Event.ADDED_TO_STAGE, init);
btn = new Sprite();
btn.graphics.beginFill(0x000000);
btn.graphics.drawRect(50, 50, 100, 50);
btn.graphics.endFill();
btn.addEventListener(MouseEvent.CLICK, onBtnClick);

addChild(btn);
}

private function onBtnClick(e:Event):void 
{
//Setup the data.
var req:URLRequest = new URLRequest("http://www.acme.com");
var reqVars:URLVariables = new URLVariables();
reqVars.cmd = "_cart";
reqVars.business = "WHATEVER YOUR BUSINESS IS";
reqVars.lc = "GR";
//and so on
req.data = reqVars;
req.method = URLRequestMethod.POST;

var loader:URLLoader = new URLLoader();
loader.load(req); //Send the post data.
trace("fooo");
}

此代码会将消息发布到相关的url。我希望这有帮助。