全部产品
Search
文档中心

Mobile Platform as a Service:Definisi dan pengembangan layanan

更新时间:Feb 04, 2026

Dokumen ini ditujukan untuk sistem yang telah mengintegrasikan Service Provider Interface (SPI) gerbang, seperti sistem bisnis yang mengekspos layanan API mpaaschannel atau Dubbo. Dokumen ini tidak berlaku untuk sistem bisnis yang menggunakan API HTTP.

41

Impor paket gerbang

Pada file pom.xml utama proyek Anda, impor paket-paket berikut. Jika proyek Anda sudah memiliki dependensi ini, langkah ini dapat dilewati.

Anda harus mengimpor semua dependensi dasar.

Dependensi dasar

<dependency>
    <groupId>com.alipay.gateway</groupId>
    <artifactId>mobilegw-unify-spi-adapter</artifactId>
    <version>1.0.5.20201010</version>
</dependency>
<dependency>
    <groupId>com.alipay.gateway</groupId>
    <artifactId>mobilegw-unify-log</artifactId>
    <version>1.0.5.20201010</version>
</dependency>
<dependency>
    <groupId>com.alipay.hybirdpb</groupId>
    <artifactId>classparser</artifactId>
    <version>1.2.2</version>
</dependency>
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.5</version>
</dependency>
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.72_noneautotype</version>
</dependency>
<dependency>
    <groupId>com.alipay.gateway</groupId>
    <artifactId>mobilegw-unify-common</artifactId>
    <version>1.0.5.20201010</version>
</dependency>

Dependensi MPC

<dependency>
    <groupId>com.alipay.gateway</groupId>
    <artifactId>mobilegw-unify-spi-mpc</artifactId>
    <version>1.0.5.20201010</version>
</dependency>
<dependency>
    <groupId>com.alipay.mpaaschannel</groupId>
    <artifactId>common</artifactId>
    <version>2.4.2019040801</version>
</dependency>
<dependency>
    <groupId>com.alipay.mpaaschannel</groupId>
    <artifactId>tenant-client</artifactId>
    <version>2.4.2019040801</version>
</dependency>

Definisikan dan implementasikan antarmuka layanan

Definisikan antarmuka layanan, misalnya com.alipay.xxxx.MockRpc, sesuai kebutuhan Anda. Kemudian, berikan implementasi untuk antarmuka tersebut, misalnya com.alipay.xxxx.MockRpcImpl.

Catatan

  • Dalam definisi metode, definisikan parameter input sebagai Value Objects (VO). Praktik ini memungkinkan penambahan parameter ke VO di kemudian hari tanpa mengubah signature metode.

  • Untuk informasi lebih lanjut tentang spesifikasi pendefinisian antarmuka layanan, lihat Spesifikasi definisi antarmuka bisnis.

Definisikan operationType

Tambahkan anotasi @OperationType pada metode dalam antarmuka layanan untuk menentukan nama layanan yang dipublikasikan. Anotasi @OperationType memiliki tiga anggota:

  • value: Pengidentifikasi unik untuk layanan RPC. Formatnya adalah organization.product_domain.product.sub_product.operation.

  • name: Nama antarmuka.

  • desc: Deskripsi antarmuka.

Catatan

  • value harus bersifat unik secara global dalam gerbang. Untuk menghindari konflik dengan layanan lain, tentukan nilai ini dengan tingkat detail yang tinggi. Konflik penamaan dapat mencegah layanan Anda terdaftar.

  • Untuk memudahkan pemeliharaan, pastikan Anda mengisi ketiga field dalam anotasi @OperationType.

Contoh:

public interface MockRpc {

    @OperationType("com.alipay.mock")
    Resp mock(Req s);

    @OperationType("com.alipay.mock2")
    String mock2(String s);
}

public static class Resp {
    private String msg;
    private int    code;

    // ignore getter & setter
}

public static class Req {
    private String name;
    private int age;

    // ignore getter & setter
}

Kemudian, gunakan paket SPI yang disediakan oleh gerbang untuk mendaftarkan layanan API yang telah didefinisikan ke registri tertentu.

Daftarkan layanan API MPC

Pendaftaran layanan API MPC memerlukan parameter-parameter berikut:

  • registryUrl: Alamat registri. Alamat untuk registri financial technology bersama adalah mpcpub.mpaas.cn-hangzhou.aliyuncs.com.

  • appName: Nama aplikasi Anda. Nilai ini harus sama dengan nama grup API.

  • workspaceId: ID ruang kerja dari lingkungan tempat aplikasi berada.

  • projectName: Nama proyek dari penyewa tempat aplikasi berada. Nilai ini harus sama dengan Project Name dalam grup API.

  • privateKeyPath: Classpath untuk kunci privat RSA. Kunci ini digunakan untuk memverifikasi koneksi ke mpaaschannel. Kami menyarankan Anda menempatkannya di /META-INF/config/rsa-mpc-pri-key-{env}.der, di mana {env} merepresentasikan lingkungan berbeda, seperti dev, sit, atau prod.

Konfigurasikan kunci publik

Pada Konsol untuk lingkungan yang sesuai, pilih Code Management > Interface Keys > Configure di panel navigasi sebelah kiri. Konfigurasikan kunci publik RSA yang sesuai dengan kunci privat Anda.

