在 Titanium Appcelerator(alloy 框架)中使用侧载程序 api 与 PayPal 集成

Integrating with PayPal Here using the sideloader api in Titanium Appcelerator (alloy framework)

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

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

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

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 ... }

"open" 这个 paypalhere:// 模式究竟是怎么做的?理想情况下,我希望在我的视图中有一个名为“通过 PayPal Here 付款”的按钮,单击后执行上述操作。

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

在此先感谢您的帮助和提示。

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

的函数
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>

已编辑

要处理 URL 响应,您需要按以下方式处理打开事件:

如果您的应用程序也是为 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 to your Titanium App. Maybe it will be more better documented and easy to maintain. You can install using CocoaPods, and access directly via Hyperloop. If you have interest this is a good start point: How to use Hyperloop in your Titanium App