优化支付退款钱包链路
This commit is contained in:
@@ -159,3 +159,60 @@ func TestParsePayloadSupportsFormAndXML(t *testing.T) {
|
||||
t.Fatalf("ParsePayload(xml).coupon = %q, exists=%v; want empty value", value, ok)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSignRefundUsesSameAlgorithm(t *testing.T) {
|
||||
params := map[string]string{
|
||||
"service": "unified_refund",
|
||||
"merchant_id": "1234567890",
|
||||
"merchant_refund_id": "REF001",
|
||||
"refund_amount": "100",
|
||||
"leshua_order_id": "LS1",
|
||||
"nonce_str": "abc",
|
||||
"sign": "ignored",
|
||||
}
|
||||
got := Sign(params, "secret", SignOptions{})
|
||||
baseString := SignBaseString(params, SignOptions{})
|
||||
wantBaseString := "leshua_order_id=LS1&merchant_id=1234567890&merchant_refund_id=REF001&nonce_str=abc&refund_amount=100&service=unified_refund"
|
||||
if baseString != wantBaseString {
|
||||
t.Fatalf("SignBaseString() = %s, want %s", baseString, wantBaseString)
|
||||
}
|
||||
want := Sign(map[string]string{
|
||||
"service": "unified_refund",
|
||||
"merchant_id": "1234567890",
|
||||
"merchant_refund_id": "REF001",
|
||||
"refund_amount": "100",
|
||||
"leshua_order_id": "LS1",
|
||||
"nonce_str": "abc",
|
||||
}, "secret", SignOptions{})
|
||||
if got != want {
|
||||
t.Fatalf("Sign() = %s, want %s", got, want)
|
||||
}
|
||||
}
|
||||
|
||||
func TestVerifyRefundNotify(t *testing.T) {
|
||||
client := NewClient(config.LeshuaPaymentConfig{NotifyKey: "notify-secret"})
|
||||
params := map[string]string{
|
||||
"merchant_id": "1234567890",
|
||||
"third_order_id": "NO1",
|
||||
"leshua_order_id": "LS1",
|
||||
"merchant_refund_id": "REF001",
|
||||
"leshua_refund_id": "LREF001",
|
||||
"refund_amount": "100",
|
||||
"total_amount": "200",
|
||||
"status": "11",
|
||||
"attach": "",
|
||||
}
|
||||
params["sign"] = Sign(params, "notify-secret", SignOptions{
|
||||
IncludeEmpty: true,
|
||||
ExcludeKeys: []string{"error_code", "leshua", "sign"},
|
||||
})
|
||||
|
||||
if !client.VerifyNotify(params) {
|
||||
t.Fatal("VerifyNotify() = false, want true for refund notify")
|
||||
}
|
||||
|
||||
params["status"] = "12"
|
||||
if client.VerifyNotify(params) {
|
||||
t.Fatal("VerifyNotify() = true after status changed without re-sign, want false")
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user