# SDK接口文档 ### PayKKa.useEnv() 配置 SDK 使用的支付环境。 - **类型** ```java public static void useEnv(PayKKaEnvironment env) ``` - **详细信息** 该方法用于在发起支付前设置支付环境。支持沙箱环境和多个生产环境。如果不调用此方法,默认使用 `PayKKaEnv.SANDBOX`。 - **示例** ```java import com.paykka.android.checkout.PayKKa; import com.paykka.android.checkout.PayKKaEnv; // 使用生产环境(香港) PayKKa.useEnv(PayKKaEnv.PROD_HK); ``` ### PayKKa.goPay() 发起支付流程。 - **类型** ```java public static void goPay( Activity context, String sessionId, PaymentResultCallback onPaymentResultCallback ) public static void goPay( Activity context, String sessionId, PaymentResultCallback onPaymentResultCallback, JSEventCallback onCloseTappedCallback ) ``` - **详细信息** - `context`: 当前发起支付的 Activity。 - `sessionId`: 支付会话 ID,从服务端获取。 - `onPaymentResultCallback`: 支付结果回调。 - `onCloseTappedCallback` (可选): 用户点击支付页面关闭按钮时的回调。 该方法会检查设备是否支持 `PaymentRequest`。如果支持,则在应用内打开 `PayKKaWKWebViewActivity` 进行支付;如果不支持,则会跳转到外部浏览器(优先使用 Chrome)完成支付。 **注意**:在使用该方法时,你需要在发起支付的 Activity 的 `onActivityResult` 中调用 `PayKKa.onPaymentResult` 来确保回调被触发。 - **示例** ```java PayKKa.goPay(this, "your_session_id", result -> { switch (result.getStatus()) { case SUCCESS: // 支付成功 break; case ERROR: // 支付失败 break; } }); @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); PayKKa.onPaymentResult(requestCode, resultCode, data); } ``` ### PayKKa.registerForActivityResult() 在现代 Android 开发(ComponentActivity)中注册支付结果监听器。 - **类型** ```java public static PayKKaActivityResultLauncher registerForActivityResult( ComponentActivity context, PaymentResultCallback onPaymentResultCallback ) ``` - **详细信息** 这是推荐的集成方式,利用了 Android 的 `ActivityResultLauncher` API。它会在 Activity 创建时注册回调,并返回一个 `PayKKaActivityResultLauncher` 实例。 - **示例** ```java public class MyActivity extends AppCompatActivity { private PayKKaActivityResultLauncher launcher; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 必须在 onCreate 或初始化阶段注册 launcher = PayKKa.registerForActivityResult(this, result -> { // 处理支付结果 }); } private void startPayment() { launcher.goPay("your_session_id"); } } ``` ## 数据类型 ### PaymentResult 支付结果对象。 - **属性** - `getStatus()`: 返回 `PaymentResult.Status` 枚举。 - `getResult()`: 返回 `JSONObject`,包含详细的支付结果数据。 - `getMessage()`: 返回结果描述信息。 - **PaymentResult.Status 枚举** - `SUCCESS`: 支付成功。 - `EXPIRED`: 支付过期。 - `ERROR`: 支付错误。 - `UNKNOWN`: 未知状态。 ### JSEvent 来自支付页面的 JavaScript 事件。 - **属性** - `getType()`: 返回 `JSEvent.JSEventType`。 - `getData()`: 返回事件携带的 `JSONObject` 数据。 - **JSEvent.JSEventType 枚举** - `CLOSE_TAPPED`: 用户点击了支付页面的关闭/返回按钮。 - `UNKNOWN`: 未知事件。 ### PayKKaEnv 预定义的支付环境。 - **枚举值** - `SANDBOX`: 沙箱测试环境。 - `PROD_EU`: 欧洲生产环境。 - `PROD_HK`: 香港生产环境。