站内支付

1. 设置MoneyCollect sdk

使用我们官方的库来访问您的应用程序中的 MoneyCollect API:

<dependency>
  <groupId>com.moneycollect</groupId>
  <artifactId>moneycollect-java</artifactId>
  <version>{VERSION}</version>
</dependency>

2. 创建支付

MoneyCollect 使用支付对象arrow-up-right来表示您计划从客户那里收款的意图,贯穿整个过程跟踪收费尝试和支付状态的改变。

处理所有后续操作

在您的服务器上添加一个端点,用于创建支付。支付追踪客户的支付生命周期,记录任何支付失败的尝试,并确保客户只被收费一次。在响应中返回支付的客户端密钥以在客户端完成支付。

package com.moneycollect.sample;

import com.alibaba.fastjson.JSONObject;
import com.moneycollect.Moneycollect;
import com.moneycollect.model.Payment;
import com.moneycollect.param.PaymentCreateParams;
import lombok.Data;
import java.nio.file.Paths;
import static spark.Spark.*;

public class Server {
    private static JSONObject json = new JSONObject();
    @Data
    static class CreatePaymentResponse {
        private String id;
        private String clientSecret;
        public CreatePaymentResponse(String id,String clientSecret) {
            this.id = id;
            this.clientSecret = clientSecret;
        }
    }

    public static void main(String[] args) {
        port(5050);

        staticFiles.externalLocation(Paths.get("public").toAbsolutePath().toString());

        // 这是一个示例测试 API 密钥。
        MoneyCollect.apiKey = "test_pr_K***";

        post("/create-payment", (request, response) -> {
            response.type("application/json");

            PaymentCreateParams params =
                    PaymentCreateParams.builder()
                            .setAmount(14*100L)
                            .setCurrency("USD")
                            .setOrderNo("MC"+System.currentTimeMillis())
                            .build();
            Payment payment =  Payment.create(params);
            CreatePaymentResponse paymentResponse  = new CreatePaymentResponse(payment.getId(),payment.getClientSecret());
            return json.toJSONString(paymentResponse);
        });
    }
}

3. 在客户端构建结账页面

加载 MoneyCollect.js 展示信用卡付款区域,确保支付信息通过sdk收集并直接发送到 MoneyCollect,而不经过您的服务器,以保持 PCI 合规。始终从 static.moneycollect.com 加载 MoneyCollect.js 以保持合规。

triangle-exclamation

定义支付表单

在您的结账表单中添加一个空白的占位符 div。MoneyCollect 会将一个 iframe 插入到这个 div 中,以便安全地收集支付信息。

初始化 MoneyCollect.js

用您的 API 公钥初始化 MoneyCollect.js。您将使用 MoneyCollect.js 在客户端创建支付元素并完成支付。

获取支付

一旦您的结账页面加载,立即向您服务端的api发出请求来创建新的支付。您的服务端返回的 clientSecret 和 id 被用来完成后续支付。

初始化 MoneyCollect 元素

用客户端密钥初始化 MoneyCollect 元素 UI 库。Elements 管理收集付款详细信息所需的 UI 组件。

自定义您的支付页面语言

您可以通过设置lang参数自定义页面语言。

目前支持:

例如:

如果当前浏览器语言是支持的语言之一,将显示相应的语言;否则,默认显示英语

4. 在客户端完成支付

处理提交事件

当表单的提交事件发生时,通过 MoneyCollect API 确认支付。

完成支付

调用 confirmPayment(),传递 PaymentElement 和一个 return_url 来指示 MoneyCollect 在用户完成支付后应该重定向到的位置。对于需要身份验证的支付,MoneyCollect 会显示一个用于 3D Secure 认证的模态框或根据支付方法将客户重定向到认证页面。客户完成认证过程后,将被重定向到 return_url。

5. 处理支付后事件

使用 Webhook

当传递了 notifyUrl 参数时,MoneyCollect 将使用该 URL 异步通知交易结果。

有关管理 Webhook、处理退款以及在支付后处理响应的详细指导,请参阅以下文档。

6. 其他测试资源

您可以使用几个测试卡来确保您的集成已准备好投入生产。

这些卡可以与任何 CVC, postal code, 以及 future expiration date一起使用。

号码
品牌
描述

4242 4242 4242 4242

Visa

成功 并立即处理支付。

3566 0020 2036 0505

JCB

成功 并立即处理支付。

6011 1111 1111 1117

Discover

成功 并立即处理支付。

3782 8224 6310 0052

American Express

成功 并立即处理支付。

5555 5555 5555 4444

Mastercard

成功 并立即处理支付。

4000 0000 0000 0077

Visa

始终失败,拒绝代码为declined

4000002500003155

Visa

此卡在所有交易中都需要 3D 认证

Last updated