4

这是用户场景:

John 在网站上有 5 个虚拟积分,他可以通过点击网站上的按钮将他的虚拟积分转换为真钱。然后网站将通过 paypal 给他真钱,无论 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!我取消了预先批准,一切都很顺利。

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

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

这是更好地了解情况的用例:

John 想将 5 个虚拟积分兑换成 5 美元,他点击提款按钮,网络应用程序会自动将他的贝宝账户中的真钱发送给他。House 博士想要将 100 个虚拟积分兑换成 100 美元,这个金额需要得到批准管理员,这个管理员进入他的贝宝账户,检查一切是否正常,他确认付款,然后豪斯博士会得到他的钱!

我找到了这个选项:

$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,它不会做任何事情。

忠实!

4

2 回答 2

2

您可以将其设置为自动化。如果您特别想使用 Adaptive Payments,则需要使用 Adaptive Payments Pay API 将钱汇给 John。但是,John 需要一个 PayPal 才能获取资金并提取资金。

于 2013-04-24T17:11:39.680 回答
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,并且您没有意外弄乱语法
  • 确保在请求参数上使用正确的大小写
  • 如果发布到沙盒 url,请确保您使用的是沙盒凭据
  • 添加您的代码以检查您指定的 IPN 网址中的交易(金额、收件人等)

这会从您的帐户自动付款给不需要您登录授权的收件人。

于 2017-12-11T16:49:42.003 回答