Skip to content

Commit 85a6d5a

Browse files
Feat: Add SDK accept payment snippets
1 parent 94e4e2b commit 85a6d5a

File tree

8 files changed

+192
-0
lines changed

8 files changed

+192
-0
lines changed
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
const kt = `import com.paystack.android_sdk.core.Paystack
2+
import com.paystack.android_sdk.ui.paymentsheet.PaymentSheet
3+
import com.paystack.android_sdk.ui.paymentsheet.PaymentSheetResult
4+
5+
private lateinit var paymentSheet: PaymentSheet
6+
7+
override fun onCreate(savedInstanceState: Bundle?) {
8+
super.onCreate(savedInstanceState)
9+
10+
//...
11+
12+
Paystack.builder()
13+
.setPublicKey("pk_{your-public-key}")
14+
.build()
15+
paymentSheet = PaymentSheet(this, {your-callback-function})
16+
17+
//...
18+
}
19+
20+
// example paymentResult function
21+
private fun paymentComplete(paymentSheetResult: PaymentSheetResult ) {
22+
val message = when (paymentSheetResult) {
23+
PaymentSheetResult.Cancelled -> "Cancelled"
24+
is PaymentSheetResult.Failed -> {
25+
Log.e("Something went wrong", paymentSheetResult.error.message.orEmpty(), paymentSheetResult.error)
26+
paymentSheetResult.error.message ?: "Failed"
27+
}
28+
29+
is PaymentSheetResult.Completed -> {
30+
// Returns the transaction reference PaymentCompletionDetails(reference={TransactionRef})
31+
Log.d("Payment successful", paymentSheetResult.paymentCompletionDetails.toString())
32+
"Successful"
33+
}
34+
}
35+
36+
Toast.makeText(this, "Payment $message", Toast.LENGTH_SHORT).show()
37+
}`
38+
39+
const java = `// TODO: Add snippet`
40+
41+
export {kt, java}
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
const swift_ui = `import SwiftUI
2+
import PaystackCore
3+
import PaystackUI
4+
5+
struct PaymentView: View {
6+
let paystack = try? PaystackBuilder
7+
.newInstance
8+
.setKey("pk_domain_xxxxxxxx")
9+
.build()
10+
11+
var body: some View {
12+
VStack(spacing: 8) {
13+
Text("Make Payemnt")
14+
15+
paystack?.chargeUIButton(accessCode: "0peioxfhpn",
16+
onComplete: paymentDone) {
17+
Text("Initiate Payment")
18+
}
19+
}
20+
.padding()
21+
}
22+
23+
func paymentDone(_ result: TransactionResult) {
24+
// Handle transaction result
25+
print(result)
26+
}
27+
}
28+
29+
// ....`
30+
31+
const ui_kit = `import UIKit
32+
import PaystackCore
33+
import PaystackUI
34+
35+
class ViewController: UIViewController {
36+
let paystack = try? PaystackBuilder
37+
.newInstance
38+
.setKey("PUBLIC_KEY")
39+
.build()
40+
41+
let paymentAccessCodee = "ACCESS_CODE"
42+
43+
@IBAction func launchPaymentTapped(_ sender: Any) {
44+
paystack?.presentChargeUI(on: self,
45+
accessCode: paymentAccessCodee,
46+
onComplete: paymentCompleted)
47+
}
48+
49+
func paymentCompleted(_ result: TransactionResult) {
50+
print("Payment completed. Result: \(result)")
51+
}
52+
53+
}`
54+
55+
export {swift_ui, ui_kit}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
languages:
2+
- kt
3+
- java
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
// TODO: Add snippet
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import com.paystack.android_sdk.core.Paystack
2+
import com.paystack.android_sdk.ui.paymentsheet.PaymentSheet
3+
import com.paystack.android_sdk.ui.paymentsheet.PaymentSheetResult
4+
5+
private lateinit var paymentSheet: PaymentSheet
6+
7+
override fun onCreate(savedInstanceState: Bundle?) {
8+
super.onCreate(savedInstanceState)
9+
10+
//...
11+
12+
Paystack.builder()
13+
.setPublicKey("pk_{your-public-key}")
14+
.build()
15+
paymentSheet = PaymentSheet(this, {your-callback-function})
16+
17+
//...
18+
}
19+
20+
// example paymentResult function
21+
private fun paymentComplete(paymentSheetResult: PaymentSheetResult ) {
22+
val message = when (paymentSheetResult) {
23+
PaymentSheetResult.Cancelled -> "Cancelled"
24+
is PaymentSheetResult.Failed -> {
25+
Log.e("Something went wrong", paymentSheetResult.error.message.orEmpty(), paymentSheetResult.error)
26+
paymentSheetResult.error.message ?: "Failed"
27+
}
28+
29+
is PaymentSheetResult.Completed -> {
30+
// Returns the transaction reference PaymentCompletionDetails(reference={TransactionRef})
31+
Log.d("Payment successful", paymentSheetResult.paymentCompletionDetails.toString())
32+
"Successful"
33+
}
34+
}
35+
36+
Toast.makeText(this, "Payment $message", Toast.LENGTH_SHORT).show()
37+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
type: single-lang
2+
languages:
3+
- swift
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import SwiftUI
2+
import PaystackCore
3+
import PaystackUI
4+
5+
struct PaymentView: View {
6+
let paystack = try? PaystackBuilder
7+
.newInstance
8+
.setKey("pk_domain_xxxxxxxx")
9+
.build()
10+
11+
var body: some View {
12+
VStack(spacing: 8) {
13+
Text("Make Payemnt")
14+
15+
paystack?.chargeUIButton(accessCode: "0peioxfhpn",
16+
onComplete: paymentDone) {
17+
Text("Initiate Payment")
18+
}
19+
}
20+
.padding()
21+
}
22+
23+
func paymentDone(_ result: TransactionResult) {
24+
// Handle transaction result
25+
print(result)
26+
}
27+
}
28+
29+
// ....
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import UIKit
2+
import PaystackCore
3+
import PaystackUI
4+
5+
class ViewController: UIViewController {
6+
let paystack = try? PaystackBuilder
7+
.newInstance
8+
.setKey("PUBLIC_KEY")
9+
.build()
10+
11+
let paymentAccessCodee = "ACCESS_CODE"
12+
13+
@IBAction func launchPaymentTapped(_ sender: Any) {
14+
paystack?.presentChargeUI(on: self,
15+
accessCode: paymentAccessCodee,
16+
onComplete: paymentCompleted)
17+
}
18+
19+
func paymentCompleted(_ result: TransactionResult) {
20+
print("Payment completed. Result: \(result)")
21+
}
22+
23+
}

0 commit comments

Comments
 (0)