【问题标题】:Integrating with PayPal Here using the sideloader api in Titanium Appcelerator (alloy framework)在这里使用 Titanium Appcelerator(合金框架)中的 sideloader api 与 PayPal 集成
【发布时间】:2016-01-11 12:33:46
【问题描述】:

我想使用 paypal sideloader api 来集成 PayPal 这里描述如下: https://github.com/paypal/here-sideloader-api-samples/blob/master/docs/README.md

有几件事我不确定它是如何工作的。有人可以帮助我理解它/指向正确的方向吗?

要在此处启动 PayPal,请使用以下网址:

paypalhere://takePayment?
accepted=cash,card,paypal
&returnUrl=my_registered_location://takePayment/{result}?Type={Type}&InvoiceId={InvoiceId}&Tip={Tip}&TxId={TxId}
&as=b64
&step=choosePayment
&payerPhone=4155551212
&invoice={ ... json snipped ... }

究竟如何“打开”这个paypalhere:// 架构?理想情况下,我希望在我的视图上有一个名为 Pay via PayPal Here 的按钮,点击后执行上述操作。

其次,请注意returnUrl 是如何存在的?这是我的应用程序的自定义 url 架构。首先,如何注册自己的url schema(如myapp://),然后实现takePayment方法获取支付响应数据?

提前感谢任何帮助和提示。

【问题讨论】:

    标签: paypal titanium appcelerator titanium-mobile titanium-alloy


    【解决方案1】:

    是的,你是对的,添加一个按钮并调用类似的函数

    function handlePaypal(){
         if (Ti.Platform.canOpenURL("paypalhere://")) {
             Ti.Platform.openURL("paypalhere://"+ yourstring);
         }
         ...
    }
    

    但是您需要将此架构添加到您的 tiapp.xml 文件中

    <ios>
        <plist>
            <dict>
                <.....>
                <key>LSApplicationQueriesSchemes</key>
                <array>
                    <string>paypalhere</string>
                </array>
                <....>
            </dict>
        </plist>
    </ios>
    

    已编辑

    要处理 de URL 响应,您需要按如下方式处理 open 事件:

    如果您的 App 也是为 Android 设计的,您需要像下面这样读取接收意图数据,因为您使用的是 Alloy,所以您需要放入 app/alloy.js

    if (OS_ANDROID) {
        Alloy.Globals.receivedURL = Ti.Android.currentActivity.intent.data;
    }
    

    最后在 index.js

    的开头
    $.index.addEventListener('open', function (e) {
    
        if (OS_ANDROID) {
           handleResponse(Alloy.Globals.receivedURL);
        } else if (OS_IOS) {
            //Here we have two cases: App was closed or App still running;
            handleResponse(Ti.App.getArguments().url);
            Ti.App.addEventListener('resume', function () {
                handleResponse(Ti.App.getArguments().url);
            }); 
        }
    });
    

    毕竟,你可以开发你的 handleResponse 函数:)

    接收参数是其他应用的URL,现在只需要解析即可。

    --

    作为替代方案,自 5.2 版起,Titanium 支持 Hyperloop Beta 模块。您可以使用它将本机 paypal-ios sdk 集成到您的 Titanium 应用程序中。也许它会更好地记录并易于维护。您可以使用 CocoaPods 安装,并通过 Hyperloop 直接访问。如果您有兴趣,这是一个很好的起点:How to use Hyperloop in your Titanium App

    【讨论】:

    • 谢谢。我现在了解如何检查是否可以打开 paypalhere 网址然后打开它。问题:为什么要将 paypalhere 添加到 tiapp.xml 中?这不是我添加 myapp 并注册我自己的 url 架构的地方吗?
    • 另外,一旦我注册了自己的 url 架构,例如 myapp - 你究竟是如何实现它的?我正在使用合金框架,所以有一些代码要写在alloy.js 上吗?或者我是否需要一个控制器文件来处理从另一个应用程序向我的方案/url 发出的请求(在这种情况下,来自 paypalhere 的回调)
    • @Latheesan 我编辑了我的答案以尝试完成您的问题
    • 甜蜜!感谢那。我明天会试试这个,让你知道我是怎么相处的。
    猜你喜欢
    • 2014-11-11
    • 2013-01-05
    • 1970-01-01
    • 2012-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-06
    相关资源
    最近更新 更多