Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 带有服务器和数据库的移动应用程序中的Paypal支付流程_Android_Sql Server_Paypal_Azure Mobile Services_Payment Processing - Fatal编程技术网

Android 带有服务器和数据库的移动应用程序中的Paypal支付流程

Android 带有服务器和数据库的移动应用程序中的Paypal支付流程,android,sql-server,paypal,azure-mobile-services,payment-processing,Android,Sql Server,Paypal,Azure Mobile Services,Payment Processing,我正在开发一款具有Paypal支付功能的Android应用程序。我有一个关于付款流程的问题 考虑以下两个例子: 客户端点击Android应用程序中的订单按钮。应用程序连接到Azure应用程序服务并向其发送一些订单信息。应用程序服务 正在处理该信息,并将信息写入MS SQL数据库表并将其发送回应用程序。 之后,应用程序会有一个订单id、价格和一些其他值,并启动Paypal流程。付款后 Paypal成功向应用程序发送“PaymentConfirmation info”消息。应用程序按顺序连接到我的应

我正在开发一款具有Paypal支付功能的Android应用程序。我有一个关于付款流程的问题

考虑以下两个例子:

  • 客户端点击Android应用程序中的订单按钮。应用程序连接到Azure应用程序服务并向其发送一些订单信息。应用程序服务 正在处理该信息,并将信息写入MS SQL数据库表并将其发送回应用程序。 之后,应用程序会有一个订单id、价格和一些其他值,并启动Paypal流程。付款后 Paypal成功向应用程序发送“PaymentConfirmation info”消息。应用程序按顺序连接到我的应用程序服务 要写入付款,\u status=“true”。现在我可以使用Windows应用程序(由我编写)从数据库中提取所有订单,以便进一步处理。为此,我搜索了所有订单 付款状态=“真实”。之后,我用“order\u finished”=“true”标记它们,所以下次我从数据库提取订单时,我只会得到带有payment\u status=“true”和order\u finished=“false”的新订单

  • 和上面一样,但现在在Paypal向应用程序发送“PaymentConfirmation info”消息后,互联网连接就会恢复 中断(可能是在开车或坐火车时),因此应用程序无法连接到my Azure应用程序服务,因此无法连接到数据库以写入付款\u status=“true”。 这意味着我的客户为他们的订单付款,但我永远无法处理他们的订单…大问题

  • 问题:对于特定订单(根据订单id),向我的数据库中获取付款确认的最佳方式是什么?还有什么其他方法可以将paypal确认信息输入数据库? 其他Paypal支付流程是如何工作的,或者您如何实现成功的Paypal支付流程

    问候,

    亚当

    编辑:(回答阿德里安·霍尔)

    请看我的第二个例子,其中internet连接丢失,!之后用户为他的订单付费。 将一些信息保存到脱机表并不能100%解决我的问题。一旦连接断开 我强迫用户(客户)建立互联网连接,以便我的android应用程序能够在Azure云中(借助我的应用程序(移动)服务)将付款设置为“状态=“true”(借助离线表), 客户可以直接中断这个过程。否则,他可能无法在给定的时间内恢复互联网连接,因此他被迫关闭应用程序,可能再也无法启动我的应用程序,因此我将永远无法获得付款。 这将导致这样的情况,他为他的订单付款,却从未从我这里得到他的货物

    难道没有任何机会将“订单id”与Paypal支付连接起来吗?然后,我可以扩展我的Windows应用程序,向Paypal服务器索要该“订单id”,并询问该订单是否已支付,然后进一步处理该已支付订单

    编辑:

    有一种叫做Paypal IPN的东西。IPN与服务器上的给定URL联系,并发送一些信息以验证付款。也许我应该在我的服务器上实现一个IPN列表器……但是我应该如何告诉Paypal将我生成的“订单id”和IPN请求一起发送到我的服务器,以便我能够识别特定的订单。然后,我可以在“订单id”的帮助下设置付款\ u status=“true”


    你知道怎么做到吗

    使用Azure移动应用程序,您可以使数据库表“脱机”。在本例中,您可以写入本地SQLite数据库,然后随时将更改推送到远程数据库。大多数情况下,您会写入SQLite数据库,然后立即同步。如果失败,您可以在计时器上重试,等待或等待用户按下按钮。此时,更改将同步

    由于用户设备上始终有数据副本,因此即使断开连接,您也可以随时从手机查询状态。但是,在设备再次连接之前,远程数据库不会反映更改


    更多信息请访问Azure文档:

    你好,阿德里安!请看我编辑的问题。这里没有足够的空间回答;)看起来IPN是一个相当直接的协议。假设您有交易ID,您可以更新付款状态。您可以为IPN设置标准ASP.NET控制器,然后向PayPal注册。参考:和一些例子,加上一个完整的入门指南。他们还有一个沙箱。问题出在哪里?我想Paypal payment response对象中的交易ID被发送到我的android客户端……但问题又来了。-->支付成功,并且使用交易ID的响应被发送回我的android客户端……我现在可以将其用于我的支付状态……但是如果互联网连接中断怎么办在我得到回复后直接?我需要一种方法将我的“订单id”传递到付款中,并将其返回到IPN响应中,然后将其发送到我的服务器以标记付款状态…我如何实现这一点?!也许我的想法错了?!我现在不知道!?