Skip to content

Commit

Permalink
harmonyzhang
Browse files Browse the repository at this point in the history
稳定版本1.0.0
  • Loading branch information
harmonyzhang committed Apr 18, 2023
1 parent fa99bcf commit c79ad8c
Show file tree
Hide file tree
Showing 19 changed files with 379 additions and 38 deletions.
31 changes: 2 additions & 29 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

<groupId>com.github.harmonyzhang</groupId>
<artifactId>whatsapp-business-java-sdk</artifactId>
<version>v0.2.1</version>
<version>v1.0.0</version>
<licenses>
<license>
<name>The MIT License</name>
Expand Down Expand Up @@ -40,39 +40,12 @@
<commons-lang3.version>3.6</commons-lang3.version>
</properties>

<!--<distributionManagement>
<distributionManagement>
<repository>
<id>github</id>
<name>GitHub Packages</name>
<url>https://maven.pkg.github.com/harmonyzhang/whatsapp-business-java-sdk</url>
</repository>
</distributionManagement>-->

<repositories>
<repository>
<id>joinf-nexus-releases</id>
<name>joinf Repository</name>
<url>http://maven.rdc.joinf.com/nexus/content/groups/public/</url>
</repository>
</repositories>

<pluginRepositories>
<pluginRepository>
<id>nexus</id>
<name>Team Nexus Repository</name>
<url>http://maven.rdc.joinf.com/nexus/content/groups/public</url>
</pluginRepository>
</pluginRepositories>

<distributionManagement>
<repository>
<id>joinf-nexus-releases</id>
<url>http://maven.rdc.joinf.com/nexus/content/repositories/releases/</url>
</repository>
<snapshotRepository>
<id>joinf-nexus-snapshot</id>
<url>http://maven.rdc.joinf.com/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>

<dependencies>
Expand Down
49 changes: 49 additions & 0 deletions src/main/java/com/whatsapp/api/domain/organization/Apikeys.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package com.whatsapp.api.domain.organization;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

import java.util.List;