Perintah berikut menunjukkan cara menghasilkan pasangan kunci RSA. Konfigurasikan kunci publik di Konsol. Konfigurasikan file kunci privat di ${privateKeyPath} pada aplikasi Backend Anda:

* the way to generate key pair: 
* ### Generate a 2048-bit RSA private key 
* 
* $ openssl genrsa -out private_key.pem 2048 
* 
* ### Convert private Key to PKCS#8 format (so Java can read it) 
* 
* $ openssl pkcs8 -topk8 -inform PEM -outform DER -in private_key.pem -out private_key.der -nocrypt 
* 
* ### Output public key portion in DER format (so Java can read it) 
* 
* $ openssl rsa -in private_key.pem -pubout -outform DER -out public_key.der 
* 
* ### change to base64:
* 
* ## The generated private key, to be configured in the backend application
* $ openssl base64 -in private_key.der -out private_key_base64.der
* 
* ## The generated public key, to be configured in Interface Keys in the console
* $ openssl base64 -in public_key.der -out public_key_base64.der
* 
* ### remember to clear the whitespace chars and line breaks before submit!!!

Spring method

  1. Pada file konfigurasi spring dari bundle yang sesuai, deklarasikan bean Spring untuk layanan yang telah didefinisikan.

     <bean id="mockRpc" class="com.alipay.gateway.spi.mpc.test.MockRpcImpl"/>
  2. Pada file konfigurasi spring dari bundle yang sesuai, deklarasikan bean starter yang mengekspos layanan tersebut.

    Antarmuka MpcServiceStarter mendaftarkan semua bean yang memiliki anotasi OperationType ke registri yang ditentukan menggunakan protokol mpaaschannel.

    <bean id="mpcServiceStarter" class="com.alipay.gateway.spi.mpc.MpcServiceStarter">
     <property name="registryUrl" value="${registy_url}"/>
     <property name="appName" value="${app_name}"/>
     <property name="workspaceId" value="${workspace_id}"/>
     <property name="projectName" value="${project_name}"/>
     <property name="privateKeyPath" value="${privatekey_path}"/>
    </bean>

Metode Spring Boot

Metode Spring Boot pada dasarnya sama dengan metode Spring. Satu-satunya perbedaan adalah Anda menggunakan anotasi untuk pendaftaran, bukan file konfigurasi XML.

  1. Gunakan anotasi untuk mendaftarkan layanan yang telah didefinisikan sebagai bean:

    @Service
    public class MockRpcImpl implements MockRpc{
    }
  2. Gunakan anotasi untuk mendefinisikan starter yang mengekspos layanan tersebut:

    @Configuration
    public class MpaaschannelDemo {
     @Bean(name="mpcServiceStarter")
     public MpcServiceStarter mpcServiceStarter(){
         MpcServiceStarter mpcServiceStarter = new MpcServiceStarter();
         mpcServiceStarter.setWorkspaceId("${workspace_id}");
         mpcServiceStarter.setAppName("${app_name}");
         mpcServiceStarter.setRegistryUrl("${registy_url}");
         mpcServiceStarter.setProjectName("${project_name}");
         mpcServiceStarter.setPrivateKeyPath("${privatekey_path}");
         return mpcServiceStarter;
     }
    }

Konfigurasikan Log MPC

Untuk memudahkan troubleshooting, Anda dapat mengonfigurasi log terkait MPC. Contoh berikut menunjukkan konfigurasi log4j:

<!-- [MPC Logger] tenant link, records connection establishment and settings information -->
    <appender name="MPC-TENANT-LINK-APPENDER" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="file" value="${log_root}/mpaaschannel/tenant-link.log"/>
        <param name="append" value="true"/>
        <param name="encoding" value="${file.encoding}"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d [%X{remoteAddr}][%X{uniqueId}] %-5p %c{2} - %m%n"/>
        </layout>
    </appender>

    <!-- [MPC Logger] records data related to a stream (including a pair of tenant stream <-> component stream) -->
    <appender name="MPC-STREAM-DATA-APPENDER" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="file" value="${log_root}/mpaaschannel/stream-data.log"/>
        <param name="append" value="true"/>
        <param name="encoding" value="${file.encoding}"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d [%X{remoteAddr}][%X{uniqueId}] %-5p %c{2} - %m%n"/>
        </layout>
    </appender>


<!-- [MPC Logger] tenant log -->
    <logger name="TENANT-LINK-DIGEST" additivity="false">
        <level value="INFO" />
        <appender-ref ref="MPC-TENANT-LINK-APPENDER" />
        <appender-ref ref="ERROR-APPENDER" />
    </logger>

    <!-- [MPC Logger] component log -->
    <logger name="STREAM-DATA-DIGEST" additivity="false">
        <level value="INFO" />
        <appender-ref ref="MPC-STREAM-DATA-APPENDER" />
        <appender-ref ref="ERROR-APPENDER" />
    </logger>

Hasil

Setelah menyelesaikan langkah-langkah ini, Anda dapat melakukan beberapa operasi di gerbang untuk mengekspos layanan API kepada client. Untuk informasi selengkapnya, lihat Daftarkan API.