PaymentService
The IAPMiniProgram SDK calls the PaymentService SPI to initiate the payment process and handle the payment result.​ For details on how the SPI functions, refer to the PaymentService workflow.
This SPI provides the pay
method. The method details are as follows:
pay
The IAPMiniprogram SDK calls the pay
method to initiate the payment process.
Method signature
Future<PaymentResult> pay(APIContext context, PaymentRequest request);
Request parameters
Field | Data type | Required | Description |
request | Yes | An object that specifies the payment information. | |
context | APIContext | Yes | A context object, which carries the mini program runtime metadata. |
Response parameters
Field | Data type | Required | Description |
result | Future<PaymentResult> | Yes | The result of the |
Error codes
Error code | Error message | |
1000 | ERROR_CODE_UNKNOWN_ERROR | Unknown error |
1001 | ERROR_CODE_USER_CANCEL | The user cancels the operation. |
1002 | ERROR_CODE_APP_SERVICE_ERROR | The app service is wrong. |
1003 | ERROR_CODE_TIMEOUT | Timeout |
1005 | ERROR_CODE_SYSTEM_ERROR | System error |
2001 | ERROR_CODE_AUTH_PENDING_AGREEMENT | Authorization is not finished or is pending. |
Samples
The following samples show how to implement the PaymentService SPI to enable payment processing capabilities:
- Create a class that implements the PaymentService interface.
- Within this class, implement the
pay
method to initiate the payment process and request for payment with the type of order, and handle the payment result.
The samples differ depending on whether to open a Flutter page during the SPI call:
Open a Flutter page
class TestPaymentService implements PaymentService {
@override
Future<PaymentResult> pay(APIContext context, PaymentRequest request) async {
PaymentResult result = PaymentResult('', '');
result.showFlutterPage = true;
result.flutterPageRoute = '/pay';
return result;
}
}
Remain inside the mini program
class TestPaymentService implements PaymentService {
@override
Future<PaymentResult> pay(APIContext context, PaymentRequest request) async {
PaymentResult result = PaymentResult(PaymentResult.CODE_SUCCESS, '');
return result;
}
}