Skip to content

Commit 876dfe2

Browse files
author
Matrix-X
committed
Merge remote-tracking branch 'origin/develop' into develop
2 parents f935d0a + fa59a10 commit 876dfe2

File tree

3 files changed

+85
-0
lines changed

3 files changed

+85
-0
lines changed

src/kernel/models/payment.go

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,3 +140,36 @@ type Amount struct {
140140
// 去掉非充值代金券退款金额后的退款金额,单位为分,退款金额=申请退款金额-非充值代金券退款金额,退款金额<=申请退款金额
141141

142142
}
143+
144+
// --- TransferBills models ----
145+
146+
const WX_TRANSFERBILLS_STATE_SUCCESS = "SUCCESS" // 转账成功
147+
const WX_TRANSFERBILLS_STATE_ACCEPTED = "ACCEPTED" // 单据已受理
148+
const WX_TRANSFERBILLS_STATE_NOTPAY = "PROCESSING" // 单据处理中
149+
const WX_TRANSFERBILLS_STATE_WAIT_USER_CONFIRM = "WAIT_USER_CONFIRM" // 待收款用户确认,可拉起微信收款确认页面进行收款确认
150+
const WX_TRANSFERBILLS_STATE_TRANSFERING = "TRANSFERING" // 转账中,转账结果尚未明确,可拉起微信收款确认页面再次重试确认收款
151+
const WX_TRANSFERBILLS_STATE_FAIL = "FAIL" // 转账失败
152+
const WX_TRANSFERBILLS_STATE_CANCELING = "CANCELING" // 撤销中
153+
const WX_TRANSFERBILLS_STATE_CANCELLED = "CANCELLED" // 已撤销
154+
155+
// TransferBills
156+
type TransferBills struct {
157+
// 商户单号:商户系统内部的商家单号,在商户系统内部唯一
158+
OutBillNo string `json:"out_bill_no"`
159+
// 商家转账订单号:微信单号,微信商家转账系统返回的唯一标识
160+
TransferBillNo string `json:"transfer_bill_no"`
161+
// 单据状态:商家转账订单状态
162+
State string `json:"state"`
163+
// 商户号:微信支付分配的商户号
164+
MchId string `json:"mch_id"`
165+
// 转账金额:转账总金额,单位为“分”
166+
TransferAmount int `json:"transfer_amount"`
167+
// 收款用户OpenID:用户在商户appid下的唯一标识
168+
OpenId string `json:"open_id"`
169+
// 失败原因:单已失败或者已退资金时,会返回订单失败原因
170+
FailReason string `json:"fail_reason"`
171+
// 单据创建时间:遵循rfc3339标准格式,格式为yyyy-MM-DDTHH:mm:ss+TIMEZONE
172+
CreateTime string `json:"create_time"`
173+
// 最后一次状态变更时间:遵循rfc3339标准格式,格式为yyyy-MM-DDTHH:mm:ss+TIMEZONE
174+
UpdateTime string `json:"update_time"`
175+
}

src/payment/application.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -361,6 +361,10 @@ func (app *Payment) HandleRefundedNotify(request *http.Request, closure func(mes
361361
return notify.NewRefundNotify(app, request).Handle(closure)
362362
}
363363

364+
func (app *Payment) HandleTransferBillsNotify(request *http.Request, closure func(message *request.RequestNotify, transaction *models.TransferBills, fail func(message string)) interface{}) (*http.Response, error) {
365+
return notify.NewTransferBillsNotify(app, request).Handle(closure)
366+
}
367+
364368
func (app *Payment) HandleScannedNotify(request *http.Request, closure func(message *request.RequestNotify, fail func(message string), alert func(message string)) interface{}) (*http.Response, error) {
365369
return notify.NewScannedNotify(app, request).Handle(closure)
366370
}

src/payment/notify/transfer_bills.go

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package notify
2+
3+
import (
4+
"github.com/ArtisanCloud/PowerLibs/v3/object"
5+
"github.com/ArtisanCloud/PowerWeChat/v3/src/kernel/models"
6+
"github.com/ArtisanCloud/PowerWeChat/v3/src/payment/kernel"
7+
"github.com/ArtisanCloud/PowerWeChat/v3/src/payment/notify/request"
8+
"net/http"
9+
)
10+
11+
type TransferBills struct {
12+
*Handler
13+
}
14+
15+
func NewTransferBillsNotify(app kernel.ApplicationPaymentInterface, request *http.Request) *TransferBills {
16+
17+
paid := &TransferBills{
18+
NewHandler(app, request),
19+
}
20+
21+
return paid
22+
}
23+
24+
func (comp *TransferBills) Handle(closure func(message *request.RequestNotify, refund *models.TransferBills, fail func(message string)) interface{}) (*http.Response, error) {
25+
26+
message, err := comp.GetMessage()
27+
if err != nil {
28+
return nil, err
29+
}
30+
31+
reqInfo, err := comp.reqInfo()
32+
if err != nil {
33+
return nil, err
34+
}
35+
36+
// struct the content
37+
transferBills := &models.TransferBills{}
38+
err = object.JsonDecode([]byte(reqInfo), transferBills)
39+
if err != nil {
40+
return nil, err
41+
}
42+
43+
result := closure(message, transferBills, comp.Fail)
44+
comp.Strict(result)
45+
46+
return comp.ToResponse()
47+
48+
}

0 commit comments

Comments
 (0)