标签: paymill

Paymill:如何在测试时模拟付款失败?

背景

如何使测试付款失败?(例如,卡被拒绝,或者卡在未来的订阅付款中过期)

Stripe会让我使用特殊的卡号进行此操作,但Paymill 似乎没有任何此类文档(英文).


payment_provider.rb

class PaymentProvider
  Paymill.api_key = ENV['PAYMILL_PRIVATE_KEY']

  def self.start_new_subscription(email, description, token)
    offer = Paymill::Offer.find(ENV['PAYMILL_OFFER_ID'])
    client = Paymill::Client.create(email: email, description: description)
    payment = Paymill::Payment.create(token: token, client: client.id)
    subscription = Paymill::Subscription.create(client: client.id, offer: offer.id, payment: payment.id)
    subscription.id
  end
end
Run Code Online (Sandbox Code Playgroud)


payment_provider_spec.rb

require 'spec_helper'

describe PaymentProvider do

  describe "#start_new_subscription" do
    it "returns a subscription id, starting 'sub_' when successful" do
      email = "mike@mike.com"
      description = "me"
      token = get_payment_token …
Run Code Online (Sandbox Code Playgroud)

ruby payment payment-gateway stripe-payments paymill

8
推荐指数
1
解决办法
1542
查看次数

如何使用Ruby通过Paymill付款

我需要向Paymill付款,我希望能够使用Ruby语言实现这一目标.

更新:

我在github上公开发布了paymill_on_rails.这是一个基于Rails 4.0.0和paymill-ruby的Paymill订阅系统,运行在ruby-2.0.0-p247上

另见家庭项目

Heroku上还部署了一个示例应用程序.请随意分叉并最终做出贡献.

ruby payment-gateway activemerchant e-commerce paymill

5
推荐指数
2
解决办法
1248
查看次数

本地主机上的 Webhook

我正在使用 Paymill 创建支付网关(与 Stripe 相当)。我希望我的网站能够自动对基于订阅的账单做出反应。这就是我考虑 Paymill webhook 的原因。

我正处于测试阶段,因此在本地主机(XAMPP)上。因此,接收 Webhook 脚本将具有以下 URL:

localhost/paymill-example-php-subscriptions-master/src/Paymill/LlamaKisses/Controllers/WebhooksController.php. 
Run Code Online (Sandbox Code Playgroud)

但是是否可以将 localhost 地址设置为 webhook url(以及如何设置)?

(顺便说一句,WebhooksController.php是不是缺少这样的响应代码行:

http_response_code(200);
Run Code Online (Sandbox Code Playgroud)

让发送 webhook 知道它已成功并且无需重试?)

提前谢谢了!

php localhost webhooks paymill

3
推荐指数
1
解决办法
1万
查看次数

Paymill:至少有一家银行的3D-Secure漏洞?

我使用3D安全支付Paymill API:

paymill.createToken(params, paymillResponseHandler, tdsInit, tdsCleanup);
Run Code Online (Sandbox Code Playgroud)

文档中的这部分完全不起作用:

var tdsInit = function(iframeUrl, cancelFn) {
  var body   = document.body || document.getElementsByTagName('body')[0];
  var iframe = document.createElement('iframe');

  iframe.id               = 'tdsIframe';
  iframe.src              = iframeUrl;
  iframe.width            = 600;
  iframe.height           = 500;
  iframe.style.zIndex     = 0xffffffff;
  iframe.style.background = '#fff';
  iframe.style.position   = 'absolute';

  body.insertBefore(iframe, body.firstChild);
};
Run Code Online (Sandbox Code Playgroud)

所以我这样做:

function tdsInit(iframeUrl, cancelFn) {
    var body   = document.body;
    var div3D  = document.createElement("div");
    div3D.id = "div3Dsecure";
    body.insertBefore(div3D, body.firstChild);
    var pareq = decodeURIComponent(iframeUrl.params.PaReq.replace(/\+/g,  " "));
    var termurl = decodeURIComponent(iframeUrl.params.TermUrl.replace(/\+/g,  " "));
    div3D.innerHTML='.$dot.'<form id="3Dsecureform" action="'.$dot.'+iframeUrl.url+'.$dot.'" …
Run Code Online (Sandbox Code Playgroud)

3d-secure paymill

2
推荐指数
1
解决办法
910
查看次数