@@ -7,22 +7,22 @@ const SignType = "RSA2" | |||||
const CreateBocCashier = "CreateBocCashier" //【中銀收銀台】創建支付交易 | const CreateBocCashier = "CreateBocCashier" //【中銀收銀台】創建支付交易 | ||||
const CreateAASAppTrade = "CreateAASAppTrade" //【中銀收银台】聚合APP支付統一下單 | const CreateAASAppTrade = "CreateAASAppTrade" //【中銀收银台】聚合APP支付統一下單 | ||||
const CardBinding = "CardBinding " //【商戶收銀台】银行卡綁定 | |||||
const CardBindingQueryList = "CardBindingQueryList " //【商戶收銀台】查询绑定银行卡列表 | |||||
const RemoveBankCard = "removeBankCard " //【商戶收銀台】移除綁定銀行卡 | |||||
const CardBindingNotify = "CardBindingNotify " //【商戶收銀台】银行卡绑定结果后台通知 | |||||
const CreateEMVTrade = "CreateEMVTrade " //【商戶收銀台】創建EMV二维码支付交易 | |||||
const CreateCardTrade = "CreateCardTrade " //【商戶收銀台】創建银行卡交易 | |||||
const CreateQRTrade = "CreateQRTrade " //【商戶收銀台】創建聚合碼支付交易 | |||||
const CreateWeChatTrade = "CreateWeChatTrade" //【商户收银台】微信公众号/小程序支付统一下单 | |||||
const CreateBocPayAppTrade = "CreateBocPayAppTrade" //【商户收银台】手機銀行APP支付統一下單 | |||||
const CreateWeChatAppTrade = "CreateWeChatAppTrade" //【商户收银台】微信APP支付統一下單 | |||||
const CreateAlipayAppTrade = "CreateAlipayAppTrade" //【商户收银台】支付寶APP支付統一下單 | |||||
const CardBinding = "CardBinding" //【商戶收銀台】银行卡綁定 | |||||
const CardBindingQueryList = "CardBindingQueryList" //【商戶收銀台】查询绑定银行卡列表 | |||||
const RemoveBankCard = "removeBankCard" //【商戶收銀台】移除綁定銀行卡 | |||||
const CardBindingNotify = "CardBindingNotify" //【商戶收銀台】银行卡绑定结果后台通知 | |||||
const CreateEMVTrade = "CreateEMVTrade" //【商戶收銀台】創建EMV二维码支付交易 | |||||
const CreateCardTrade = "CreateCardTrade" //【商戶收銀台】創建银行卡交易 | |||||
const CreateQRTrade = "CreateQRTrade" //【商戶收銀台】創建聚合碼支付交易 | |||||
const CreateWeChatTrade = "CreateWeChatTrade" //【商户收银台】微信公众号/小程序支付统一下单 | |||||
const CreateBocPayAppTrade = "CreateBocPayAppTrade" //【商户收银台】手機銀行APP支付統一下單 | |||||
const CreateWeChatAppTrade = "CreateWeChatAppTrade" //【商户收银台】微信APP支付統一下單 | |||||
const CreateAlipayAppTrade = "CreateAlipayAppTrade" //【商户收银台】支付寶APP支付統一下單 | |||||
const OrderRefund = "OrderRefund " //【基礎服務】退款 | |||||
const OrderQuery = "OrderQuery " //【基礎服務】訂單查詢 | |||||
const OfflineResult = "OfflineResult " //【基礎服務】支付結果後台通知 | |||||
const PageResult = "PageResult " //【基礎服務】支付結果頁面通知 | |||||
const Statement = "Statement " //【基礎服務】對賬文件下載 | |||||
const Settlement = "Settlement " //【基礎服務】結算單下載 | |||||
const OrderRelationQuery = "OrderRelationQuery " //【基礎服務】訂單关联查詢 | |||||
const OrderRefund = "OrderRefund" //【基礎服務】退款 | |||||
const OrderQuery = "OrderQuery" //【基礎服務】訂單查詢 | |||||
const OfflineResult = "OfflineResult" //【基礎服務】支付結果後台通知 | |||||
const PageResult = "PageResult" //【基礎服務】支付結果頁面通知 | |||||
const Statement = "Statement" //【基礎服務】對賬文件下載 | |||||
const Settlement = "Settlement" //【基礎服務】結算單下載 | |||||
const OrderRelationQuery = "OrderRelationQuery" //【基礎服務】訂單关联查詢 |
@@ -98,3 +98,31 @@ func CreateWeChatTradeReq(prd bool, privateKeyStr, merchantId, terminalNo string | |||||
resp, _ := php2go.URLDecode(send) | resp, _ := php2go.URLDecode(send) | ||||
return resp, nil | return resp, nil | ||||
} | } | ||||
func CreateQRTradeReq(prd bool, privateKeyStr, merchantId, terminalNo string, createQRTradeReq *md.CreateQRTradeReq) (string, error) { | |||||
//基础信息,必填 | |||||
createQRTradeReq.Version = Version | |||||
createQRTradeReq.Service = CreateQRTrade | |||||
createQRTradeReq.SignType = SignType | |||||
createQRTradeReq.MerchantId = merchantId | |||||
createQRTradeReq.TerminalNo = terminalNo | |||||
createQRTradeReq.RequestId = createQRTradeReq.MercOrderNo + zhios_pay_utils.AnyToString(time.Now().Unix()) | |||||
//按照接口类型选填信息 | |||||
//createBocPayAppTradeReq.Amount = "100" | |||||
//createBocPayAppTradeReq.OriginalAmount = "100" | |||||
//createBocPayAppTradeReq.MercOrderNo = "2022101401" | |||||
//createBocPayAppTradeReq.OrderDate = "20221013" | |||||
//createBocPayAppTradeReq.OrderTime = "175600" | |||||
//createBocPayAppTradeReq.NotifyUrl = "/api/v1/mall/pay/ada/sub_callback" | |||||
//createBocPayAppTradeReq.Reserved1 = zhios_pay_utils.SerializeStr(map[string]string{ | |||||
// "mid":"123456", | |||||
//}) | |||||
param := make(map[string]string) | |||||
zhios_pay_utils.Unserialize(zhios_pay_utils.Serialize(createQRTradeReq), ¶m) | |||||
send, err := Send(prd, privateKeyStr, param) | |||||
if err != nil { | |||||
return "", err | |||||
} | |||||
resp, _ := php2go.URLDecode(send) | |||||
return resp, nil | |||||
} |
@@ -65,3 +65,33 @@ type CreateWeChatTradeReq struct { | |||||
Reserved2 string `json:"reserved2" name:"商戶備用字段" label:"交易成功后原樣返回給商戶"` | Reserved2 string `json:"reserved2" name:"商戶備用字段" label:"交易成功后原樣返回給商戶"` | ||||
Reserved3 string `json:"reserved3" name:"商戶備用字段" label:"交易成功后原樣返回給商戶"` | Reserved3 string `json:"reserved3" name:"商戶備用字段" label:"交易成功后原樣返回給商戶"` | ||||
} | } | ||||
type CreateQRTradeReq struct { | |||||
MacaoBOCPublicParameter | |||||
Amount string `json:"amount" name:"订单金額" label:"以分爲單位,如1元表示爲100"` | |||||
OriginalAmount string `json:"originalAmount" name:"原订单金额" label:"以分爲單位,如1元表示爲100若无优惠请跟订单金额【amount】一致"` | |||||
MerchantPreferentialCnName string `json:"merchantPreferentialCnName" name:"商户系统优惠活动中文名称" label:"非必传"` | |||||
MerchantPreferentialEnName string `json:"merchantPreferentialEnName" name:"商户系统优惠活动英文名称" label:"非必传"` | |||||
Subject string `json:"subject" name:"訂單標題" label:"非必传,用戶支付完成後顯示在手機上的訂單名稱"` | |||||
ProductDesc string `json:"productDesc" name:"商品描述" label:"非必传,對一筆交易的具體描述信息,如果是多種商品,請將商品描述字符串累加傳給body。特殊字符不支持"` | |||||
PayChannel string `json:"payChannel" name:"支付方式" label:"BOCPAY - 澳门中银手机银行ALIPAY - 支付宝WECHATPAY - 微信支付TAIFUNGPAY - 豐付寶ICBCEPAY - 工銀E支付MPAY - 澳門通LUSOPAY - 國際銀行UEPAY - 極易付CGBPAY - 廣發MPGS - 銀行卡支付網關UNIONPAYQR - 雲閃付ALL -以上渠道聚合码支持多選使用|分割注:當本接口上送的productCode為MOBILEWEB時,payChannel只能單選,且不能上送ALL"` | |||||
ProductCode string `json:"productCode" name:"產品渠道编码" label:"PCWEB網站支付MOBILEWEB-移動支付AUTO-根据UA信息自动识别"` | |||||
MercOrderNo string `json:"mercOrderNo" name:"商戶系統消費訂單號" label:"商戶系統必須確保該訂單號在商戶系統是唯一的不能包含單引號“’”、尖括號“<”“>”和逗號“,”"` | |||||
OrderDate string `json:"orderDate" name:"訂單創建日期" label:"格式:yyyyMMdd"` | |||||
OrderTime string `json:"orderTime" name:"訂單創建時間" label:"格式:HHmmss"` | |||||
ValidNumber string `json:"validNumber" name:"有效期" label:"單位:秒 默認值1200"` | |||||
NotifyUrl string `json:"notifyUrl" name:"支付結果後台通知地址" label:"支付通知地址(后缀),商户在商戶服務管理後台配置好通知地址(域名)后,聚合平台会将域名和后缀拼接组成完整的通知地址,并在订单支付成后向此通知地址发送支付结果通知。"` | |||||
Reserved1 string `json:"reserved1" name:"商戶備用字段" label:"交易成功后原樣返回給商戶"` | |||||
Reserved2 string `json:"reserved2" name:"商戶備用字段" label:"交易成功后原樣返回給商戶"` | |||||
Reserved3 string `json:"reserved3" name:"商戶備用字段" label:"交易成功后原樣返回給商戶"` | |||||
Supplier string `json:"supplier" name:"供貨商名字" label:"非必传,顯示供貨商名字"` | |||||
ReferUrl string `json:"referUrl" name:"二級商戶網址" label:""` | |||||
BusinessType string `json:"businessType" name:"業務類型" label:"業務類型。該欄位僅支持以下5類入參: | |||||
1:飯店 | |||||
2:航空 | |||||
3:留學 | |||||
4:貿易 | |||||
5:其他,包含所有不屬於前四類的其他業務類型。例如,流量充值,機場接機服務等。若業務類型超過一種,則傳入多個且用分隔號(|)分隔。"` | |||||
GoodsInfo string `json:"goodsInfo" name:"商品信息" label:"包含商品的SKU名和相应的数量,格式为 SKU_名^数量。若存在超过一件商品,用竖线(|)分隔。备注:仅在businessType字段值为4时,本字段为必填。"` | |||||
TotalQuantity string `json:"totalQuantity" name:"備註:僅在businessType欄位值為4時,本欄位為必填"` | |||||
} |
@@ -50,9 +50,9 @@ func TestCreateBocPayAppTradeReq(t *testing.T) { | |||||
//按照接口类型选填信息 | //按照接口类型选填信息 | ||||
createBocPayAppTradeReq.Amount = "100" | createBocPayAppTradeReq.Amount = "100" | ||||
createBocPayAppTradeReq.OriginalAmount = "100" | createBocPayAppTradeReq.OriginalAmount = "100" | ||||
createBocPayAppTradeReq.MercOrderNo = "2022101402" | |||||
createBocPayAppTradeReq.OrderDate = "20221013" | |||||
createBocPayAppTradeReq.OrderTime = "175600" | |||||
createBocPayAppTradeReq.MercOrderNo = "2022101404" | |||||
createBocPayAppTradeReq.OrderDate = time.Now().Format("20060102") | |||||
createBocPayAppTradeReq.OrderTime = time.Now().Format("150105") | |||||
createBocPayAppTradeReq.NotifyUrl = "/api/v1/mall/pay/ada/sub_callback" | createBocPayAppTradeReq.NotifyUrl = "/api/v1/mall/pay/ada/sub_callback" | ||||
createBocPayAppTradeReq.Reserved1 = zhios_pay_utils.SerializeStr(map[string]string{ | createBocPayAppTradeReq.Reserved1 = zhios_pay_utils.SerializeStr(map[string]string{ | ||||
"mid": "123456", | "mid": "123456", | ||||
@@ -69,9 +69,9 @@ func TestCreateWeChatTradeReq(t *testing.T) { | |||||
//按照接口类型选填信息 | //按照接口类型选填信息 | ||||
CreateWeChatTradeReqReq.Amount = "100" | CreateWeChatTradeReqReq.Amount = "100" | ||||
CreateWeChatTradeReqReq.OriginalAmount = "100" | CreateWeChatTradeReqReq.OriginalAmount = "100" | ||||
CreateWeChatTradeReqReq.MercOrderNo = "2022101403" | |||||
CreateWeChatTradeReqReq.OrderDate = "20221013" | |||||
CreateWeChatTradeReqReq.OrderTime = "175600" | |||||
CreateWeChatTradeReqReq.MercOrderNo = "2022101404" | |||||
CreateWeChatTradeReqReq.OrderDate = time.Now().Format("20060102") | |||||
CreateWeChatTradeReqReq.OrderTime = time.Now().Format("150105") | |||||
CreateWeChatTradeReqReq.NotifyUrl = "/api/v1/mall/pay/ada/sub_callback" | CreateWeChatTradeReqReq.NotifyUrl = "/api/v1/mall/pay/ada/sub_callback" | ||||
CreateWeChatTradeReqReq.SubAppId = "wx987580a9437354d1" | CreateWeChatTradeReqReq.SubAppId = "wx987580a9437354d1" | ||||
CreateWeChatTradeReqReq.SubOpenId = "oEk7V5hNLxQXoTpOcvzRdGJQKnjM" | CreateWeChatTradeReqReq.SubOpenId = "oEk7V5hNLxQXoTpOcvzRdGJQKnjM" | ||||
@@ -85,3 +85,29 @@ func TestCreateWeChatTradeReq(t *testing.T) { | |||||
} | } | ||||
t.Logf("回调信息:%s", send) | t.Logf("回调信息:%s", send) | ||||
} | } | ||||
func TestCreateQRTradeReq(t *testing.T) { | |||||
var createQRTradeReq md.CreateQRTradeReq | |||||
//按照接口类型选填信息 | |||||
createQRTradeReq.Amount = "100" | |||||
createQRTradeReq.OriginalAmount = "100" | |||||
createQRTradeReq.PayChannel = "WECHATPAY" | |||||
createQRTradeReq.ProductCode = "PCWEB" | |||||
createQRTradeReq.MercOrderNo = "2022101405" | |||||
createQRTradeReq.OrderDate = time.Now().Format("20060102") | |||||
createQRTradeReq.OrderTime = time.Now().Format("150105") | |||||
createQRTradeReq.NotifyUrl = "/api/v1/mall/pay/ada/sub_callback" | |||||
createQRTradeReq.Reserved1 = zhios_pay_utils.SerializeStr(map[string]string{ | |||||
"mid": "123456", | |||||
}) | |||||
createQRTradeReq.Supplier = "澳門世寶一人有限公司" | |||||
createQRTradeReq.ReferUrl = "https://www.baidu.com" | |||||
createQRTradeReq.BusinessType = "4" | |||||
createQRTradeReq.GoodsInfo = "测试商品^1" | |||||
createQRTradeReq.TotalQuantity = "1" | |||||
send, err := boc.CreateQRTradeReq(false, boc.PrivateKeyStr, boc.MerchantId, boc.TerminalNo, &createQRTradeReq) | |||||
if err != nil { | |||||
t.Error(err) | |||||
} | |||||
t.Logf("回调信息:%s", send) | |||||
} |