【发布时间】:2016-07-19 22:48:16
【问题描述】:
我想扩展 Spring 应用程序的功能以包含 HTTP 端点以接收 Paypal 即时付款通知。
Paypal 在 HTTP 正文中发送这些信息,如下所示:
mc_gross = 19.95&presence_eligitibility =符合条件&address_status =确认和payer_id = lplwnmtbwmfay&tax = 0.00&address_street = 1 + main + st&payment_date = 20%3a12%3a59 + 18%+ 13%2c + 2009 + pst&payment_status = pstent&chinept_status = terminer&chinset = windows-1252&address_zip = 95131&first_name = test&mc_fee = 0.88 &address_country_code = US&ADDRESS_NAME =测试+用户和notify_version = 2.6&定制= payer_status =验证的&ADDRESS_COUNTRY =美+国&ADDRESS_CITY =圣+圣何塞和数量= 1&verify_sign = AtkOfCXbDm2hu0ZELryHFjY-Vb7PAUvS6nMXgysbElEn9v-1XcmSoGtf&PAYER_EMAIL = gpmac_1231902590_per%40paypal.com&txn_id = 61E67681CH3238416&payment_type =即时与姓氏=用户&ADDRESS_STATE = CA&RECEIVER_EMAIL = gpmac_1231902686_biz%40paypal.com&payment_fee =0.88&receiver_id=S8XGHLYDW9T3S&txn_type=express_checkout&item_name=&mc_currency=USD&item_number=&residence_country=US&test_ipn=1&handling_amount=0.00&transaction_subject=&payment_gross=19.95&shipping=0.00
https://developer.paypal.com/docs/classic/ipn/integration-guide/IPNIntro/
我是否需要定义一个具体的类来定义请求主体,例如
请求类
public class PaypalIPNRequest {
private static final long serialVersionUID = 1L;
private String mc_gross;
private String protection_eligibility;
private String address_street;
...
public PaypalIPNRequest() {
}
//getters setters
}
控制器
@Override
@Auditable
@RequestMapping(value = "/ipnRequest.do", method = RequestMethod.POST)
@ResponseStatus(value = HttpStatus.OK)
public void ipnRequest(@RequestBody final PaypalIPNRequest request) {
}
如此 SO 答案所述:@RequestBody and @ResponseBody annotations in Spring
如果 Paypal 将来更改他们的 IPN 请求会发生什么情况,这会中断吗?
有没有更好的方法来传递请求正文而不需要特定的类?
我可以使用 HttpServletRequest 吗?
【问题讨论】:
标签: java spring spring-mvc paypal