ข้ามไปยังเนื้อหาหลัก

เปิดใช้ Payment for Stripe จากแอปของคุณ (URL schemes)

คำตอบสั้นๆ: แอปหรือเว็บไซต์ของคุณจะเปิด URL การชำระเงินที่ชื่อ payment:// Payment for Stripe จะรับชำระเงินและเปิด URL การเรียกกลับ (callback URL) ของคุณพร้อมผลลัพธ์ ไม่ต้องใช้ SDK หรือการทำงานของเซิร์ฟเวอร์ วิธีการนี้ใช้งานได้เหมือนกันทั้งบน iPhone และ Android โดยมีข้อแตกต่างเล็กน้อยตามที่ระบุไว้ด้านล่าง

ข้อมูลอ้างอิงฉบับเต็มอยู่ที่ paymentforstripe.com/api

วิธีการทำงาน

  1. แอปของคุณจะเปิด URL payment:// พร้อมพารามิเตอร์
  2. Payment for Stripe จะเปิดใช้งานและตั้งค่าการขาย ผู้ขายจะรับชำระเงินด้วยเครื่องอ่านบัตร Tap to Pay หรือการพิมพ์ข้อมูลบัตร
  3. เมื่อดำเนินการเสร็จสิ้น แอปจะเปิด 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&currency=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&currency=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 แบบเก่าก็ใช้ได้เช่นกัน

บทความนี้มีประโยชน์หรือไม่
0 จาก 0 เห็นว่ามีประโยชน์