PaymentService
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
func pay(
with request: IAPWalletPaymentRequest,
in context: IAPWalletAPIContext? = nil,
callback: @escaping (IAPWalletPaymentResult) -> Void
)
Request parameters
Field | Data type | Description | Required |
request | An object that specifies the payment information. | Yes | |
context | IAPWalletAPIContext | A context object, which carries the mini program runtime metadata. | Yes |
callback | Callback | The callback that is executed when the request processing is complete. For details, see the following section. | Yes |
Callback
Field | Data type | Description | Required |
result | The result of the | Yes |
Response parameters
N/A
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. |
Sample
The following sample shows how to call 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.
Swift
final class PaymentService: IAPWalletPaymentServiceSignature, UIAlertViewDelegate {
override func pay(
with request: IAPWalletPaymentRequest,
in context: IAPWalletAPIContext? = nil,
callback: @escaping (IAPWalletPaymentResult) -> Void
) {
// to payment code
let result = IAPWalletPaymentResult(resultCode: "RESULT_CODE", resultMessage: "RESULT_MSG")
callback(result)
}
}