使用服务器到服务器直连模式,可以对支付流程进行灵活控制:可通过 MoneyCollect 提供的 Java SDK 进行连接。
Download our SDK
这种方式会增大商户的PCI认证开销,需要通过PCI Level1认证的商家才能申请。
1. 设置 MoneyCollect账户
首先,请确保您已在MoneyCollect 后台上设置了账户信息。
2. 创建PaymentMethod
PaymentMethod
是支付接口的必要前提。
PaymentMethod
可以指定不同的支付方式,如信用卡、支付宝、微信支付等。不同的支付方式需要不同的参数。例如:信用卡需要账单信息和卡片信息,而支付宝不需要。
下面的代码显示了如何通过 SDK 创建 PaymentMethod
:
// 使用您的私钥private key
MoneyCollect.apiKey = "live_pr_KQjlYQdmWygTO8m*********";
// Build card
PaymentMethodCreateParams.Card card = PaymentMethodCreateParams.Card.builder()
.setCardNo("4242424242424242")
.setExpYear("2024")
.setExpMonth("12")
.setSecurityCode("123")
.build();
// Build billing details for card
PaymentMethodCreateParams.BillingDetails billingDetails = PaymentMethodCreateParams.BillingDetails.builder()
.setAddress(PaymentMethodCreateParams.Address.builder()
.setCity("Hong Kong")
.setCountry("CN")
.setLine1("193 Prince Edward Road")
.setLine2("")
.setPostalCode("12222")
.setState("Hong Kong").build() )
.setEmail("test@mc.com")
.setFirstName("Su")
.setLastName("Diana")
.setPhone("12222211")
.build();
// Build payment method
PaymentMethodCreateParams params =
PaymentMethodCreateParams.builder()
.setType(PaymentMethodCreateParams.PaymentMethodType.CARD)
.setCard(card)
.setBillingDetails(billingDetails)
.build();
// Create payment method
PaymentMethod paymentMethod = PaymentMethod.create(params);
3. 创建付款
PaymentCreateParams params =
PaymentCreateParams.builder()
.setAmount(18*100L)
.setCurrency("USD")
.setOrderNo("MC"+System.currentTimeMillis())
.setNotifyUrl("http://localhost:4242/notify")
.setIp("103.48.140.12") // customer ip
.build();
Payment payment = Payment.create(params); //
通过将“confirm”参数设置为 true 并指定“ paymentMethod" 参数。
4. 确认付款
PaymentConfirmParams paymentConfirmParams = PaymentConfirmParams.builder()
.setPaymentMethod({{paymentMethodId}})
.build();
Payment payment = Payment.retrieve({{paymentId}});
payment.confirm(paymentConfirmParams);
如果您想创建交易并自动收费,可以参考以下代码:
PaymentCreateParams params =
PaymentCreateParams.builder()
.setAmount(18*100L)
.setCurrency("USD")
.setOrderNo("MC"+System.currentTimeMillis())
.setNotifyUrl("http://localhost:4242/notify")
.setIp("103.48.140.12") // customer ip
.setConfirm(true)
.setPaymentMethod({{paymentMethodId}})
.build();
Payment payment = Payment.create(params);
5. 需要验证操作
对于某些交易,客户可能需要执行验证操作,例如 3D 安全认证或支付宝扫码。付款将在确认收费时返回 nextAction
。这个时候,您需要根据不同的情况进行额外的操作,根据的不同 nextAction``type
,重定向或显示二维码。
"nextAction": {
"type": "redirect",
"redirectToUrl": "
https://test-payment.moneycollect.com/authentication?type=2¶m=eyJwYXltZW50SWQiOiJwdF8xNDk4MTE3MzQxMjc0NDIzMjk4IiwidGhyZWVEc1VybCI6Imh0dHBzOi8XXXXXXXX
}
6. 查询交易
付款完成后,我们会将结果返回并通知给您设置的 returnUrl
。您也可以通过 API 或 SDK 查询本次支付结果。
Payment payment = Payment.retrieve("pt_1497139547656585217");
7.其他测试资源
您可以使用几个测试卡来确保您的集成已准备好投入生产。
这些卡可以与任何 CVC
, postal code
, 以及 future expiration date
一起使用。