mirror of
https://github.com/yangjian102621/geekai.git
synced 2025-09-17 16:56:38 +08:00
feat: h5 payment for payjs is ready
This commit is contained in:
parent
14f63a203d
commit
735aa24020
@ -338,19 +338,14 @@ func (h *PaymentHandler) Mobile(c *gin.Context) {
|
||||
payWay = PayWayJs
|
||||
notifyURL = h.App.Config.JPayConfig.NotifyURL
|
||||
returnURL = h.App.Config.JPayConfig.ReturnURL
|
||||
params := payment.JPayReq{
|
||||
TotalFee: int(math.Ceil(amount * 100)),
|
||||
OutTradeNo: orderNo,
|
||||
Subject: product.Name,
|
||||
NotifyURL: notifyURL,
|
||||
ReturnURL: returnURL,
|
||||
}
|
||||
r := h.js.PayH5(params)
|
||||
if !r.IsOK() {
|
||||
resp.ERROR(c, "error with generating Pay URL: "+r.ReturnMsg)
|
||||
return
|
||||
}
|
||||
payURL = r.H5URL
|
||||
totalFee := decimal.NewFromFloat(product.Price).Sub(decimal.NewFromFloat(product.Discount)).Mul(decimal.NewFromInt(100)).IntPart()
|
||||
params := url.Values{}
|
||||
params.Add("total_fee", fmt.Sprintf("%d", totalFee))
|
||||
params.Add("out_trade_no", orderNo)
|
||||
params.Add("body", product.Name)
|
||||
params.Add("notify_url", notifyURL)
|
||||
params.Add("auto", "0")
|
||||
payURL = h.js.PayH5(params)
|
||||
case "alipay":
|
||||
payWay = PayWayAlipay
|
||||
notifyURL = h.App.Config.AlipayConfig.NotifyURL
|
||||
|
@ -40,7 +40,6 @@ type JPayReps struct {
|
||||
TotalFee string `json:"total_fee"`
|
||||
CodeUrl string `json:"code_url,omitempty"`
|
||||
Qrcode string `json:"qrcode,omitempty"`
|
||||
H5URL string `json:"h5_url,omitempty"`
|
||||
}
|
||||
|
||||
func (r JPayReps) IsOK() bool {
|
||||
@ -80,37 +79,10 @@ func (js *PayJS) Pay(param JPayReq) JPayReps {
|
||||
return data
|
||||
}
|
||||
|
||||
func (js *PayJS) PayH5(param JPayReq) JPayReps {
|
||||
param.NotifyURL = js.config.NotifyURL
|
||||
var p = url.Values{}
|
||||
encode := utils.JsonEncode(param)
|
||||
m := make(map[string]interface{})
|
||||
_ = utils.JsonDecode(encode, &m)
|
||||
for k, v := range m {
|
||||
p.Add(k, fmt.Sprintf("%v", v))
|
||||
}
|
||||
func (js *PayJS) PayH5(p url.Values) string {
|
||||
p.Add("mchid", js.config.AppId)
|
||||
|
||||
p.Add("sign", js.sign(p))
|
||||
|
||||
cli := http.Client{}
|
||||
apiURL := fmt.Sprintf("%s/api/h5", js.config.ApiURL)
|
||||
r, err := cli.PostForm(apiURL, p)
|
||||
if err != nil {
|
||||
return JPayReps{ReturnMsg: err.Error()}
|
||||
}
|
||||
defer r.Body.Close()
|
||||
bs, err := io.ReadAll(r.Body)
|
||||
if err != nil {
|
||||
return JPayReps{ReturnMsg: err.Error()}
|
||||
}
|
||||
|
||||
var data JPayReps
|
||||
err = utils.JsonDecode(string(bs), &data)
|
||||
if err != nil {
|
||||
return JPayReps{ReturnMsg: err.Error()}
|
||||
}
|
||||
return data
|
||||
return fmt.Sprintf("%s/api/cashier?%s", js.config.ApiURL, p.Encode())
|
||||
}
|
||||
|
||||
func (js *PayJS) sign(params url.Values) string {
|
||||
|
@ -73,13 +73,9 @@
|
||||
<span v-if="item.days > 0">{{ item.days }}天</span>
|
||||
<van-tag type="primary" v-else>长期有效</van-tag>
|
||||
</van-cell>
|
||||
<van-cell title="对话次数">
|
||||
<span v-if="item.calls > 0">{{ item.calls }}</span>
|
||||
<span v-else>{{ vipMonthCalls }}</span>
|
||||
</van-cell>
|
||||
<van-cell title="绘图次数">
|
||||
<span v-if="item.img_calls > 0">{{ item.img_calls }}</span>
|
||||
<span v-else>{{ vipMonthImgCalls }}</span>
|
||||
<van-cell title="算力值">
|
||||
<span v-if="item.power > 0">{{ item.power }}</span>
|
||||
<span v-else>{{ vipMonthPower }}</span>
|
||||
</van-cell>
|
||||
</van-cell-group>
|
||||
</div>
|
||||
@ -140,8 +136,7 @@ const fileList = ref([
|
||||
]);
|
||||
|
||||
const products = ref([])
|
||||
const vipMonthCalls = ref(0)
|
||||
const vipMonthImgCalls = ref(0)
|
||||
const vipMonthPower = ref(0)
|
||||
const payWays = ref({})
|
||||
const router = useRouter()
|
||||
const loginUser = ref(null)
|
||||
@ -165,8 +160,7 @@ onMounted(() => {
|
||||
})
|
||||
|
||||
httpGet("/api/config/get?key=system").then(res => {
|
||||
vipMonthCalls.value = res.data['vip_month_calls']
|
||||
vipMonthImgCalls.value = res.data['vip_month_img_calls']
|
||||
vipMonthPower.value = res.data['vip_month_power']
|
||||
}).catch(e => {
|
||||
showFailToast("获取系统配置失败:" + e.message)
|
||||
})
|
||||
@ -255,6 +249,7 @@ const pay = (payWay, item) => {
|
||||
product_id: item.id,
|
||||
user_id: loginUser.value.id
|
||||
}).then(res => {
|
||||
// console.log(res.data)
|
||||
location.href = res.data
|
||||
}).catch(e => {
|
||||
showFailToast("生成支付订单失败:" + e.message)
|
||||
|
Loading…
Reference in New Issue
Block a user