使用Paypal自适应付款自动发送资金

时间:2013-04-24 11:26:04

标签: paypal paypal-adaptive-payments

这是用户场景:

约翰在一个网站上拥有5个虚拟积分,他可以通过点击网站上的按钮将他的虚拟积分转换成真钱。然后该网站将通过PayPal给他真实的钱,John John是否有paypal帐户。

我想知道是否有可能将此方案付诸实施?

当然,出于安全考虑,我会在服务器端检查所有需要的数据,以便安全地进行操作。

如果没有网站管理员的任何操作,它可以自动化吗?

感谢您的回答!

修改

我发现了这篇文章:https://www.x.com/devzone/articles/using-adaptive-payments-disburse-cash-prizes-real-time-easter-eggs

我会尝试根据我的情况进行调整。我完成整合后,今天就会更新我的帖子。

编辑2:

一切似乎都没问题,但我尝试从www.x.com获取应用ID 他们质疑我如何使用API​​:

  

您好,感谢您的提交,

     

在我们继续进行审核之前,您能否澄清一下您需要的API?

     
      
  • 您能否澄清一下您使用的“隐含付款”,用于向您的PayPal帐户付款?如果不需要,请从您提交的“应用程序使用的服务” - “自适应付款” - “基本付款”部分取消选择

  •   
  • 您还选择了Preapprovals,这是一种需要深入审核的高级API。这将用于与您的客户创建帐单协议(如“订阅”商业模式)。如果需要,请填写“预先批准条款”字段,告诉我们如何在您的网站上测试预先批准的付款流程。如果不是必需的,请从您提交的“应用程序使用的服务” - “自适应付款”部分取消选择。

  •   
     

注意:您需要点击x.com的“我的应用”部分中的应用名称,才能展开和修改提交表单的字段。

我该怎么办?

编辑3:

好的,我有Paypal的祝福,现在我可以使用带有实时凭据的API! 我已取消选中Preapprovals,一切顺利。

最后一个问题,但并非最不重要:

如何配置自适应付款以更改待处理流程中的付款,并选择供应商验证付款?

以下是用例以更好地了解情况:

John希望将5个虚拟积分转换为5个$,他点击取款按钮,webapplication会自动向他发送真钱在他的paypal帐户上。 博士想要将100个虚拟积分兑换成100美元,这个金额需要得到管理员的批准,这个管理员进入他的paypal帐户并检查一切是否正常他确认付款,然后House博士将获得他的钱!

我找到了这个选项:

$PayRequestFields = array(
                    'ActionType' => 'PAY', // Required. Whether the request pays the receiver or whether the request is set up to create a payment request, but not fulfill the payment until the ExecutePayment is called. Values are: PAY, CREATE, PAY_PRIMARY

如果将值PAY更改为值CREATE,则它不会执行任何操作。

忠实!

2 个答案:

答案 0 :(得分:2)

您可以将其设置为自动化。如果您特别想要使用自适应付款,您可能希望使用自适应Payments Pay API将钱汇给John。但是,约翰需要一个PayPal来获取资金并提取资金。

答案 1 :(得分:0)

我使用此代码在沙盒模式下工作,还没有尝试过:

        ServicePointManager.Expect100Continue = true;
        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

        var request = (HttpWebRequest)WebRequest.Create("https://svcs.sandbox.paypal.com/AdaptivePayments/Pay");
        request.ContentType = "application/json";
        request.Method = "POST";

        request.Headers.Add("X-PAYPAL-SECURITY-USERID", apiUsername);
        request.Headers.Add("X-PAYPAL-SECURITY-PASSWORD", apiPassword);
        request.Headers.Add("X-PAYPAL-SECURITY-SIGNATURE", apiSig);
        request.Headers.Add("X-PAYPAL-APPLICATION-ID", "APP-80W284485P519543T"); // sandbox app id
        request.Headers.Add("X-PAYPAL-REQUEST-DATA-FORMAT", "JSON");
        request.Headers.Add("X-PAYPAL-RESPONSE-DATA-FORMAT", "JSON");

        JObject j = new JObject();
        using (var streamWriter = new StreamWriter(request.GetRequestStream()))
        {
            string json = "{  \"actionType\": \"PAY\",  \"currencyCode\": \"GBP\", \"useCredentials\": \"FALSE\",  \"senderEmail\": \"admin@example.com\",\"ipnNotificationUrl\": \"http://example.com/IPN.aspx\",    \"receiverList\": {\"receiver\": [{\"amount\": \"1.00\", \"email\": \"receiver@gmail.com\"     }]  },  \"returnUrl\": \"http://example.com/thanks.aspx\",    \"cancelUrl\": \"http://example.com/cancel.aspx\",    \"requestEnvelope\": {    \"errorLanguage\": \"en_US\",      \"detailLevel\": \"ReturnAll\"   }}";



            streamWriter.Write(json);
            streamWriter.Flush();
            streamWriter.Close();
        }

        var httpResponse = (HttpWebResponse)request.GetResponse();
        string sResult = "";
        using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
        {
            sResult = streamReader.ReadToEnd();

        }

需要注意的一些事项:

  • 确保请求是有效的JSON,并且您没有意外搞砸了语法
  • 确保在请求参数
  • 上使用正确的大小写
  • 如果发布到沙箱网址
  • ,请确保您使用的是沙盒凭据
  • 添加您的代码以检查您指定的IPN网址中的交易(金额,收件人等)

这样便可以从您的帐户自动付款到收件人,无需您登录即可对其进行授权。

相关问题