206 lines
13 KiB
Go
206 lines
13 KiB
Go
package paymentService
|
|
|
|
import (
|
|
payment "PaymentCenter/app/third/paymentService/psbc"
|
|
"PaymentCenter/config"
|
|
"context"
|
|
"encoding/json"
|
|
"fmt"
|
|
"github.com/qit-team/snow-core/kernel/server"
|
|
"github.com/qit-team/snow-core/log/logger"
|
|
"os"
|
|
"testing"
|
|
)
|
|
|
|
/*
|
|
psbc := PsbcPay{
|
|
MerchantId: "testMerchant001",
|
|
MchtNo: "100610100019042",
|
|
AppID: "961925472724332544001",
|
|
SopPublicKey: "04CABE03249C94BDC8A6A4440DA1B2ADFACF73F4340E5F1B9A76463694B44C2E5600A9BEAA035739383C292CF9F1C4695FAAC7963CD5033D5D647A6B1EBE78EC6A",
|
|
PrivateKey: "140c5c68da1829b79d8e4629a8b9548bd694ccc7061fbacb1079aed0e5ac33fa",
|
|
PrivateKeyCallback: "1F0E2F085955461A9B87820AFBD513712CAEA89687BE657DE4EC91613BE62D32",
|
|
Pubkey: "0447fe9ed13aac6200c92b893ad1289a98437c8404e64b1d2f7c755698a8b8e8acb35c1db2bedc5213c930bdfc10efb0e12269cf6a06877679f114fe5ae9dd4469",
|
|
BankKey: "04E0E2E37F11901483CDFBC47F489D87D5D78C55DD7F919B73DEA83007748668B7871A1BA9608F156E25B7D64C7821379BAC1E2C591D5A50FF311D1AAE026C1DAE",
|
|
Sha: "636879vrt96t57w6f59",
|
|
ReturnUrl: "http://milk.h5.test.86698.cn/#/pages/ycnc/order",
|
|
SuccessUrl: "http://milk.h5.test.86698.cn/#/pages/ycnc/orderDetail?isPayBack=true&order_no=",
|
|
NotifyUrl: "http://milk.test.api.cdlsxd.cn/api/v1/order/notify",
|
|
ShowTitleBar: "true",
|
|
LoginHost: "http://wap.dev.psbc.com/sop-h5/biz/crecard/",
|
|
OrderHost: "http://wap.dev.psbc.com/sop-h5/biz/unionpay/",
|
|
FileHost: "",
|
|
ShopId: "LSXD0001",
|
|
}
|
|
*/
|
|
func TestPsbcPay(t *testing.T) {
|
|
c := context.Background()
|
|
//解析启动命令
|
|
opts := config.GetOptions()
|
|
if opts.ShowVersion {
|
|
fmt.Printf("%s\ncommit %s\nbuilt on %s\n", server.Version, server.BuildCommit, server.BuildDate)
|
|
os.Exit(0)
|
|
}
|
|
|
|
//加载配置
|
|
opts.ConfFile = "../../../.env"
|
|
cf, err := config.Load(opts.ConfFile)
|
|
if err != nil {
|
|
return
|
|
}
|
|
//注册日志类服务
|
|
err = logger.Pr.Register(logger.SingletonMain, cf.Log, true)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
//data := `{"merchant_id": "your_merchant_id", "mcht_no": "your_mcht_no", "app_id": "your_app_id", "sop_public_key": "your_sop_public_key", "private_key": "your_private_key", "pubkey": "your_pubkey", "bank_key": "your_bank_key", "sha": "your_sha_key", "return_url": "https://example.com/return", "success_url": "https://example.com/success", "notify_url": "https://example.com/notify", "show_title_bar": "1", "login_host": "https://login.example.com", "order_host": "https://order.example.com", "file_host": "https://file.example.com", "shop_id": "your_shop_id"}`
|
|
|
|
//psbc := PsbcPay{
|
|
// MerchantId: "lansexiongdi666",
|
|
// MchtNo: "100510102303326",
|
|
// AppID: "1204022501096787968001",
|
|
// SopPublicKey: "04A3C235C15070E127679628FE024E6C77FFCB1840B4EFBE09D19CBE0EE69BEA231912943984D34C03989771E503DFBB4ECB186F4BBC27764109E63C2875005C81",
|
|
// PrivateKey: "00dbdc5f54de98d2281bec34f87f23905610e17af651eae9c16bab68f312b5f2a9",
|
|
// PrivateKeyCallback: "7FE05FEB81673ABF0AC4F9EEB99FB03BFE7BE432CA474CB9AAD8E302CAF00766",
|
|
// Pubkey: "0454dcb911feb9a892c520f37ebaa11f8c6a552187ac7e57ad0a22356035fc1f7fb09d840def9fa90ee2cd0b0efdb976a597de798e22b81a09684b3d466148e3ea",
|
|
// BankKey: "04E842C70157584DE6229FFE56A2CCABDBCFA01A7C5EF24B254638EFB650C9EE196B64788F09777F376F921B038A5BBFF2AFEBA0B81E63EB40DFCDFD1B46819BE1",
|
|
// Sha: "463726ztx68n79e3g27",
|
|
// ReturnUrl: "http://milk.h5.test.86698.cn/#/pages/ycnc/order",
|
|
// SuccessUrl: "http://milk.h5.test.86698.cn/#/pages/ycnc/orderDetail?isPayBack=true&order_no=",
|
|
// NotifyUrl: "http://milk.test.api.cdlsxd.cn/api/v1/order/notify",
|
|
// ShowTitleBar: "true",
|
|
// LoginHost: "https://open.psbc.com/gateway/biz/crecard/",
|
|
// OrderHost: "https://open.psbc.com/gateway/biz/unionpay/",
|
|
// FileHost: "",
|
|
// ShopId: "LSXD0001",
|
|
//}
|
|
//data, _ := json.Marshal(psbc)
|
|
//fmt.Println(string(data))
|
|
//err = sonic.Unmarshal([]byte(data), &psbc)
|
|
//if err != nil {
|
|
// fmt.Println(err)
|
|
// return
|
|
//}
|
|
|
|
//{"sha": "463726ztx68n79e3g27", "app_id": "1204022501096787968001", "pubkey": "0454dcb911feb9a892c520f37ebaa11f8c6a552187ac7e57ad0a22356035fc1f7fb09d840def9fa90ee2cd0b0efdb976a597de798e22b81a09684b3d466148e3ea", "mcht_no": "100510102303326", "psbcmcc": "", "shop_id": "LSXD0001", "bank_key": "04E842C70157584DE6229FFE56A2CCABDBCFA01A7C5EF24B254638EFB650C9EE196B64788F09777F376F921B038A5BBFF2AFEBA0B81E63EB40DFCDFD1B46819BE1", "file_host": "", "login_host": "https://open.psbc.com/gateway/biz/crecard/", "notify_url": "https://pay.cdlsxd.cn/pay/front/api/v1/notify/psbc/89351417415", "order_host": "https://open.psbc.com/gateway/biz/unionpay/", "return_url": "https://market.86698.cn/hmOrderList", "merchant_id": "lansexiongdi666", "private_key": "00dbdc5f54de98d2281bec34f87f23905610e17af651eae9c16bab68f312b5f2a9", "success_url": "https://market.86698.cn/hmOrderList", "show_title_bar": "true", "sop_public_key": "04A3C235C15070E127679628FE024E6C77FFCB1840B4EFBE09D19CBE0EE69BEA231912943984D34C03989771E503DFBB4ECB186F4BBC27764109E63C2875005C81", "private_key_callback": "7FE05FEB81673ABF0AC4F9EEB99FB03BFE7BE432CA474CB9AAD8E302CAF00766"}
|
|
data := `{
|
|
"sha": "463726ztx68n79e3g27",
|
|
"app_id": "1204022501096787968001",
|
|
"pubkey": "0454dcb911feb9a892c520f37ebaa11f8c6a552187ac7e57ad0a22356035fc1f7fb09d840def9fa90ee2cd0b0efdb976a597de798e22b81a09684b3d466148e3ea",
|
|
"mcht_no": "100510102303326",
|
|
"psbcmcc": "",
|
|
"shop_id": "LSXD0001",
|
|
"bank_key": "04E842C70157584DE6229FFE56A2CCABDBCFA01A7C5EF24B254638EFB650C9EE196B64788F09777F376F921B038A5BBFF2AFEBA0B81E63EB40DFCDFD1B46819BE1",
|
|
"file_host": "",
|
|
"login_host": "https://open.psbc.com/gateway/biz/crecard/",
|
|
"notify_url": "https://pay.cdlsxd.cn/pay/front/api/v1/notify/psbc/89351417415",
|
|
"order_host": "https://open.psbc.com/gateway/biz/unionpay/",
|
|
"return_url": "https://market.86698.cn/hmOrderList",
|
|
"merchant_id": "lansexiongdi666",
|
|
"private_key": "00dbdc5f54de98d2281bec34f87f23905610e17af651eae9c16bab68f312b5f2a9",
|
|
"success_url": "https://market.86698.cn/hmOrderList",
|
|
"pay_url": "https://static.mobile-bank.psbc.com/static/back/jump.html/?pageId=50000000&h5Type=9079",
|
|
"sop_public_key": "04A3C235C15070E127679628FE024E6C77FFCB1840B4EFBE09D19CBE0EE69BEA231912943984D34C03989771E503DFBB4ECB186F4BBC27764109E63C2875005C81",
|
|
"private_key_callback": "7FE05FEB81673ABF0AC4F9EEB99FB03BFE7BE432CA474CB9AAD8E302CAF00766"
|
|
}`
|
|
psbc := PsbcPay{}
|
|
err = json.Unmarshal([]byte(data), &psbc)
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
request := PayOrderRequest{
|
|
PayChannelId: 8935141660703064070,
|
|
OrderId: 374700296052352,
|
|
ChannelType: 11, // 11-邮储支付
|
|
Description: "测试商品",
|
|
Amount: 100,
|
|
PayerClientIp: "192.168.110.235",
|
|
Psbc: psbc,
|
|
ReturnUrl: psbc.ReturnUrl,
|
|
}
|
|
//支付
|
|
orderResult := PaymentService(c, request)
|
|
t.Log(orderResult)
|
|
|
|
rsp := payment.PaymentLinkResponse{}
|
|
err = json.Unmarshal([]byte(orderResult.Result), &rsp)
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
t.Log(rsp)
|
|
|
|
// 查询订单
|
|
qreq := PayOrderQueryRequest{
|
|
OrderId: request.OrderId,
|
|
PayChannel: 3,
|
|
Psbc: request.Psbc,
|
|
}
|
|
queryResult := PayOrderQuery(c, qreq)
|
|
t.Log(queryResult)
|
|
|
|
//// 退款
|
|
//refund := OrderRefundRequest{
|
|
// OrderId: 3747002960422784848,
|
|
// RefundOrderId: 2017620703512514385,
|
|
// RefundReason: "测试支付商品",
|
|
// RefundAmount: 500,
|
|
// PayChannel: 11,
|
|
// Psbc: request.Psbc,
|
|
//}
|
|
//refundResult := OrderRefund(c, refund)
|
|
//t.Log(refundResult)
|
|
|
|
//// 关闭订单
|
|
//closeOrder := OrderCloseRequest{
|
|
// OrderId: request.OrderId,
|
|
// PayChannel: 3,
|
|
// Psbc: request.Psbc,
|
|
//}
|
|
//closeResutl := OrderClose(c, closeOrder)
|
|
//t.Log(closeResutl)
|
|
}
|
|
|
|
/*
|
|
{"request":"eBz+M1vhBVAWG7G4ec7TR1xPMfwenzhHuGYWLdAC577GQf6NdU4fJAmUdyZkNiAWc29REpSfsrfe\ny3kxcI5M/+dUoeOYLvFvGaxeTR1xPMfwenzhHuGYWLdAC577GQf6NdU4fJORok3HNWQ04+i92bei\nkT3gI+S7tFx3ElAGTR1xPMfwenzhHuGYWLdAC577GQf6NdU4fJQ+yy9LU/YWXJbB9jVQU6DZQ2pd\nWB11aw0wJV32xu1BAZq5Ivlx/1YXMcgC/NH6vLF4J2gbU0d0k7+CVqQFtDVITlOt3wokVIrg2hMd\nD8WT6lUXMIWULiuxEYyLVTbXCV7b/5HnojX8g/qGvvexuQ58tCK/sfbNDeVWxZuKbnFBa/iRbzkZ\nyHtnt7AAvmPCILuydnkuWsLg4fz9f/jf4XOod9lGg9GrXypJonWRR0pmgUUKYmO3lGBNue0gaBhd\nVl4bwVOD7NnjKt1+FJxrIpaWxqL9HpLQxTR1xPMfwenzhHuGYWLdAC577GQf6NdU4fJq78Jnvx50\nWZwR2ASQiXaOBWXiT6bPNgbPiBifozgeij9VoAkz+OBGj1mJl8PaSlkMiuNmPbiFMZtBcdDQODV2\n6GktVnCvrrv/F3y0rR3B3/GqOJISMaWtPBs6Et3xvTR1xPMfwenzhHuGYWLdAC577GQf6NdU4fJZ\n5lGbfCqF4gLGsGM6LFf0JodTdmAfYWXl8TaLyeVTPgx+u6u4u7tl0qEZChp74hnZfl1pdpzcRbna\nD/9qXsCi3Lcjhzqz6AlT2ZNBb4fgMDfn6mo7dSwxA+7r2qXx1ilHLbnhSk1QoRuvk6bzRo7997Z5\ns80c2rWp45tOUVbFe6nvFDJZ8f2B0E/wPHNuhty83lvmkrfaRDwXwV3QVe0sDDSMIhx3mdHaEdLp\nx4PRzlqO4YbgxOaNvjdxFXQaZYIH5MBWd0PPPQ3AG3OmKfwNSroIBluMhVH9HVabqBg3wtsYi2cz\nJos7sSoAJucUb0o+gzeXm9UwxQL1fKY9IwlSYwQG5Vna3I7rn9Qe6O4K9QG9K4xesMTk5EjkJo9Q\ntFRMV+wZc92Q/DhI1JweyTR1xPMfwenzhHuGYWLdAC577GQf6NdU4fJ4NReAIuF/loxzDMVMZhgS\nAUdc6L/AiujoQamfYSmvoAmqjl0ADiilpg==","signature":"7b130dbebf0ac838f54704870288edfe6ecf858923eea47dc5be627071389e2#1fa7390896349fe123f2bfcb58bce2499e8a0ac90e6711b9494b71476c570adb","accessToken":"","encryptKey":"04983F54F2B7C59F9DDF11ADFDDD92D7B82C9132C3A79C32F6C77D325C6E68236E0D7F4D0824033E419CEAC0EC4AA398D2CE7F3B9D681EC93EC27351C39063C44D68A3BAF05BF6F16232C933635D43BFF8262FEA9E3ECD119F0650B9419169ACEF698AC3A479EB5BFAE6BB50DDEB339956"}
|
|
*/
|
|
func TestPsbcNotify(t *testing.T) {
|
|
|
|
//解析启动命令
|
|
opts := config.GetOptions()
|
|
if opts.ShowVersion {
|
|
fmt.Printf("%s\ncommit %s\nbuilt on %s\n", server.Version, server.BuildCommit, server.BuildDate)
|
|
os.Exit(0)
|
|
}
|
|
|
|
//加载配置
|
|
opts.ConfFile = "../../../.env"
|
|
cf, err := config.Load(opts.ConfFile)
|
|
if err != nil {
|
|
return
|
|
}
|
|
//注册日志类服务
|
|
err = logger.Pr.Register(logger.SingletonMain, cf.Log, true)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
data := `{"sha": "463726ztx68n79e3g27", "app_id": "1204022501096787968001", "pubkey": "0454dcb911feb9a892c520f37ebaa11f8c6a552187ac7e57ad0a22356035fc1f7fb09d840def9fa90ee2cd0b0efdb976a597de798e22b81a09684b3d466148e3ea", "mcht_no": "100510102303326", "psbcmcc": "", "shop_id": "LSXD0001", "bank_key": "04E842C70157584DE6229FFE56A2CCABDBCFA01A7C5EF24B254638EFB650C9EE196B64788F09777F376F921B038A5BBFF2AFEBA0B81E63EB40DFCDFD1B46819BE1", "file_host": "", "login_host": "https://open.psbc.com/gateway/biz/crecard/", "notify_url": "https://pay.cdlsxd.cn/pay/front/api/v1/notify/psbc/89351417415", "order_host": "https://open.psbc.com/gateway/biz/unionpay/", "return_url": "https://market.86698.cn/hmOrderList", "merchant_id": "lansexiongdi666", "private_key": "00dbdc5f54de98d2281bec34f87f23905610e17af651eae9c16bab68f312b5f2a9", "success_url": "https://market.86698.cn/hmOrderList", "show_title_bar": "true", "sop_public_key": "04A3C235C15070E127679628FE024E6C77FFCB1840B4EFBE09D19CBE0EE69BEA231912943984D34C03989771E503DFBB4ECB186F4BBC27764109E63C2875005C81", "private_key_callback": "7FE05FEB81673ABF0AC4F9EEB99FB03BFE7BE432CA474CB9AAD8E302CAF00766"}`
|
|
psbc := PsbcPay{}
|
|
err = json.Unmarshal([]byte(data), &psbc)
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
rowBody := `{"request":"v8CCv7WlLg38TAQdyywtQKJLbiM/Hl2HUyySBRvfwyWPmUr9hmXFqTIlVyeK0otMrj7T8Vpxpql6\nZ4vTSZiOyWX3y2EIXHwuemhNbZlvIQoSdKZ3Vmj1iNHz4B2WWWL/aKulpdciMvTXwfikt7Bpf5BM\nzGEPJPEAr9K2Ocob6hBZr+213N+3ap64UhPbHyhLbVAE61TFMbd10gVf9IGWX2NmbXpqKIumS+Co\ni15IZEcBDKrWnuPd13+6nshmrh3w6L/ig50uIUatEqdVncX6OQN2GoLXBBunx7Nw2yYLUI1cXAME\nYvuVbWiUqOfwx2qkG73iy08YELNinikYWbZiysedkOgi9+Kko0rKf3eMxqCRaGgwl+ozmoEoLmkS\nHIO3tENqttRX8SEoDMugII+E3wnE/Nnu6rJqo1aKDDwOqlxavyoiGWUcp/fsH1UqkeR+qn8clRUd\nf7tIJ8O73fwAzN9DUQ6n1Awo6pdZhb556iGoNy411BoTiwxf+guBuI8SRc8Og9teWYKq2Z/Pk+D6\nYrw14Cjhdxcy89d+grexV6ubvGblotRugxM17Z8QhUXtO6qXm6V4odKd3HZEgRosShQ2GIROMt6t\nGDjsjFIFNrH31DDVyvxIfdru480Q+E54EBTSqVwWH3yYlEEBJf0Ezs4GqcXfB3txbG9oIjTG6x6B\nOCQ1VrfaeuEigKnyVkz5hhp0mA6ZCyC8xvqbT9Njdel8G4m940BwY+P+pzH03BzzMdxpzXaggqiD\n77Flpti8XVWOIpC/GAOyT3XqsOb3Gun1Inmnt3L1t5cd0qmvSHrXXOtxuXIXHr84T1jNd9HWomEE\npKY7FwVoVgsnRRhIIr0DmBvuRl2fGCHMcY73k5/QcL1k2d91Nzy0AFUvsG021VpgdooHCtnrqf40\n/rff8EQmSv7s3n64w9wJ/pFN74JtYPAeWlrzIqFi4xGEVVleWoZz4/MJTQdnFxjSoof/QX16WmWq\nnF/NJ5r+3VSwjaWE+MZ+jVTMx0FQ+HYYdc6JA6fsHnivyOEPQQRxLqGPAaQI2SVQoopy8LH6ps9N\nmyK5WJXHKRHJeEETfu3FVNQQI9//DZ/PJ1z2MyLArKjxpkQ8usXityxNT9KyeTTGqL1KjWnO9RLn\nePK4kZAGzO6jRbF3CXEsVa5SGBUBgfJw/A==","signature":"be1aba3ee42983db0ce429976118a1e6169a83c56f1a9b8575fcf95895dd234f#dd31ed10ad27ad3fa7ca3e6b61d22dc75621fa6bbcfff3828c003853213cdd12","accessToken":"","encryptKey":"047E20D3EF69CCF43148A35A3D828C5BD916DF2F642FBCF4DFC59703C799F314B481234F6109986709756993D1550164CDEF85319BB8CC98672770526AF620E87B04D0D3A8A8C13A04F6789926186E8102393804131BE6802363CDDD58BE61334052920519123BE099DD8229FC48CB8F44"}`
|
|
|
|
orderId, amountTotal, payerTotal, status, err := PsbcVerifyAndParseNotify(rowBody, psbc)
|
|
if err != nil {
|
|
t.Log(err)
|
|
return
|
|
}
|
|
t.Log(orderId, amountTotal, payerTotal, status)
|
|
|
|
}
|