From 805418866cd1638fdea88999f70d62444995ce6a Mon Sep 17 00:00:00 2001
From: Jerry <85411418@qq.com>
Date: Sat, 13 Apr 2024 23:43:27 +0800
Subject: [PATCH] update
---
alipay/marketing_api.go | 108 +++++++++++++++++++++++-
alipay/model_market.go | 177 ++++++++++++++++++++++++++++++++-------
alipay/model_smilepay.go | 41 +++++++++
alipay/request.go | 4 +-
alipay/smilepay.go | 51 +++++++++++
constant.go | 2 +-
doc/alipay.md | 149 ++++++++++++++++++++++----------
examples/main.go | 3 +-
go.mod | 4 +-
go.sum | 8 +-
release_note.txt | 20 +++++
11 files changed, 484 insertions(+), 83 deletions(-)
create mode 100644 alipay/model_smilepay.go
create mode 100644 alipay/smilepay.go
diff --git a/alipay/marketing_api.go b/alipay/marketing_api.go
index 04cee40d..b78e7ec1 100644
--- a/alipay/marketing_api.go
+++ b/alipay/marketing_api.go
@@ -4,6 +4,7 @@ import (
"context"
"encoding/json"
"fmt"
+ "strings"
"github.com/go-pay/gopay"
)
@@ -138,7 +139,6 @@ func (a *Client) MarketingCampaignCashDetailQuery(ctx context.Context, bm gopay.
if err = json.Unmarshal(bs, aliRsp); err != nil || aliRsp.Response == nil {
return nil, fmt.Errorf("[%w], bytes: %s", gopay.UnmarshalErr, string(bs))
}
- fmt.Println(err)
if err = bizErrCheck(aliRsp.Response.ErrorResponse); err != nil {
return aliRsp, err
}
@@ -146,3 +146,109 @@ func (a *Client) MarketingCampaignCashDetailQuery(ctx context.Context, bm gopay.
aliRsp.SignData = signData
return aliRsp, a.autoVerifySignByCert(aliRsp.Sign, signData, signDataErr)
}
+
+// alipay.marketing.activity.delivery.changed(推广计划状态变更消息)
+// 文档地址:https://opendocs.alipay.com/open/85544608_alipay.marketing.activity.delivery.changed
+func (a *Client) MarketingActivityDeliveryChanged(ctx context.Context, bm gopay.BodyMap) (success bool, err error) {
+ err = bm.CheckEmptyError("event_time", "delivery_id", "delivery_status", "delivery_error_msg", "delivery_booth_code")
+ if err != nil {
+ return false, err
+ }
+ bs, err := a.doAliPay(ctx, bm, "alipay.marketing.activity.delivery.changed")
+ if err != nil {
+ return false, err
+ }
+ if strings.Contains(string(bs), "success") {
+ return true, nil
+ }
+ return
+}
+
+// alipay.marketing.activity.delivery.stop(停止推广计划)
+// 文档地址:https://opendocs.alipay.com/open/39c69f03_alipay.marketing.activity.delivery.stop
+func (a *Client) MarketingActivityDeliveryStop(ctx context.Context, bm gopay.BodyMap) (aliRsp *MarketingActivityDeliveryStopRsp, err error) {
+ err = bm.CheckEmptyError("delivery_id", "out_biz_no", "merchant_access_mode")
+ if err != nil {
+ return nil, err
+ }
+ var bs []byte
+ if bs, err = a.doAliPay(ctx, bm, "alipay.marketing.activity.delivery.stop"); err != nil {
+ return nil, err
+ }
+ aliRsp = new(MarketingActivityDeliveryStopRsp)
+ if err = json.Unmarshal(bs, aliRsp); err != nil || aliRsp.Response == nil {
+ return nil, fmt.Errorf("[%w], bytes: %s", gopay.UnmarshalErr, string(bs))
+ }
+ if err = bizErrCheck(aliRsp.Response.ErrorResponse); err != nil {
+ return aliRsp, err
+ }
+ signData, signDataErr := a.getSignData(bs, aliRsp.AlipayCertSn)
+ aliRsp.SignData = signData
+ return aliRsp, a.autoVerifySignByCert(aliRsp.Sign, signData, signDataErr)
+}
+
+// alipay.marketing.activity.delivery.query(查询推广计划)
+// 文档地址:https://opendocs.alipay.com/open/69c6d6c2_alipay.marketing.activity.delivery.query
+func (a *Client) MarketingActivityDeliveryQuery(ctx context.Context, bm gopay.BodyMap) (aliRsp *MarketingActivityDeliveryQueryRsp, err error) {
+ err = bm.CheckEmptyError("delivery_id", "merchant_access_mode")
+ if err != nil {
+ return nil, err
+ }
+ var bs []byte
+ if bs, err = a.doAliPay(ctx, bm, "alipay.marketing.activity.delivery.query"); err != nil {
+ return nil, err
+ }
+ aliRsp = new(MarketingActivityDeliveryQueryRsp)
+ if err = json.Unmarshal(bs, aliRsp); err != nil || aliRsp.Response == nil {
+ return nil, fmt.Errorf("[%w], bytes: %s", gopay.UnmarshalErr, string(bs))
+ }
+ if err = bizErrCheck(aliRsp.Response.ErrorResponse); err != nil {
+ return aliRsp, err
+ }
+ signData, signDataErr := a.getSignData(bs, aliRsp.AlipayCertSn)
+ aliRsp.SignData = signData
+ return aliRsp, a.autoVerifySignByCert(aliRsp.Sign, signData, signDataErr)
+}
+
+// alipay.marketing.activity.delivery.create(创建推广计划)
+// 文档地址:https://opendocs.alipay.com/open/47498bf2_alipay.marketing.activity.delivery.create
+func (a *Client) MarketingActivityDeliveryCreate(ctx context.Context, bm gopay.BodyMap) (aliRsp *MarketingActivityDeliveryCreateRsp, err error) {
+ err = bm.CheckEmptyError("delivery_booth_code", "out_biz_no", "delivery_base_info", "delivery_play_config", "delivery_target_rule", "merchant_access_mode")
+ if err != nil {
+ return nil, err
+ }
+ var bs []byte
+ if bs, err = a.doAliPay(ctx, bm, "alipay.marketing.activity.delivery.create"); err != nil {
+ return nil, err
+ }
+ aliRsp = new(MarketingActivityDeliveryCreateRsp)
+ if err = json.Unmarshal(bs, aliRsp); err != nil || aliRsp.Response == nil {
+ return nil, fmt.Errorf("[%w], bytes: %s", gopay.UnmarshalErr, string(bs))
+ }
+ if err = bizErrCheck(aliRsp.Response.ErrorResponse); err != nil {
+ return aliRsp, err
+ }
+ signData, signDataErr := a.getSignData(bs, aliRsp.AlipayCertSn)
+ aliRsp.SignData = signData
+ return aliRsp, a.autoVerifySignByCert(aliRsp.Sign, signData, signDataErr)
+}
+
+// alipay.marketing.material.image.upload(营销图片资源上传接口)
+// 文档地址:https://opendocs.alipay.com/open/389b24b6_alipay.marketing.material.image.upload
+func (a *Client) MarketingMaterialImageUpload(ctx context.Context, bm gopay.BodyMap, file *gopay.File) (aliRsp *MarketingMaterialImageUploadRsp, err error) {
+ var bs []byte
+ if bs, err = a.FileRequest(ctx, bm, file, "alipay.marketing.material.image.upload"); err != nil {
+ return nil, err
+ }
+ aliRsp = new(MarketingMaterialImageUploadRsp)
+ if err = json.Unmarshal(bs, aliRsp); err != nil {
+ return nil, err
+ }
+ if aliRsp.Response != nil && aliRsp.Response.Code != "10000" {
+ info := aliRsp.Response
+ return aliRsp, fmt.Errorf(`{"code":"%s","msg":"%s","sub_code":"%s","sub_msg":"%s"}`, info.Code, info.Msg, info.SubCode, info.SubMsg)
+ }
+ signData, signDataErr := a.getSignData(bs, aliRsp.AlipayCertSn)
+ aliRsp.SignData = signData
+ return aliRsp, a.autoVerifySignByCert(aliRsp.Sign, signData, signDataErr)
+}
diff --git a/alipay/model_market.go b/alipay/model_market.go
index d25dd7b0..f03a6fb9 100644
--- a/alipay/model_market.go
+++ b/alipay/model_market.go
@@ -7,13 +7,6 @@ type MarketingCampaignCashCreateRsp struct {
Sign string `json:"sign"`
}
-type MarketingCampaignCashCreate struct {
- ErrorResponse
- CrowdNo string `json:"crowd_no"`
- PayURL string `json:"pay_url"`
- OriginCrowdNo string `json:"origin_crowd_no"`
-}
-
type MarketingCampaignCashTriggerRsp struct {
Response *MarketingCampaignCashTrigger `json:"alipay_marketing_campaign_cash_trigger_response"`
AlipayCertSn string `json:"alipay_cert_sn,omitempty"`
@@ -21,6 +14,64 @@ type MarketingCampaignCashTriggerRsp struct {
Sign string `json:"sign"`
}
+type MarketingCampaignCashStatusModifyRsp struct {
+ Response *MarketingCampaignCashStatusModify `json:"alipay_marketing_campaign_cash_status_modify_response"`
+ AlipayCertSn string `json:"alipay_cert_sn,omitempty"`
+ SignData string `json:"-"`
+ Sign string `json:"sign"`
+}
+
+type MarketingCampaignCashListQueryRsp struct {
+ Response *MarketingCampaignCashListQuery `json:"alipay_marketing_campaign_cash_list_query_response"`
+ AlipayCertSn string `json:"alipay_cert_sn,omitempty"`
+ SignData string `json:"-"`
+ Sign string `json:"sign"`
+}
+
+type MarketingCampaignCashDetailQueryRsp struct {
+ Response *MarketingCampaignCashDetailQuery `json:"alipay_marketing_campaign_cash_detail_query_response"`
+ AlipayCertSn string `json:"alipay_cert_sn,omitempty"`
+ SignData string `json:"-"`
+ Sign string `json:"sign"`
+}
+
+type MarketingActivityDeliveryStopRsp struct {
+ Response *MarketingActivityDeliveryStop `json:"alipay_marketing_activity_delivery_stop_response"`
+ AlipayCertSn string `json:"alipay_cert_sn,omitempty"`
+ SignData string `json:"-"`
+ Sign string `json:"sign"`
+}
+
+type MarketingActivityDeliveryQueryRsp struct {
+ Response *MarketingActivityDeliveryQuery `json:"alipay_marketing_activity_delivery_query_response"`
+ AlipayCertSn string `json:"alipay_cert_sn,omitempty"`
+ SignData string `json:"-"`
+ Sign string `json:"sign"`
+}
+
+type MarketingActivityDeliveryCreateRsp struct {
+ Response *MarketingActivityDeliveryCreate `json:"alipay_marketing_activity_delivery_create_response"`
+ AlipayCertSn string `json:"alipay_cert_sn,omitempty"`
+ SignData string `json:"-"`
+ Sign string `json:"sign"`
+}
+
+type MarketingMaterialImageUploadRsp struct {
+ Response *MarketingMaterialImageUpload `json:"alipay_marketing_material_image_upload_response"`
+ AlipayCertSn string `json:"alipay_cert_sn,omitempty"`
+ SignData string `json:"-"`
+ Sign string `json:"sign"`
+}
+
+// =========================================================分割=========================================================
+
+type MarketingCampaignCashCreate struct {
+ ErrorResponse
+ CrowdNo string `json:"crowd_no"`
+ PayURL string `json:"pay_url"`
+ OriginCrowdNo string `json:"origin_crowd_no"`
+}
+
type MarketingCampaignCashTrigger struct {
ErrorResponse
TriggerResult string `json:"trigger_result"`
@@ -35,24 +86,10 @@ type MarketingCampaignCashTrigger struct {
OutBizNo string `json:"out_biz_no"`
}
-type MarketingCampaignCashStatusModifyRsp struct {
- Response *MarketingCampaignCashStatusModify `json:"alipay_marketing_campaign_cash_status_modify_response"`
- AlipayCertSn string `json:"alipay_cert_sn,omitempty"`
- SignData string `json:"-"`
- Sign string `json:"sign"`
-}
-
type MarketingCampaignCashStatusModify struct {
ErrorResponse
}
-type MarketingCampaignCashListQueryRsp struct {
- Response *MarketingCampaignCashListQuery `json:"alipay_marketing_campaign_cash_list_query_response"`
- AlipayCertSn string `json:"alipay_cert_sn,omitempty"`
- SignData string `json:"-"`
- Sign string `json:"sign"`
-}
-
type MarketingCampaignCashListQuery struct {
ErrorResponse
PageSize string `json:"page_size"`
@@ -68,13 +105,6 @@ type CashCampaignInfo struct {
CouponName string `json:"coupon_name"`
}
-type MarketingCampaignCashDetailQueryRsp struct {
- Response *MarketingCampaignCashDetailQuery `json:"alipay_marketing_campaign_cash_detail_query_response"`
- AlipayCertSn string `json:"alipay_cert_sn,omitempty"`
- SignData string `json:"-"`
- Sign string `json:"sign"`
-}
-
type MarketingCampaignCashDetailQuery struct {
ErrorResponse
CrowdNo string `json:"crowd_no"`
@@ -90,3 +120,94 @@ type MarketingCampaignCashDetailQuery struct {
OriginCrowdNo string `json:"origin_crowd_no"`
CampStatus string `json:"camp_status"`
}
+
+type MarketingActivityDeliveryStop struct {
+ ErrorResponse
+ DeliveryId string `json:"delivery_id"`
+}
+
+type MarketingActivityDeliveryQuery struct {
+ ErrorResponse
+ DeliveryId string `json:"delivery_id"`
+ DeliveryStatus string `json:"delivery_status"`
+ DeliveryBoothCode string `json:"delivery_booth_code"`
+ DeliveryErrorMsg string `json:"delivery_error_msg"`
+ DeliveryBaseInfo *DeliveryBaseInfo `json:"delivery_base_info"`
+ DeliveryPlayConfig *DeliveryPlayConfig `json:"delivery_play_config"`
+ DeliveryTargetRule *DeliveryTargetRule `json:"delivery_target_rule"`
+}
+
+type DeliveryBaseInfo struct {
+ DeliveryName string `json:"delivery_name"`
+ DeliveryBeginTime string `json:"delivery_begin_time"`
+ DeliveryEndTime string `json:"delivery_end_time"`
+}
+
+type DeliveryPlayConfig struct {
+ DeliverySingleSendConfig *DeliverySingleSendConfig `json:"delivery_single_send_config"`
+ DeliveryFullSendConfig *DeliveryFullSendConfig `json:"delivery_full_send_config"`
+}
+
+type DeliverySingleSendConfig struct {
+ DeliveryContentInfo *DeliveryContentInfo `json:"delivery_content_info"`
+}
+
+type DeliveryFullSendConfig struct {
+ DeliveryFloorAmount string `json:"delivery_floor_amount"`
+ DeliveryContentInfo *DeliveryContentInfo `json:"delivery_content_info"`
+}
+
+type DeliveryContentInfo struct {
+ DeliveryContentType string `json:"delivery_content_type"`
+ DeliveryActivityContent *DeliveryActivityContent `json:"delivery_activity_content"`
+ DeliveryAppContent *DeliveryAppContent `json:"delivery_app_content"`
+ DeliveryDisplayInfo *DeliveryDisplayInfo `json:"delivery_display_info"`
+}
+
+type DeliveryActivityContent struct {
+ ActivityId string `json:"activity_id"`
+}
+
+type DeliveryAppContent struct {
+ MiniAppId string `json:"mini_app_id"`
+ ServiceCodeList []string `json:"service_code_list"`
+ MiniAppDeliveryType string `json:"mini_app_delivery_type"`
+}
+
+type DeliveryDisplayInfo struct {
+ MainTitle string `json:"main_title"`
+ SubTitle string `json:"sub_title"`
+}
+
+type DeliveryTargetRule struct {
+ DeliveryMerchantRule *DeliveryMerchantRule `json:"delivery_merchant_rule"`
+ DeliveryCityCodeRule *DeliveryCityCodeRule `json:"delivery_city_code_rule"`
+ DeliveryPromoTags string `json:"delivery_promo_tags"`
+}
+
+type DeliveryMerchantRule struct {
+ DeliveryMerchantMode string `json:"delivery_merchant_mode"`
+ DeliveryMerchantInfos []*DeliveryMerchantInfo `json:"delivery_merchant_infos"`
+}
+
+type DeliveryMerchantInfo struct {
+ MerchantIdType string `json:"merchant_id_type"`
+ MerchantId string `json:"merchant_id"`
+}
+
+type DeliveryCityCodeRule struct {
+ CityCodes []string `json:"city_codes"`
+ AllCity bool `json:"all_city"`
+}
+
+type MarketingActivityDeliveryCreate struct {
+ ErrorResponse
+ DeliveryId string `json:"delivery_id"`
+}
+
+type MarketingMaterialImageUpload struct {
+ ErrorResponse
+ ResourceId string `json:"resource_id"`
+ ResourceEnhance bool `json:"resource_enhance"`
+ ResourceUrl string `json:"resource_url"`
+}
diff --git a/alipay/model_smilepay.go b/alipay/model_smilepay.go
new file mode 100644
index 00000000..6737d448
--- /dev/null
+++ b/alipay/model_smilepay.go
@@ -0,0 +1,41 @@
+package alipay
+
+type ZolozAuthenticationSmilepayInitializeRsp struct {
+ Response *ZolozAuthenticationSmilepayInitialize `json:"zoloz_authentication_smilepay_initialize_response"`
+ AlipayCertSn string `json:"alipay_cert_sn,omitempty"`
+ SignData string `json:"-"`
+ Sign string `json:"sign"`
+}
+
+type ZolozAuthenticationCustomerFtokenQueryRsp struct {
+ Response *ZolozAuthenticationCustomerFtokenQuery `json:"zoloz_authentication_customer_ftoken_query_response"`
+ AlipayCertSn string `json:"alipay_cert_sn,omitempty"`
+ SignData string `json:"-"`
+ Sign string `json:"sign"`
+}
+
+// =========================================================分割=========================================================
+
+type ZolozAuthenticationSmilepayInitialize struct {
+ ErrorResponse
+ RetCodeSub string `json:"ret_code_sub"`
+ RetMessageSub string `json:"ret_message_sub"`
+ ZimId string `json:"zim_id"`
+ ZimInitClientData string `json:"zim_init_client_data"`
+}
+
+type ZolozAuthenticationCustomerFtokenQuery struct {
+ ErrorResponse
+ Uid string `json:"uid"`
+ OpenId string `json:"open_id"`
+ UidTelPairList []*UidTelPair `json:"uid_tel_pair_list"`
+ AgeCheckResult string `json:"age_check_result"`
+ CertNo string `json:"cert_no"`
+ CertName string `json:"cert_name"`
+ FaceId string `json:"face_id"`
+}
+
+type UidTelPair struct {
+ UserId string `json:"user_id"`
+ OpenId string `json:"open_id"`
+}
diff --git a/alipay/request.go b/alipay/request.go
index 5b8a7200..4901ab15 100644
--- a/alipay/request.go
+++ b/alipay/request.go
@@ -317,11 +317,9 @@ func (a *Client) FileRequest(ctx context.Context, bm gopay.BodyMap, file *gopay.
if a.location != nil {
pubBody.Set("timestamp", time.Now().In(a.location).Format(xtime.TimeLayout))
}
- if a.NotifyUrl != gopay.NULL { //如果返回url为空,传过来的返回url不为空
- //fmt.Println("url不为空?", a.NotifyUrl)
+ if a.NotifyUrl != gopay.NULL {
pubBody.Set("notify_url", a.NotifyUrl)
}
- //fmt.Println("notify,", pubBody.JsonBody())
if a.AppAuthToken != gopay.NULL {
pubBody.Set("app_auth_token", a.AppAuthToken)
}
diff --git a/alipay/smilepay.go b/alipay/smilepay.go
new file mode 100644
index 00000000..14bcabe7
--- /dev/null
+++ b/alipay/smilepay.go
@@ -0,0 +1,51 @@
+package alipay
+
+import (
+ "context"
+ "encoding/json"
+ "fmt"
+
+ "github.com/go-pay/gopay"
+)
+
+// zoloz.authentication.smilepay.initialize(刷脸支付初始化)
+// 文档地址:https://opendocs.alipay.com/open/2f7c1d5f_zoloz.authentication.smilepay.initialize
+func (a *Client) ZolozAuthenticationSmilepayInitialize(ctx context.Context, bm gopay.BodyMap) (aliRsp *ZolozAuthenticationSmilepayInitializeRsp, err error) {
+ var bs []byte
+ if bs, err = a.doAliPay(ctx, bm, "zoloz.authentication.smilepay.initialize"); err != nil {
+ return nil, err
+ }
+ aliRsp = new(ZolozAuthenticationSmilepayInitializeRsp)
+ if err = json.Unmarshal(bs, aliRsp); err != nil || aliRsp.Response == nil {
+ return nil, fmt.Errorf("[%w], bytes: %s", gopay.UnmarshalErr, string(bs))
+ }
+ if err = bizErrCheck(aliRsp.Response.ErrorResponse); err != nil {
+ return aliRsp, err
+ }
+ signData, signDataErr := a.getSignData(bs, aliRsp.AlipayCertSn)
+ aliRsp.SignData = signData
+ return aliRsp, a.autoVerifySignByCert(aliRsp.Sign, signData, signDataErr)
+}
+
+// zoloz.authentication.customer.ftoken.query(查询刷脸结果信息接口)
+// 文档地址:https://opendocs.alipay.com/open/c8e4d285_zoloz.authentication.customer.ftoken.query
+func (a *Client) ZolozAuthenticationCustomerFtokenQuery(ctx context.Context, bm gopay.BodyMap) (aliRsp *ZolozAuthenticationCustomerFtokenQueryRsp, err error) {
+ err = bm.CheckEmptyError("ftoken", "biz_type")
+ if err != nil {
+ return nil, err
+ }
+ var bs []byte
+ if bs, err = a.doAliPay(ctx, bm, "zoloz.authentication.customer.ftoken.query"); err != nil {
+ return nil, err
+ }
+ aliRsp = new(ZolozAuthenticationCustomerFtokenQueryRsp)
+ if err = json.Unmarshal(bs, aliRsp); err != nil || aliRsp.Response == nil {
+ return nil, fmt.Errorf("[%w], bytes: %s", gopay.UnmarshalErr, string(bs))
+ }
+ if err = bizErrCheck(aliRsp.Response.ErrorResponse); err != nil {
+ return aliRsp, err
+ }
+ signData, signDataErr := a.getSignData(bs, aliRsp.AlipayCertSn)
+ aliRsp.SignData = signData
+ return aliRsp, a.autoVerifySignByCert(aliRsp.Sign, signData, signDataErr)
+}
diff --git a/constant.go b/constant.go
index 5b24a40f..817acf5e 100644
--- a/constant.go
+++ b/constant.go
@@ -7,7 +7,7 @@ const (
OK = "OK"
DebugOff = 0
DebugOn = 1
- Version = "1.5.100"
+ Version = "1.5.101"
)
type DebugSwitch int8
diff --git a/doc/alipay.md b/doc/alipay.md
index 5bb3a466..530fe027 100644
--- a/doc/alipay.md
+++ b/doc/alipay.md
@@ -225,37 +225,115 @@ xlog.Infof("%+v", phone)
* 支付宝接口自行实现方法:`client.PostAliPayAPISelfV2()`
* 支付产品
+ * 当面付
+ * 付款码支付接口(商家扫用户付款码):`client.TradePay()`
+ * 统一收单线下交易预创建接口(用户扫商品收款码):`client.TradePrecreate()`
* App支付
* APP支付接口2.0(APP支付):`client.TradeAppPay()`
* 手机网站支付
* 手机网站支付接口2.0(手机网站支付):`client.TradeWapPay()`
* 电脑网站支付
* 统一收单下单并支付页面接口(电脑网站支付):`client.TradePagePay()`
- * 资金预授权
+ * 刷脸付
+ * 刷脸支付初始化接口:`client.ZolozAuthenticationSmilepayInitialize()`
+ * 查询刷脸结果信息接口:`client.ZolozAuthenticationCustomerFtokenQuery()`
+ * 预授权支付
* 线上资金授权冻结接口:`client:FundAuthOrderAppFreeze()`
- * 资金授权冻结接口:`client.FundAuthOrderFreeze()`
- * 资金授权发码接口:`client.FundAuthOrderVoucherCreate()`
* 资金授权操作查询接口:`client.FundAuthOperationDetailQuery()`
- * 资金授权解冻接口:`client.FundAuthOrderUnfreeze()`
* 资金授权撤销接口:`client.FundAuthOperationCancel()`
- * 当面付
- * 付款码支付接口(商家扫用户付款码):`client.TradePay()`
- * 统一收单线下交易预创建接口(用户扫商品收款码):`client.TradePrecreate()`
- * 统一收单交易创建接口:`client.TradeCreate()`
- * 统一收单交易订单支付接口:TODO:https://opendocs.alipay.com/open/03vtew
- * 统一收单线下交易查询: `client.TradeQuery()`
- * 统一收单交易退款接口: `client.TradeRefund()`
- * 统一收单交易退款查询: `client.TradeFastPayRefundQuery()`
- * 统一收单交易关闭接口: `client.TradeClose()`
- * 统一收单交易撤销接口: `client.TradeCancel()`
- * ~~统一收单退款页面接口: `client.TradePageRefund()`~~
- * 支付宝订单信息同步接口: `client.TradeOrderInfoSync()`
+ * 资金授权解冻接口:`client.FundAuthOrderUnfreeze()`
+ * 资金授权发码接口:`client.FundAuthOrderVoucherCreate()`
+ * 资金授权冻结接口:`client.FundAuthOrderFreeze()`
+ * 交易
+ * 统一收单交易创建接口:`client.TradeCreate()`
+ * 统一收单交易订单支付接口:TODO:https://opendocs.alipay.com/open/03vtew
+ * 统一收单线下交易查询: `client.TradeQuery()`
+ * 统一收单交易退款接口: `client.TradeRefund()`
+ * 统一收单交易退款查询: `client.TradeFastPayRefundQuery()`
+ * 统一收单交易关闭接口: `client.TradeClose()`
+ * 统一收单交易撤销接口: `client.TradeCancel()`
+ * 支付宝订单信息同步接口: `client.TradeOrderInfoSync()`
+ * 账单
+ * 查询对账单下载地址:`client.DataBillDownloadUrlQuery()`
+ * 商家分账
+ * 分账关系维护
+ * 分账关系绑定接口:`client.TradeRelationBind()`
+ * 分账关系解绑接口:`client.TradeRelationUnbind()`
+ * 分账关系查询接口:`client.TradeRelationBatchQuery()`
+ * 分账请求
+ * 统一收单交易结算接口:`client.TradeOrderSettle()`
+ * 统一收单确认结算接口:`client.TradeSettleConfirm()`
+ * 分账查询
+ * 分账比例查询:`client.TradeRoyaltyRateQuery()`
+ * 分账剩余金额查询:`client.TradeOrderOnSettleQuery()`
+ * 交易分账查询接口:`client.TradeOrderSettleQuery()`
+ * 商家扣款
+ * 支付宝个人协议页面签约接口: `client.UserAgreementPageSign()`
+ * 支付宝个人协议页面签约接口(App 专用,生成唤醒签约页面链接): `client.UserAgreementPageSignInApp()`
+ * 支付宝个人代扣协议查询接口: `client.UserAgreementQuery()`
+ * 支付宝个人代扣协议解约接口: `client.UserAgreementPageUnSign()`
+ * 周期性扣款协议执行计划修改接口: `client.UserAgreementExecutionplanModify()`
+* 私域产品
+ * 支付有礼
+ * 推广计划
+* 公域产品
+ * 经营推广
+ * 推广计划
+ * 推广计划状态变更消息接口:`client.MarketingActivityDeliveryChanged()`
+ * 创建推广计划接口:`client.MarketingActivityDeliveryCreate()`
+ * 查询推广计划接口:`client.MarketingActivityDeliveryQuery()`
+ * 停止推广计划接口:`client.MarketingActivityDeliveryStop()`
+ * 营销图片资源上传接口:`client.MarketingMaterialImageUpload()`
* 营销产品
- * 创建现金活动接口:TODO:https://opendocs.alipay.com/open/029yy9
- * 触发现金红包活动接口:TODO:https://opendocs.alipay.com/open/029yya
- * 更改现金活动状态接口:TODO:https://opendocs.alipay.com/open/029yyb
- * 现金活动列表查询接口:TODO:https://opendocs.alipay.com/open/02a1f9
- * 现金活动详情查询接口:TODO:https://opendocs.alipay.com/open/02a1fa
+ * 支付券
+ * 创建支付券接口:TODO:https://opendocs.alipay.com/open/049d65
+ * 激活支付券接口:TODO:https://opendocs.alipay.com/open/049d66
+ * 查询支付券详情接口:TODO:https://opendocs.alipay.com/open/049d6g
+ * 修改支付券基本信息接口:TODO:https://opendocs.alipay.com/open/049d67
+ * 追加支付券预算接口:TODO:https://opendocs.alipay.com/open/049d68
+ * 停止支付券接口:TODO:https://opendocs.alipay.com/open/049d69
+ * 券活动创建通知接口:TODO:https://opendocs.alipay.com/open/049d6a
+ * 券活动修改通知接口:TODO:https://opendocs.alipay.com/open/049d6b
+ * 券活动停止通知接口:TODO:https://opendocs.alipay.com/open/049d6c
+ * 券活动预算追加通知接口:TODO:https://opendocs.alipay.com/open/049d6d
+ * 私域营销
+ * 条件查询活动列表接口:TODO:https://opendocs.alipay.com/open/04fgw9
+ * 活动领取咨询接口:TODO:https://opendocs.alipay.com/open/04fgwa
+ * 查询活动详情接口:TODO:https://opendocs.alipay.com/open/04fgwb
+ * 查询活动可用商户接口:TODO:https://opendocs.alipay.com/open/04fgwc
+ * 查询活动可用小程序接口:TODO:https://opendocs.alipay.com/open/04fgwd
+ * 查询活动可用门店接口:TODO:https://opendocs.alipay.com/open/04fgwe
+ * 查询活动适用商品接口:TODO:https://opendocs.alipay.com/open/04fgwf
+ * 条件查询用户券接口:TODO:https://opendocs.alipay.com/open/04fgwg
+ * 查询用户券详情接口:TODO:https://opendocs.alipay.com/open/04fgwh
+ * 订单优惠前置咨询接口:TODO:https://opendocs.alipay.com/open/04fgwi
+ * 券领取通知接口:TODO:https://opendocs.alipay.com/open/049d6f
+ * 券核销消息接口:TODO:https://opendocs.alipay.com/open/049d6e
+ * 券过期消息接口:TODO:https://opendocs.alipay.com/open/04fgwj
+ * 蚂蚁门店管理
+ * 蚂蚁店铺创建接口: `client.AntMerchantShopCreate()`
+ * 店铺保存审核通过消息接口:TODO:https://opendocs.alipay.com/open/04fgwm
+ * 店铺保存拒绝消息:TODO:https://opendocs.alipay.com/open/04fgwn
+ * 修改蚂蚁店铺接口: `client.AntMerchantShopModify()`
+ * 商户申请单查询接口: `client.AntMerchantOrderQuery()`
+ * 店铺分页查询接口:TODO:https://opendocs.alipay.com/open/04fgwq
+ * 店铺查询接口:`client.AntMerchantShopQuery()`
+ * 蚂蚁店铺关闭接口:`client.AntMerchantShopClose()`
+ * 图片上传接口:TODO:https://opendocs.alipay.com/open/04fgwt
+ * 商户mcc信息查询接口:TODO:https://opendocs.alipay.com/open/04fgwu
+ * 商家券 2.0
+ * todo:白天继续整理:
+ *
+ *
+ *
+ *
+ *
+ *
+ * 创建现金活动接口:TODO:https://opendocs.alipay.com/open/029yy9
+ * 触发现金红包活动接口:TODO:https://opendocs.alipay.com/open/029yya
+ * 更改现金活动状态接口:TODO:https://opendocs.alipay.com/open/029yyb
+ * 现金活动列表查询接口:TODO:https://opendocs.alipay.com/open/02a1f9
+ * 现金活动详情查询接口:TODO:https://opendocs.alipay.com/open/02a1fa
* 会员产品
* App支付宝登录
* 换取授权访问令牌接口:`client.SystemOauthToken()`
@@ -337,12 +415,12 @@ xlog.Infof("%+v", phone)
* 口碑凭证延期接口: `client.KoubeiTradeTicketTicketcodeDelay()`
* 口碑凭证码查询: `client.KoubeiTradeTicketTicketcodeQuery()`
* 口碑凭证码撤销核销: `client.KoubeiTradeTicketTicketcodeCancel()`
- * 修改蚂蚁店铺: `client.AntMerchantShopModify()`
- * 蚂蚁店铺创建: `client.AntMerchantShopCreate()`
+ *
+ *
* 蚂蚁店铺创建咨询: `client.AntMerchantShopConsult()`
- * 商户申请单查询: `client.AntMerchantOrderQuery()`
- * 店铺查询接口: `client.AntMerchantShopQuery()`
- * 蚂蚁店铺关闭: `client.AntMerchantShopClose()`
+ *
+ *
+ *
* 申请权益发放: `client.CommerceBenefitApply()`
* 权益核销: `client.CommerceBenefitVerify()`
* 还款账单查询: `client.TradeRepaybillQuery()`
@@ -351,11 +429,9 @@ xlog.Infof("%+v", phone)
* 身份认证初始化服务接口: `client.UserCertifyOpenInit()`
* 身份认证开始认证: `client.UserCertifyOpenCertify()`
* 会员
- * 支付宝个人协议页面签约接口: `client.UserAgreementPageSign()`
- * 支付宝个人协议页面签约接口(App 专用,生成唤醒签约页面链接): `client.UserAgreementPageSignInApp()`
- * 支付宝个人代扣协议解约接口: `client.UserAgreementPageUnSign()`
- * 支付宝个人代扣协议查询接口: `client.UserAgreementQuery()`
- * 周期性扣款协议执行计划修改接口: `client.UserAgreementExecutionplanModify()`
+
+
+
* 协议由普通通用代扣协议产品转移到周期扣协议产品: `client.UserAgreementTransfer()`
* 通用当面付二阶段接口: `client.UserTwostageCommonUse()`
* 芝麻企业征信基于身份的协议授权: `client.UserAuthZhimaorgIdentityApply()`
@@ -380,17 +456,6 @@ xlog.Infof("%+v", phone)
* 加入信用服务: `clinet.ZhimaCreditEpSceneAgreementUse()`
* 取消信用服务: `client.ZhimaCreditEpSceneAgreementCancel()`
* 信用服务履约同步(批量): `client.ZhimaCreditEpSceneFulfillmentlistSync()`
-* 对账
- * 查询对账单下载地址:`client.DataBillDownloadUrlQuery()`
-* 商家分账
- * 分账关系绑定接口:`client.TradeRelationBind()`
- * 分账关系解绑接口:`client.TradeRelationUnbind()`
- * 分账关系查询接口:`client.TradeRelationBatchQuery()`
- * 统一收单交易结算接口:`client.TradeOrderSettle()`
- * 统一收单确认结算接口:`client.TradeSettleConfirm()`
- * 交易分账查询接口:`client.TradeOrderSettleQuery()`
- * 分账剩余金额查询:`client.TradeOrderOnSettleQuery()`
- * 分账比例查询:`client.TradeRoyaltyRateQuery()`
### 支付宝公共 API
diff --git a/examples/main.go b/examples/main.go
index 434400cc..74452562 100644
--- a/examples/main.go
+++ b/examples/main.go
@@ -2,7 +2,6 @@ package main
import (
"context"
- "fmt"
"github.com/go-pay/gopay"
"github.com/go-pay/gopay/alipay"
@@ -28,5 +27,5 @@ func main() {
bm.Set("out_request_no", "20210402133958511778570101")
bm.Set("remark", "测试取消")
rs, err := client.FundAuthOperationCancel(context.Background(), bm)
- fmt.Println(rs, err)
+ xlog.Infof("rs:%v, err:%+v", rs, err)
}
diff --git a/go.mod b/go.mod
index 391a719a..1970a302 100644
--- a/go.mod
+++ b/go.mod
@@ -9,7 +9,7 @@ require (
github.com/go-pay/xhttp v0.0.2
github.com/go-pay/xlog v0.0.2
github.com/go-pay/xtime v0.0.2
- golang.org/x/crypto v0.20.0
+ golang.org/x/crypto v0.22.0
)
-require github.com/go-pay/bm v0.0.1 // indirect
+require github.com/go-pay/bm v0.0.2 // indirect
diff --git a/go.sum b/go.sum
index 964e7fdb..7d6fafa7 100644
--- a/go.sum
+++ b/go.sum
@@ -1,5 +1,5 @@
-github.com/go-pay/bm v0.0.1 h1:F2d1KhrupJr7yGPCQTVeYjeOJwN35WhoofopSm6undY=
-github.com/go-pay/bm v0.0.1/go.mod h1:/6bIb0yBj8JbATmE+ib41me4RikMGN3f/XSDF5FjsPQ=
+github.com/go-pay/bm v0.0.2 h1:CLa5hNTIm6uv8HSWGWd4moZbuOzQqJo5HcScXBBSY/E=
+github.com/go-pay/bm v0.0.2/go.mod h1:nyglxC5YS4+gVaO9TxLMI0I/naFUqwffdt5n6llM8uM=
github.com/go-pay/crypto v0.0.1 h1:B6InT8CLfSLc6nGRVx9VMJRBBazFMjr293+jl0lLXUY=
github.com/go-pay/crypto v0.0.1/go.mod h1:41oEIvHMKbNcYlWUlRWtsnC6+ASgh7u29z0gJXe5bes=
github.com/go-pay/errgroup v0.0.2 h1:5mZMdm0TDClDm2S3G0/sm0f8AuQRtz0dOrTHDR9R8Cc=
@@ -12,5 +12,5 @@ github.com/go-pay/xlog v0.0.2 h1:kUg5X8/5VZAPDg1J5eGjA3MG0/H5kK6Ew0dW/Bycsws=
github.com/go-pay/xlog v0.0.2/go.mod h1:DbjMADPK4+Sjxj28ekK9goqn4zmyY4hql/zRiab+S9E=
github.com/go-pay/xtime v0.0.2 h1:7YR4/iuELsEHpJ6LUO0SVK80hQxDO9MLCfuVYIiTCRM=
github.com/go-pay/xtime v0.0.2/go.mod h1:W1yRbJaSt4CSBcdAtLBQ8xajiN/Pl5hquGczUcUE9xE=
-golang.org/x/crypto v0.20.0 h1:jmAMJJZXr5KiCw05dfYK9QnqaqKLYXijU23lsEdcQqg=
-golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ=
+golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30=
+golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M=
diff --git a/release_note.txt b/release_note.txt
index 7404c595..ff2d6e2c 100644
--- a/release_note.txt
+++ b/release_note.txt
@@ -6,6 +6,26 @@
(4) 微信V3:修改 wechat.V3DecryptNotifyCipherText() -> wechat.V3DecryptPayNotifyCipherText(),解密 普通支付 回调中的加密信息
(5) 微信V3:修改 wechat.DecryptPartnerCipherText() -> wechat.DecryptPartnerPayCipherText(),解密 普通支付 回调中的加密信息
(6) 微信V3:新增 wechat.V3DecryptNotifyCipherTextToStruct(),解密 统一数据 到指针结构体对象。
+ (7) gopay:golang.org/x/crypto v0.20.0 版本升级到 v0.22.0。
+ (8) 支付宝:新增 client.ZolozAuthenticationSmilepayInit(),刷脸支付初始化接口。
+ (9) 支付宝:新增 client.ZolozAuthenticationCustomerFtokenQuery(),查询刷脸结果信息接口。
+ (10) 支付宝:新增 client.MarketingActivityDeliveryChanged(),推广计划状态变更消息接口。
+ (11) 支付宝:新增 client.MarketingActivityDeliveryCreate(),创建推广计划接口。
+ (12) 支付宝:新增 client.MarketingActivityDeliveryQuery(),查询推广计划接口。
+ (13) 支付宝:新增 client.MarketingActivityDeliveryStop(),停止推广计划接口。
+ (14) 支付宝:新增 client.MarketingMaterialImageUpload(),营销图片资源上传接口。
+
+
+ (15) 支付宝:新增 client.ZolozAuthenticationCustomerSmilepayQuery(),刷脸支付初始化接口。
+ (16) 支付宝:新增 client.ZolozAuthenticationCustomerSmilepayQuery(),刷脸支付初始化接口。
+ (17) 支付宝:新增 client.ZolozAuthenticationCustomerSmilepayQuery(),刷脸支付初始化接口。
+ (18) 支付宝:新增 client.ZolozAuthenticationCustomerSmilepayQuery(),刷脸支付初始化接口。
+ (19) 支付宝:新增 client.ZolozAuthenticationCustomerSmilepayQuery(),刷脸支付初始化接口。
+ (20) 支付宝:新增 client.ZolozAuthenticationCustomerSmilepayQuery(),刷脸支付初始化接口。
+ (21) 支付宝:新增 client.ZolozAuthenticationCustomerSmilepayQuery(),刷脸支付初始化接口。
+ (22) 支付宝:新增 client.ZolozAuthenticationCustomerSmilepayQuery(),刷脸支付初始化接口。
+ (23) 支付宝:新增 client.ZolozAuthenticationCustomerSmilepayQuery(),刷脸支付初始化接口。
+ (24) 支付宝:新增 client.ZolozAuthenticationCustomerSmilepayQuery(),刷脸支付初始化接口。
版本号:Release 1.5.100
修改记录: