mirror of
https://github.com/casdoor/casdoor.git
synced 2025-05-23 02:35:49 +08:00
Add DummyPaymentProvider
This commit is contained in:
parent
10e66f8020
commit
fb1db7823b
@ -210,6 +210,11 @@ func BuyProduct(id string, providerName string, user *User, host string) (string
|
|||||||
ReturnUrl: product.ReturnUrl,
|
ReturnUrl: product.ReturnUrl,
|
||||||
State: "Created",
|
State: "Created",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if provider.Type == "Dummy" {
|
||||||
|
payment.State = "Paid"
|
||||||
|
}
|
||||||
|
|
||||||
affected, err := AddPayment(&payment)
|
affected, err := AddPayment(&payment)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
|
45
pp/dummy.go
Normal file
45
pp/dummy.go
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
// Copyright 2023 The Casdoor Authors. All Rights Reserved.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
package pp
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
type DummyPaymentProvider struct {
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewDummyPaymentProvider() (*DummyPaymentProvider, error) {
|
||||||
|
pp := &DummyPaymentProvider{}
|
||||||
|
return pp, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (pp *DummyPaymentProvider) Pay(providerName string, productName string, payerName string, paymentName string, productDisplayName string, price float64, returnUrl string, notifyUrl string) (string, error) {
|
||||||
|
payUrl := fmt.Sprintf("/payments/%s/result", paymentName)
|
||||||
|
return payUrl, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (pp *DummyPaymentProvider) Notify(request *http.Request, body []byte, authorityPublicKey string) (string, string, float64, string, string, error) {
|
||||||
|
return "", "", 0, "", "", nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (pp *DummyPaymentProvider) GetInvoice(paymentName string, personName string, personIdCard string, personEmail string, personPhone string, invoiceType string, invoiceTitle string, invoiceTaxId string) (string, error) {
|
||||||
|
return "", nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (pp *DummyPaymentProvider) GetResponseError(err error) string {
|
||||||
|
return ""
|
||||||
|
}
|
@ -24,26 +24,32 @@ type PaymentProvider interface {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func GetPaymentProvider(typ string, clientId string, clientSecret string, host string, appCertificate string, appPrivateKey string, authorityPublicKey string, authorityRootPublicKey string, clientId2 string) (PaymentProvider, error) {
|
func GetPaymentProvider(typ string, clientId string, clientSecret string, host string, appCertificate string, appPrivateKey string, authorityPublicKey string, authorityRootPublicKey string, clientId2 string) (PaymentProvider, error) {
|
||||||
if typ == "Alipay" {
|
if typ == "Dummy" {
|
||||||
newAlipayPaymentProvider, err := NewAlipayPaymentProvider(clientId, appCertificate, appPrivateKey, authorityPublicKey, authorityRootPublicKey)
|
pp, err := NewDummyPaymentProvider()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return newAlipayPaymentProvider, nil
|
return pp, nil
|
||||||
|
} else if typ == "Alipay" {
|
||||||
|
pp, err := NewAlipayPaymentProvider(clientId, appCertificate, appPrivateKey, authorityPublicKey, authorityRootPublicKey)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return pp, nil
|
||||||
} else if typ == "GC" {
|
} else if typ == "GC" {
|
||||||
return NewGcPaymentProvider(clientId, clientSecret, host), nil
|
return NewGcPaymentProvider(clientId, clientSecret, host), nil
|
||||||
} else if typ == "WeChat Pay" {
|
} else if typ == "WeChat Pay" {
|
||||||
newWechatPaymentProvider, err := NewWechatPaymentProvider(clientId, clientSecret, clientId2, appCertificate, appPrivateKey)
|
pp, err := NewWechatPaymentProvider(clientId, clientSecret, clientId2, appCertificate, appPrivateKey)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return newWechatPaymentProvider, nil
|
return pp, nil
|
||||||
} else if typ == "PayPal" {
|
} else if typ == "PayPal" {
|
||||||
newPaypalPaymentProvider, err := NewPaypalPaymentProvider(clientId, clientSecret)
|
pp, err := NewPaypalPaymentProvider(clientId, clientSecret)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return newPaypalPaymentProvider, nil
|
return pp, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil, nil
|
return nil, nil
|
||||||
|
@ -151,7 +151,9 @@ class ProductBuyPage extends React.Component {
|
|||||||
|
|
||||||
getPayButton(provider) {
|
getPayButton(provider) {
|
||||||
let text = provider.type;
|
let text = provider.type;
|
||||||
if (provider.type === "Alipay") {
|
if (provider.type === "Dummy") {
|
||||||
|
text = i18next.t("product:Dummy");
|
||||||
|
} else if (provider.type === "Alipay") {
|
||||||
text = i18next.t("product:Alipay");
|
text = i18next.t("product:Alipay");
|
||||||
} else if (provider.type === "WeChat Pay") {
|
} else if (provider.type === "WeChat Pay") {
|
||||||
text = i18next.t("product:WeChat Pay");
|
text = i18next.t("product:WeChat Pay");
|
||||||
|
@ -305,7 +305,7 @@ class ProviderEditPage extends React.Component {
|
|||||||
} else if (value === "SAML") {
|
} else if (value === "SAML") {
|
||||||
this.updateProviderField("type", "Aliyun IDaaS");
|
this.updateProviderField("type", "Aliyun IDaaS");
|
||||||
} else if (value === "Payment") {
|
} else if (value === "Payment") {
|
||||||
this.updateProviderField("type", "Alipay");
|
this.updateProviderField("type", "PayPal");
|
||||||
} else if (value === "Captcha") {
|
} else if (value === "Captcha") {
|
||||||
this.updateProviderField("type", "Default");
|
this.updateProviderField("type", "Default");
|
||||||
} else if (value === "AI") {
|
} else if (value === "AI") {
|
||||||
|
@ -163,6 +163,10 @@ export const OtherProviderInfo = {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
Payment: {
|
Payment: {
|
||||||
|
"Dummy": {
|
||||||
|
logo: `${StaticBaseUrl}/img/payment_paypal.png`,
|
||||||
|
url: "",
|
||||||
|
},
|
||||||
"Alipay": {
|
"Alipay": {
|
||||||
logo: `${StaticBaseUrl}/img/payment_alipay.png`,
|
logo: `${StaticBaseUrl}/img/payment_alipay.png`,
|
||||||
url: "https://www.alipay.com/",
|
url: "https://www.alipay.com/",
|
||||||
@ -848,6 +852,7 @@ export function getProviderTypeOptions(category) {
|
|||||||
]);
|
]);
|
||||||
} else if (category === "Payment") {
|
} else if (category === "Payment") {
|
||||||
return ([
|
return ([
|
||||||
|
{id: "Dummy", name: "Dummy"},
|
||||||
{id: "Alipay", name: "Alipay"},
|
{id: "Alipay", name: "Alipay"},
|
||||||
{id: "WeChat Pay", name: "WeChat Pay"},
|
{id: "WeChat Pay", name: "WeChat Pay"},
|
||||||
{id: "PayPal", name: "PayPal"},
|
{id: "PayPal", name: "PayPal"},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user