yo hicimos una aplicación sencilla para demostrar como fuera de las instalaciones para los pagos WorldPay y rieles/Activemerchant pueden trabajar juntos.
demostración rieles App - https://github.com/daemonsy/Worldpay-Rails--Off-Site--Integration-Example
Para World Pay alojado pago, lo esencial es el post
a su URL pago. Agregue test-
a secure.worldpay.com para el modo de prueba. WP requiere cantidad, moneda, ID de instalación y cartId para presentar la página al cliente.
<form action="https://test-secure.worldpay.com/wcc/purchase" method=POST>
<!-- This next line contains the testMode parameter - it specifies that the submission is a test submission -->
<input type="hidden" name="testMode" value="100">
<!-- This next line contains a mandatory parameter. Put your Installation ID inside the quotes after value= -->
<input type="hidden" name="instId" value="Your installation ID ">
<!-- Another mandatory parameter. Put your own reference identifier for the item purchased inside the quotes after value= -->
<input type="hidden" name="cartId" value="Your ID for the product ">
<!-- Another mandatory parameter. Put the total cost of the item inside the quotes after value= -->
<input type="hidden" name="amount" value="The cost of the product ">
<!-- Another mandatory parameter. Put the code for the purchase currency inside the quotes after value= -->
<input type="hidden" name="currency" value="currency code e.g. GBP, USD ">
<!-- This creates the button. When it is selected in the browser, the form submits the purchase details to us. -->
<input type=submit value=" Buy This ">
Fuente: http://www.worldpay.com/support/kb/bg/htmlredirect/rhtml.html
Esto crea un simple button
que lleva su pedido a Mundial de pago en las que el cliente va a entrar en detalles de la tarjeta de crédito y completar la compra. He incrustado el código anterior en la página show
de un controlador de pedidos. e, g, <input type="hidden" name="amount" value="<%[email protected]"%>>
. Entonces puede hacer clic en buy this
después de enviar la orden. Hay muchas maneras de lograr un POST
a World Pay.
Después de lo cual, World Pay puede mostrar una página de respuesta del comprador, enviarle payment response
etc. Para la respuesta de pago al trabajo, puede configurar la respuesta de pago callback URL
a uno de sus controladores. p.ej. =>http://mysite.com/payment-backend
Esta será una solicitud POST
por lo que debe configurar su controlador para manejarlo. Aquí es donde entra en acción. Activemerchant
Por ejemplo,
class BackendsController < ApplicationController
include ActiveMerchant::Billing::Integrations
protect_from_forgery :except=>[:worldpay_return]
#in routes => match '/payment-backend'=>'backends#worldpay_return'
def worldpay_return
notification = WorldPay::Notification.new(request.raw_post)
order = Order.find(notification.item_id)
if notification.acknowledge
begin
if notification.complete?
order.status = 'success'
end
rescue
order.status = "failed"
raise
ensure
order.save
end
end
render :text =>"Order status for #{order.id} is #{order.status}"
end
end
lo tanto, el objeto de notificación leerán los parametros en request.raw_post
y configurarlas el objeto donde se puede consultar. Encontré los documentos mercantiles activos útiles para decir qué parametros de retorno mapean.
Tenga en cuenta que este controlador es un ejemplo muy crudo. World Pay proporciona algunos métodos para validar la respuesta y esto es compatible con Active Merchant.
ActiveMerchant Docs en WorldPay :: Notificaciones http://rdoc.info/github/Shopify/active_merchant/master/ActiveMerchant/Billing/Integrations/WorldPay Docs World Pay respuesta de pago http://www.worldpay.com/support/kb/bg/paymentresponse/payment_response.html
has hecho para solucionar esto? También estoy teniendo problemas para cambiar :( –
No. Todavía no he encontrado nada – Mike
Dado que está utilizando el pago fuera del sitio, ¿podría simplificar el proceso haciendo el 'POST' a una URL de pago mundial? Al igual que la API del botón de Paypal. –