คำตอบสั้นๆ: แอปหรือเว็บไซต์ของคุณจะเปิด URL การชำระเงินที่ชื่อ payment:// Payment for Stripe จะรับชำระเงินและเปิด URL การเรียกกลับ (callback URL) ของคุณพร้อมผลลัพธ์ ไม่ต้องใช้ SDK หรือการทำงานของเซิร์ฟเวอร์ วิธีการนี้ใช้งานได้เหมือนกันทั้งบน iPhone และ Android โดยมีข้อแตกต่างเล็กน้อยตามที่ระบุไว้ด้านล่าง
ข้อมูลอ้างอิงฉบับเต็มอยู่ที่ paymentforstripe.com/api
วิธีการทำงาน
- แอปของคุณจะเปิด URL
payment://พร้อมพารามิเตอร์ - Payment for Stripe จะเปิดใช้งานและตั้งค่าการขาย ผู้ขายจะรับชำระเงินด้วยเครื่องอ่านบัตร Tap to Pay หรือการพิมพ์ข้อมูลบัตร
- เมื่อดำเนินการเสร็จสิ้น แอปจะเปิด URL
callbackของคุณ โดยเพิ่มผลลัพธ์เป็นพารามิเตอร์ในแบบสอบถาม
ผู้ขายต้องเข้าสู่ระบบก่อน หากมีการส่งลิงก์มาในขณะที่กำลังดำเนินการเรียกเก็บเงินอื่นอยู่ แอปจะปฏิเสธลิงก์นั้น และข้อความเรียกกลับของคุณจะได้รับ error=charge_in_progress
สร้างรายการเรียกเก็บเงิน: payment://new
ชำระเงินครั้งเดียวตามจำนวนเงินที่คุณกำหนด
| ชื่อ | พิมพ์ | ที่จำเป็น | คำอธิบาย |
|---|---|---|---|
amount
|
จำนวนเต็ม | ใช่ | จำนวนเงินในหน่วยที่เล็กที่สุดของสกุลเงินนั้น ซึ่งมากกว่า 0 1000 = 10.00 ดอลลาร์สหรัฐ |
currency
|
สตริง | เลขที่ | รหัส ISO สามตัวอักษร เช่น usd หรือ eur หากไม่ใส่รหัสนี้ แอปจะใช้สกุลเงินที่ตั้งค่าไว้แล้ว |
description
|
สตริง | เลขที่ | รายละเอียดค่าบริการ เข้ารหัส URL ด้วย |
customer
|
สตริง | เลขที่ | รหัสลูกค้า Stripe ที่มีอยู่แล้ว ( cus_…) customer_id ก็ใช้ได้เช่นกัน เมื่อตั้งค่าแล้ว ระบบจะไม่สนใจ email และ name
|
email
|
สตริง | เลขที่ | อีเมลลูกค้า สร้างลูกค้าใหม่ |
name
|
สตริง | เลขที่ | ชื่อลูกค้า เข้ารหัส URL สร้างลูกค้าใหม่ |
metadata
|
สตริง | เลขที่ | อ็อบเจ็กต์ JSON ที่เข้ารหัส URL ซึ่งประกอบด้วยคู่คีย์-ค่า จะถูกเพิ่มเข้าไปในการชำระเงิน ข้อจำกัดของเมตาเดต้าของ Stripe มีผลบังคับใช้ |
callback
|
สตริง | เลขที่ | ลิงก์ที่จะเปิดเมื่อการขายสิ้นสุดลง |
autoprocess
|
บูลีน | เลขที่ | การตั้ง true จะข้ามการป้อนแป้นพิมพ์และเริ่มการชาร์จทันที ค่าเริ่มต้นคือ false
|
auto_return
|
บูลีน | เลขที่ | true จะเรียกใช้ฟังก์ชัน callback ทันทีที่ทราบผลลัพธ์ ค่าเริ่มต้น false: ฟังก์ชัน callback จะรอจนกว่าผู้ขายจะปิดหน้าจอแสดงผลลัพธ์ |
payment://new?amount=2500¤cy=eur&description=Coffee%20and%20pastry payment://new?amount=3500&autoprocess=true&auto_return=true&callback=myapp://payment-complete ระบบจะละเว้นลิงก์ที่มีค่าว่าง ค่าเป็นศูนย์ หรือ amount ที่ไม่ใช่ตัวเลข
สร้างใบแจ้งหนี้จากแคตตาล็อกของคุณ: payment://cart
ระบบจะเพิ่มสินค้าจากแคตตาล็อกสินค้า Stripe ของคุณลงในตะกร้าสินค้า จากนั้นผู้ขายจะเรียกเก็บเงินตามปกติ และการขายจะถูกบันทึกใน Stripe เป็นใบแจ้งหนี้ที่ชำระแล้วพร้อมรายการสินค้าเหล่านั้น ระบบจะไม่ส่งใบแจ้งหนี้ทางอีเมลไปยังลูกค้าของคุณ
| ชื่อ | พิมพ์ | ที่จำเป็น | คำอธิบาย |
|---|---|---|---|
prices
|
สตริง | ใช่ | รูปแบบคู่ price_id:quantity ที่คั่นด้วยเครื่องหมายจุลภาค เช่น price_abc:2,price_xyz:1 รูป line_items ก็ใช้ได้เช่นกัน |
coupon
|
สตริง | เลขที่ | ใส่รหัสคูปอง Stripe เพื่อใช้กับตะกร้าสินค้า |
customer
|
สตริง | เลขที่ | รหัสลูกค้า Stripe ที่มีอยู่แล้ว customer_id ก็ใช้ได้เช่นกัน |
email
|
สตริง | เลขที่ | อีเมลลูกค้า สร้างลูกค้าใหม่ |
name
|
สตริง | เลขที่ | ชื่อลูกค้า เข้ารหัส URL ด้วย |
metadata
|
สตริง | เลขที่ | อ็อบเจ็กต์ JSON ที่เข้ารหัส URL ซึ่งประกอบด้วยคู่คีย์-ค่า |
callback
|
สตริง | เลขที่ | ลิงก์ที่จะเปิดเมื่อการขายสิ้นสุดลง |
autoprocess
|
บูลีน | เลขที่ | true จะเริ่มคิดค่าบริการเมื่อราคาทั้งหมด (และคูปอง) โหลดเสร็จเรียบร้อยแล้ว |
auto_return
|
บูลีน | เลขที่ | เช่นเดียวกับข้างต้น ค่าเริ่มต้น false
|
payment://cart?prices=price_coffee:2,price_muffin:1&email=customer@example.com อย่าส่ง amount พร้อมกับ prices รวมจะมาจากราคา และระบบจะไม่สนใจลิงก์ที่มีทั้งสองอย่าง อย่างไรก็ตาม ราคาที่ซ่อนไว้ด้วย payment_hidden ยังคงใช้งานได้ในกรณีนี้
ชำระใบแจ้งหนี้ที่มีอยู่แล้ว: payment://invoice
แอปนี้รับชำระเงินสดเมื่อชำระเงินจริงสำหรับใบแจ้งหนี้ Stripe ที่ยังเปิดอยู่ จำนวนเงิน สกุลเงิน ลูกค้า และภาษีทั้งหมดจะมาจากใบแจ้งหนี้ เมื่อการชำระเงินสำเร็จ แอปจะทำเครื่องหมายว่าใบแจ้งหนี้ได้รับการชำระแล้ว ใช้งานได้บน iPhone และ Android
| ชื่อ | พิมพ์ | ที่จำเป็น | คำอธิบาย |
|---|---|---|---|
id
|
สตริง | ใช่ | รหัสใบแจ้งหนี้ Stripe ต้องขึ้นต้นด้วย in_ ส่งใบแจ้งหนี้ที่ยังไม่ปิด บน iPhone ใบแจ้งหนี้ฉบับร่างจะถูกสรุปก่อน บน Android ใบแจ้งหนี้ฉบับร่างจะถูกปฏิเสธพร้อมข้อความแสดง error=invoice_state_changed
|
metadata
|
สตริง | เลขที่ | อ็อบเจ็กต์ JSON ที่เข้ารหัส URL ซึ่งถูกเพิ่มเข้าไปใน PaymentIntent แล้ว |
callback
|
สตริง | เลขที่ | URL ที่จะเปิดเมื่อการขายเสร็จสมบูรณ์ เมื่อการขายสำเร็จ จะได้รับ invoice_id และ payment_intent_id
|
autoprocess
|
บูลีน | เลขที่ | การตั้งค่า true จะเริ่มเรียกเก็บเงินหลังจากตรวจสอบใบแจ้งหนี้ผ่านแล้วเท่านั้น โดยจะต้องเชื่อมต่อเครื่องอ่านบัตรก่อน |
auto_return
|
บูลีน | เลขที่ | เช่นเดียวกับข้างต้น ค่าเริ่มต้น false
|
payment://invoice?id=in_1ABC123xyz&autoprocess=true&callback=myapp://invoice-paid ใบแจ้งหนี้เป็นตัวกำหนดการขาย ดังนั้นข้อมูลใดๆ ก็ตาม เช่น amount currency customer customer_id email name description coupon prices หรือ line_items จะถูกปฏิเสธการเชื่อมโยงด้วย error=invoice_invalid_param ใบแจ้งหนี้ที่ชำระเงินแล้ว เป็นโมฆะ เรียกเก็บไม่ได้ มีมูลค่า 0 ดอลลาร์ ผูกกับระบบสมัครสมาชิก หรือตั้งค่าให้เรียกเก็บเงินจากวิธีการชำระเงินเริ่มต้น ก็จะถูกปฏิเสธเช่นกัน โดยแต่ละใบแจ้งหนี้จะมีข้อผิดพลาด invoice_… ที่แตกต่างกันไป
การเรียกกลับ
แอปจะเพิ่มสิ่งเหล่านี้ลงใน URL การเรียกกลับของคุณ:
| ชื่อ | พิมพ์ | ส่งแล้ว | คำอธิบาย |
|---|---|---|---|
status
|
สตริง | เสมอ | success, error หรือ cancelled
|
charge_id
|
สตริง | สู่ความสำเร็จ | รหัสการชำระเงิน บน iPhone คือ Stripe charge ( ch_…) บน Android คือ PaymentIntent ( pi_…) |
stripe_charge_id
|
สตริง | เฉพาะ Android เท่านั้น | ค่าธรรมเนียม Stripe ( ch_…) |
payment_intent_id
|
สตริง | สู่ความสำเร็จ | PaymentIntent: iPhone จะส่งเฉพาะกรณี payment://invoice เท่านั้น ส่วน Android จะส่งทุกครั้งที่มีการชำระเงินด้วยบัตร |
invoice_id
|
สตริง | ลิงก์ใบแจ้งหนี้ | ใบแจ้งหนี้ที่ชำระเงินแล้ว สำหรับ payment://invoice
|
amount
|
จำนวนเต็ม | สู่ความสำเร็จ | จำนวนเงินที่เรียกเก็บ ในหน่วยที่เล็กที่สุด |
currency
|
สตริง | สู่ความสำเร็จ | รหัส ISO ตัวพิมพ์เล็ก |
error
|
สตริง | เกิดข้อผิดพลาด | รหัสสั้นๆ เช่น charge_in_progress หรือ invoice_already_paid หรือข้อความที่อ่านได้สำหรับบัตรที่ถูกปฏิเสธ |
myapp://payment-complete?status=success&charge_id=ch_3Qx…&success=true&amount=3500¤cy=usd&chargeId=ch_3Qx… ต้องการใช้ ID เดียวกันบนทั้งสองแพลตฟอร์มใช่ไหม? อ่าน stripe_charge_id ก่อน จากนั้นใช้ charge_id เป็นตัวสำรอง
สำหรับระบบที่เชื่อมต่อแบบเก่า แอปจะส่งค่า success=true, chargeId, cancelled=true และ error[message] ไปด้วย ส่วนโค้ดใหม่ควรอ่าน status เพียงอย่างเดียว
การยกเลิกจะเปิดฟังก์ชันเรียกกลับทันที ส่วนการชำระเงินสำเร็จหรือเกิดข้อผิดพลาดจะรอให้ร้านค้าปิดหน้าจอแสดงผลลัพธ์ก่อน เว้นแต่คุณจะตั้งค่า auto_return=true บน iPhone การขายด้วยเงินสดจะไม่เปิดฟังก์ชันเรียกกลับ เนื่องจากไม่มีการเรียกเก็บเงินใดๆ
การเข้ารหัส URL
- เข้ารหัสค่าทุกค่าที่มีช่องว่างหรือสัญลักษณ์ ช่องว่างจะกลายเป็น
%20,{และ}จะกลายเป็น%7Bและ%7D,"จะกลายเป็น%22,:จะกลายเป็น%3A - หาก URL เรียกกลับของคุณมีสตริงคำค้นหาเป็นของตัวเอง ให้เข้ารหัส URL เรียกกลับทั้งหมดเพื่อไม่ให้เครื่องหมาย
&แบ่งลิงก์payment://ของคุณ - เครื่องหมายจุลภาคและเครื่องหมายโคลอนใน
pricesสามารถคงไว้ตามเดิมได้
ข้อมูลเมตา {"order_id":"1234","location":"Store A"} จะกลายเป็น:
payment://new?amount=10000&description=Invoice%20%231234&metadata=%7B%22order_id%22%3A%221234%22%2C%22location%22%3A%22Store%20A%22%7D รูปแบบ metadata[order_id]=1234 แบบเก่าก็ใช้ได้เช่นกัน