You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

141 lines
5.8 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using Microsoft.VisualStudio.TestTools.UnitTesting;
using Senparc.CO2NET.Extensions;
using Senparc.Weixin.Helpers;
using Senparc.Weixin.TenPayV3.Apis;
using Senparc.Weixin.TenPayV3.Apis.VehicleParking;
using Senparc.Weixin.TenPayV3.Entities;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Senparc.Weixin.TenPayV3.Test.net6.Apis.VehicleParking
{
// 测试前请参考 https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter3_7_2.shtml
public class VehicleParkingApisTest : BaseTenPayTest
{
string openId = "olPjZjsXuQPJoV0HlruZkNzKc91E";//"olPjZjiGtsfaqOhUbOd2puy1wVvc";//换成测试人的 OpenId
string notify_url = "{notify_url}";//通知回调url 只接收https
CreateParkingReturnJson createParkingResult = null;
PayParkingReturnJson payParkingResult = null;
#region 微信支付分停车服务
/// <summary>
/// 查询车牌服务开通信息测试
/// https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter8_8_1.shtml
/// </summary>
[TestMethod()]
public void QueryServiceAsyncTest()
{
var key = TenPayHelper.GetRegisterKey(Config.SenparcWeixinSetting);
var TenPayV3Info = TenPayV3InfoCollection.Data[key];
// 车牌号
var plate_number = "{plate_number}";
// 车牌颜色
var plate_color = "{plate_color}";
var vehicleParkingApis = new VehicleParkingApis();
var result = vehicleParkingApis.QueryServiceAsync(TenPayV3Info.AppId, plate_number, plate_color, openId).GetAwaiter().GetResult();
Console.WriteLine("微信支付 V3 查询车牌服务开通信息测试结果:" + result.ToJson(true));
Assert.IsNotNull(result);
Assert.IsTrue(result.ResultCode.Success);
Assert.IsTrue(result.VerifySignSuccess == true);//通过验证
}
/// <summary>
/// 创建停车入场接口测试
/// https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter8_8_2.shtml
/// </summary>
[TestMethod()]
public void CreateParkingAsyncTest()
{
// TODO:需填入数据
//商户侧入场标识id在同一个商户号下唯一
var out_parking_no = "{out_parking_no}";
//车牌号
var plate_number = "{plate_number}";
//车牌颜色
var plate_color = "{plate_color}";
var requestData = new CreateParkingRequestData(out_parking_no, plate_number, plate_color, notify_url, new TenpayDateTime(DateTime.Now), "Senparc接口单元测试停车场", 3600);
var vehicleParkingApis = new VehicleParkingApis();
var createParkingResult = vehicleParkingApis.CreateParkingAsync(requestData).GetAwaiter().GetResult();
Console.WriteLine("微信支付 V3 创建停车入场接口测试结果:" + createParkingResult.ToJson(true));
Assert.IsNotNull(createParkingResult);
Assert.IsTrue(createParkingResult.ResultCode.Success);
Assert.IsTrue(createParkingResult.VerifySignSuccess == true);//通过验证
}
/// <summary>
/// 扣费受理接口测试
/// https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter8_8_3.shtml
/// </summary>
[TestMethod()]
public void PayParkingAsyncTest()
{
// 若没有创建停车入场, 则创建停车入场
if (createParkingResult is null)
{
CreateParkingAsyncTest();
}
var key = TenPayHelper.GetRegisterKey(Config.SenparcWeixinSetting);
var TenPayV3Info = TenPayV3InfoCollection.Data[key];
var out_order_no = string.Format("{0}{1}{2}", TenPayV3Info.MchId/*10位*/, SystemTime.Now.ToString("yyyyMMddHHmmss"), TenPayV3Util.BuildRandomStr(6));
var parking_info = new PayParkingRequestData.Parking_Info(createParkingResult);
// 停车场设备id
parking_info.device_id = "{device_id}";
// 每小时收费
var price = 1;
// 根据停车时间计算收费
var amount = new PayParkingRequestData.Amount(price * parking_info.charging_duration, "CNY");
var requestData = new PayParkingRequestData(TenPayV3Info.AppId, "Senparc单元测试停车场扣费", null, out_order_no, "PARKING", null, notify_url, null, amount, parking_info);
var vehicleParkingApis = new VehicleParkingApis();
payParkingResult = vehicleParkingApis.PayParkingAsync(requestData).GetAwaiter().GetResult();
Console.WriteLine("微信支付 V3 扣费受理接口测试结果:" + payParkingResult.ToJson(true));
Assert.IsNotNull(payParkingResult);
Assert.IsTrue(payParkingResult.ResultCode.Success);
Assert.IsTrue(payParkingResult.VerifySignSuccess == true);//通过验证
}
/// <summary>
/// 查询订单接口测试
/// https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter8_8_4.shtml
/// </summary>
[TestMethod()]
public void PQueryParkingAsyncTest()
{
// 若没有扣费受理, 则扣费受理
if (payParkingResult is null)
{
PayParkingAsyncTest();
}
var vehicleParkingApis = new VehicleParkingApis();
var result = vehicleParkingApis.QueryParkingAsync(payParkingResult.out_trade_no).GetAwaiter().GetResult();
Console.WriteLine("微信支付 V3 查询订单接口测试结果:" + result.ToJson(true));
Assert.IsNotNull(result);
Assert.IsTrue(result.ResultCode.Success);
Assert.IsTrue(result.VerifySignSuccess == true);//通过验证
}
#endregion
}
}