@Data
@JsonInclude(value = JsonInclude.Include.NON_NULL)
public class Apikeys {

/**
* 组织id
*/
@JsonProperty("org_id") String orgId;

/**
* whatsapp 商业账户的编号
*/
@JsonProperty("waba_id") String wabaId;

/**
* API 秘钥的描述信息
*/
@JsonProperty("description") String description;

/**
* 设置该 API 秘钥允许使用的发送号列表,如果完全不允许使用 Message API,则不要设置该信息,或值为空
*/
@JsonProperty("message_api_phone_list") List<String> phoneList;

/**
* 设置该 API 秘钥是否允许使用模板 API,true:开启,false:关闭(默认)
*/
@JsonProperty("template_api") boolean templateApi = true;

/**
* IP 白名单列表,设置后代表仅这些 IP 地址才能使用该 API 秘钥,默认不控制。
*/
@JsonProperty("ip_white_list") List<String> ipWhiteList;

/**
* 有效日期,时间戳,精确到秒
*/
@JsonProperty("valid_time") long validTime;


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.whatsapp.api.domain.organization;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

@Data
@JsonInclude(value = JsonInclude.Include.NON_NULL)
public class ApikeysResponse {

/**
* API 秘钥key
*/
@JsonProperty("whatsapp_dev_key") String devKey;

/**
* API 秘钥的密码
*/
@JsonProperty("whatsapp_dev_secret")
String devSecret;

}
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,20 @@ public enum ComponentType {
* Body component type.
*/
BODY,
body,
/**
* Header component type.
*/
HEADER,
header,
/**
* Footer component type.
*/
FOOTER,
footer,
/**
* Buttons component type.
*/
BUTTONS
BUTTONS,
buttons
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,17 @@ public class NotificationData {
@JsonProperty("waba_list") List<NotificationWaba> wabaList;



/**
* 发送号所属的 WhatsApp 商业账户的编号 (预估费用的参数)
*/
@JsonProperty("waba_id") String wabaId;

/**
* 该接收方收到消息后预估将花费的钱乘10000倍的整数,单位是美元 (预估费用的参数)
*/
@JsonProperty("estimated_cost")
Long estimatedCost;


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package com.whatsapp.api.domain.webhook.engaglab;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

import java.util.List;

@Data
@JsonInclude(value = JsonInclude.Include.NON_NULL)
public class SelectEvents {

/**
* 消息状态事件
*/
@JsonProperty("status") List<String> status;

/**
* 消息响应事件
*/
@JsonProperty("response") List<String> response;


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.whatsapp.api.domain.webhook.engaglab;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

@Data
@JsonInclude(value = JsonInclude.Include.NON_NULL)
public class SetWebhook {

/**
* 描述信息
*/
@JsonProperty("description") String description;

/**
* 回调地址
*/
@JsonProperty("notify_url") String notifyUrl;

/**
* 事件
*/
@JsonProperty("select_events") SelectEvents selectEvents;




}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.whatsapp.api.domain.webhook.engaglab;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

@Data
@JsonInclude(value = JsonInclude.Include.NON_NULL)
public class SetWebhookResponse {

/**
* webhook id
*/
@JsonProperty("webhook_id") String webhookId;

}
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,12 @@ public enum NotificationEventType {
* 嵌入式注册成功.
*/
@JsonProperty("whatsapp_bsp_add_waba")
ADD_WABA
ADD_WABA,

/**
* 预估费用
*/
@JsonProperty("whatsapp_bsp_delivery_estimate_cost")
ESTIMATE_COST

}
20 changes: 16 additions & 4 deletions src/main/java/com/whatsapp/api/impl/WhatsappEngagelabApi.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,15 @@
import com.whatsapp.api.domain.response.Response;
import com.whatsapp.api.domain.templates.MessageTemplate;
import com.whatsapp.api.domain.templates.response.MessageTemplateIDResponse;
import com.whatsapp.api.domain.templates.response.MessageTemplates;
import com.whatsapp.api.domain.templates.response.Template;
import com.whatsapp.api.domain.webhook.engaglab.SetWebhook;
import com.whatsapp.api.domain.webhook.engaglab.SetWebhookResponse;
import com.whatsapp.api.service.WhatsappEngagelabApiService;
import retrofit2.Call;
import retrofit2.http.GET;

import java.util.List;

import static com.whatsapp.api.WhatsappApiServiceGenerator.createServiceBasic;
import static com.whatsapp.api.WhatsappApiServiceGenerator.executeSync;
import static com.whatsapp.api.configuration.WhatsappApiConfig.ENGAGELAB_API_VERSION;
import static com.whatsapp.api.configuration.WhatsappApiConfig.ENGAGELAB_DOMAIN;

/**
Expand Down Expand Up @@ -95,5 +93,19 @@ public Response deleteMessageTemplate(String name) {
return executeSync(whatsappEngagelabApiService.deleteMessageTemplate(name));
}

/**
* 设置回调地址
*
* @param setWebhook the setWebhook
* @return the setWebhook success response
*/
public SetWebhookResponse webhooks(SetWebhook setWebhook) {

return executeSync(whatsappEngagelabApiService.webhooks(setWebhook));
}





}
14 changes: 13 additions & 1 deletion src/main/java/com/whatsapp/api/impl/WhatsappEngagelabBspApi.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
package com.whatsapp.api.impl;

import com.whatsapp.api.domain.organization.Apikeys;
import com.whatsapp.api.domain.organization.ApikeysResponse;
import com.whatsapp.api.domain.organization.Organization;
import com.whatsapp.api.domain.organization.OrganizationResponse;
import com.whatsapp.api.domain.response.Response;
import com.whatsapp.api.domain.webhook.engaglab.SetWebhook;
import com.whatsapp.api.service.WhatsappEngagelabBspApiService;

import static com.whatsapp.api.WhatsappApiServiceGenerator.createServiceBasic;
Expand Down Expand Up @@ -31,13 +35,21 @@ public WhatsappEngagelabBspApi(String token) {

/**
* 创建组织
* @param organization The {@link Organization} object.
* @param organization The {@link Organization} organization.
* @return {@link OrganizationResponse}
*/
public OrganizationResponse createOrganization(Organization organization) {
return executeSync(whatsappEngagelabBspApiService.createOrganization(organization));
}

/**
* 创建api密钥
* @param apikeys The {@link Apikeys} apikeys.
* @return {@link OrganizationResponse}
*/
public ApikeysResponse createApikeys(Apikeys apikeys) {
return executeSync(whatsappEngagelabBspApiService.createApikeys(apikeys));
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
import com.whatsapp.api.domain.templates.MessageTemplate;
import com.whatsapp.api.domain.templates.response.MessageTemplateIDResponse;
import com.whatsapp.api.domain.templates.response.Template;
import com.whatsapp.api.domain.webhook.engaglab.SetWebhook;
import com.whatsapp.api.domain.webhook.engaglab.SetWebhookResponse;
import retrofit2.Call;
import retrofit2.http.*;

Expand Down Expand Up @@ -66,6 +68,13 @@ public interface WhatsappEngagelabApiService {
@DELETE("/" + WhatsappApiConfig.ENGAGELAB_API_VERSION + "/templates/{message-template-name}")
Call<Response> deleteMessageTemplate(@Path("message-template-name") String name);

/**
* 设置回调地址
* @param setWebhook the setWebhook
* @return the call
*/
@POST("/" + WhatsappApiConfig.ENGAGELAB_DEV_API_VERSION + "/webhooks")
Call<SetWebhookResponse> webhooks(@Body SetWebhook setWebhook);



Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,12 @@


import com.whatsapp.api.configuration.WhatsappApiConfig;
import com.whatsapp.api.domain.organization.Apikeys;
import com.whatsapp.api.domain.organization.ApikeysResponse;
import com.whatsapp.api.domain.organization.Organization;
import com.whatsapp.api.domain.organization.OrganizationResponse;
import com.whatsapp.api.domain.response.Response;
import com.whatsapp.api.domain.webhook.engaglab.SetWebhook;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.POST;
Expand All @@ -24,5 +28,17 @@ public interface WhatsappEngagelabBspApiService {
@POST("/" + WhatsappApiConfig.ENGAGELAB_DEV_API_VERSION + "/organization")
Call<OrganizationResponse> createOrganization(@Body Organization organization);

/**
* 创建api密钥
*
* @param apikeys the apikeys
* @return the call
*/
@POST("/whatsapp/" + WhatsappApiConfig.ENGAGELAB_DEV_API_VERSION + "/apikeys")
Call<ApikeysResponse> createApikeys(@Body Apikeys apikeys);





}
Loading

0 comments on commit c79ad8c

Please sign in to comment.