Ost*_*tap 8 transactions paypal ruby-on-rails report
我需要获取交易数据(日期,有价值)和用户adata.我可以在这个问题中使用这个宝石进行一些修改吗?
另外,从文档:
例如,如果您计划使用getBasicPersonalData和getAdvancedPersonalData查询PayPal,则可能会生成以下商家模型:
rails generate paypal_permissions merchant email:string first_name:string last_name:string full_name:string country:string payer_id:string street1:string street2:string city:string state:string postal_code_string phone:string birth_date:string
bundle exec
rake db:migrate
Run Code Online (Sandbox Code Playgroud)
我应该使用付款数据传输(PDT)还是TRANSACTION_DETAILS?这是我将写数据的地方,但我如何从PayPal获取数据?
谁能给我代码的例子?
Paypal Adaptive似乎是解决这个问题的方法,这里是我找到的一些文档,希望它有所帮助。
与往常一样,PayPal 文档相当混乱且杂乱无章,因此我认为我\xe2\x80\x99d 记录了我如何设法让 PayPal Adaptive 在市场风格的网站上工作。
\n\n请使用这篇文章作为有关 paypal API 如何与您的 Rails 应用程序连接的指南。正如 Jamesw 在下面的评论中指出的那样,我还没有创建一种适当的方法来记录每笔交易的所有详细信息;毫无疑问,这是法律所要求的。所以也许读完这篇文章后看看他的评论。希望你能找到一种方法来做到这一点
\n\n经过一番搜索后,我发现现在最好使用的 gem 是paypal_adaptive。ActiveMerchant目前不支持PayPal Adaptive(有一个gem将其添加到\xe2\x80\x99s中,但似乎没有维护。)
\n\n# Gemfile\ngem \'paypal_adaptive\'\nRun Code Online (Sandbox Code Playgroud)\n\nPayPal Adaptive 相对简单,但凌乱的文档让它显得令人望而生畏。简而言之,我就是这样做的:
转到此处创建一个沙盒帐户(您将需要它)。登录后,转到\xe2\x80\x9c创建预配置帐户\xe2\x80\x9d。创建两个帐户 \xe2\x80\x93 一个买家和一个卖家。如果您使用链式或并行付款(分摊给多人的付款),则创建更多帐户。
单击左侧面板中的 Api 凭据。
现在使用这些凭据填写您的 paypal_adaptive.yml (也使用我在下面提供的 application_id \xe2\x80\x93 这是 www.x.com 提供的测试 application_id
development:\n environment: "sandbox"\n username: "platts_xxxxxxxx_biz_api1.gmail.com"\n password: "xxxxxxxxxxxx"\n signature: "xxxxxxx"\n application_id: "APP-80W284485P519543T"\n\ntest:\n environment: "sandbox"\n username: "platts_xxxxxxxx_biz_api1.gmail.com"\n password: "xxxxxxxx"\n signature: "xxxxxxxx"\n application_id: "APP-80W284485P519543T"\n\nproduction:\n environment: "production"\n username: "my_production_username"\n password: "my_production_password"\n signature: "my_production_signature"\n application_id: "my_production_app_id"\nRun Code Online (Sandbox Code Playgroud)\n\n在这里,您实际上只需要支付的金额以及您希望这笔钱发送到的电子邮件列表。因此,编写您的逻辑来解决这个问题,然后致电 PayPal 来设置购买。
\n\npay_request = PaypalAdaptive::Request.new\n data = {\n "returnUrl" => return_url,\n "requestEnvelope" => {"errorLanguage" => "en_US"},\n "currencyCode" => "USD",\n "receiverList" =>\n { "receiver" => [\n {"email" => "platts_xxxxxxxx_biz@gmail.com", "amount"=> amount}\n ]},\n "cancelUrl" => cancel_url,\n "actionType" => "PAY",\n "ipnNotificationUrl" => ipn_url\n }\n\n #To do chained payments, just add a primary boolean flag:{\xe2\x80\x9creceiver\xe2\x80\x9d=> [{"email"=>"PRIMARY", "amount"=>"100.00", "primary" => true}, {"email"=>"OTHER", "amount"=>"75.00", "primary" => false}]}\n\n pay_response = pay_request.pay(data)\n\n if pay_response.success?\n # Send user to paypal\n redirect_to pay_response.approve_paypal_payment_url\n else\n puts pay_response.errors.first[\'message\']\n redirect_to "/", notice: "Something went wrong. Please contact support."\n end\nRun Code Online (Sandbox Code Playgroud)\n\n我将 IPN 呼叫从 PayPal 路由至此方法:
\n\ndef ipn_notification\n ipn = PaypalAdaptive::IpnNotification.new\n ipn.send_back(request.raw_post)\n\n if ipn.verified?\n logger.info "IT WORKED"\n else\n logger.info "IT DIDNT WORK"\n end\n\n render nothing: true\n end\nRun Code Online (Sandbox Code Playgroud)\n\n不幸的是,如果您在本地主机上,PayPal 无法\xe2\x80\x99 向您发送 IPN,因此测试整个过程会出现问题。Ryan Bates\xe2\x80\x99 解决方案是使用curl 来模拟IPN 请求。然而,正如您在上面的代码中看到的,我们向 PayPal 发出另一个请求,确认 IPN 是真实的。因此,即使curl 发送假IPN,我们也会遇到问题。我\xe2\x80\x99m 现在要去寻找解决方案,但如果您有任何想法,请发表评论。
\n| 归档时间: |
|
| 查看次数: |
1260 次 |
| 最近记录: |