我无法通过Stripe向用户收费。我在以下委托方法中收到的paymentResult对象
func paymentContext(_ paymentContext: STPPaymentContext, didCreatePaymentResult paymentResult: STPPaymentResult, completion: @escaping STPErrorBlock) {
}
是一个STPCard对象,但根据文档用我的后端完成收费我需要一个STPToken。我尝试过使用
STPAPIClient.shared().createToken(withCard: card) {}
用我收到的STPCard对象创建一个STPToken,但是我收到一个错误,说卡参数没有所需的变量' number'。有没有人知道可能会发生什么,或者是否有办法仅使用STPCard对象来完成收费?谢谢。
答案 0 :(得分:0)
在STPPaymentContext在其委托上调用didCreatePaymentResult时,该令牌已经创建,因此无需尝试创建第二个令牌。我将看一下iOS后端示例,它与Stripe SDK中的“标准”示例应用程序一起使用:
https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html
答案 1 :(得分:0)
如果您使用卡中的stripe id
而非token
,则需要包含客户对象,请参见How to use Stripe and Apple Pay in iOS
这是在Go中处理该问题的方法
package main
import (
"net"
"encoding/json"
"fmt"
"net/http"
"log"
"os"
"github.com/stripe/stripe-go/charge"
)
func main() {
stripe.Key = "sk_test_mM2MkqO61n7vvbVRfeYmBgWm00Si2PtWab"
http.HandleFunc("/request_charge", handleCharge)
if err := http.ListenAndServe(":8080", nil); err != nil {
panic(err)
}
}
var customerId = "cus_Eys6aeP5xR89ab"
type PaymentResult struct {
StripeId string `json:"stripe_id"`
}
func handleCharge(w http.ResponseWriter, r *http.Request) {
decoder := json.NewDecoder(r.Body)
var t PaymentResult
err := decoder.Decode(&t)
if err != nil {
panic(err)
}
params := &stripe.ChargeParams{
Amount: stripe.Int64(150),
Currency: stripe.String(string(stripe.CurrencyUSD)),
Description: stripe.String("Charge from my Go backend"),
Customer: stripe.String(customerId),
}
params.SetSource(t.StripeId)
ch, err := charge.New(params)
if err != nil {
fmt.Fprintf(w, "Could not process payment: %v", err)
fmt.Println(ch)
w.WriteHeader(400)
}
w.WriteHeader(200)
}