コード例 #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="out_trade_no"></param>
        /// <param name="openid"></param>
        /// <param name="spbill_create_ip"></param>
        /// <param name="total_fee">单位分</param>
        /// <returns></returns>
        public JSSDKPrepay Prepay(string out_trade_no, string openid, string spbill_create_ip, string total_fee)
        {
            var prepay = new JSSDKPrepay();
            var o      = new JSSDKPayOrder();

            o.body             = WxConfig.wxpay_body;
            o.attach           = WxConfig.wxpay_attach;
            o.out_trade_no     = out_trade_no;     //.Substring(0, 32);
            o.spbill_create_ip = spbill_create_ip; //APP和网页支付提交用户端ip,Native支付填调用微信支付API的机器IP。
            o.openid           = openid;
            o.total_fee        = total_fee;
            //prepay.prepay_id = "test";//todo test
            prepay.prepay_id = GetPaymentId(o);
            prepay.appId     = WxConfig.Appid;
            prepay.timeStamp = Utility.GetTimeSpan();
            prepay.nonceStr  = Utility.GenerateNonceStr();
            prepay.signType  = "MD5";
            string payRaw = "appId=" + prepay.appId
                            + "&nonceStr=" + prepay.nonceStr
                            + "&package=" + prepay.package
                            + "&signType=" + prepay.signType
                            + "&timeStamp=" + prepay.timeStamp
                            + "&key=" + WxConfig.wxpay_key;

            prepay.paySign = Utility.WXPaySignature(payRaw, prepay.signType);
            return(prepay);
        }
コード例 #2
0
ファイル: ZzBS.cs プロジェクト: bnhomework/zzzs
 public JSSDKPrepay PlaceOrder(List <Guid> orderIds, Guid addressId, string ip, string customerOpenId)
 {
     try
     {
         var result       = new JSSDKPrepay();
         var submissionId = NewSubmisstionId();
         using (var uow = GetUnitOfWork())
         {
             var orders = uow.Repository <ZZ_Order>()
                          .Query()
                          .Filter(x => orderIds.Contains(x.OrderId) && x.OrderStatus < (int)ZZOrderStatus.Paid)
                          .Get()
                          .ToList();
             var totalAmount = orders.Sum(x => x.TotalAmount);
             result = WxApiHelper.Instance.Prepay(submissionId, customerOpenId, ip, (Math.Round((decimal)(totalAmount) * 100, 0)).ToString());
             var oa = new ZZ_OrderAddress();
             oa.AddressId      = addressId;
             oa.SubmissionId   = submissionId;
             oa.OrderAddressId = Guid.NewGuid();
             uow.Repository <ZZ_OrderAddress>().Insert(oa);
             orders.ForEach(x =>
             {
                 x.SubmissionId = submissionId;
                 x.OrderStatus  = (int)ZZOrderStatus.Submitted;
                 InsertOrderStatusHistory(uow, x.OrderId, (int)ZZOrderStatus.Submitted);
                 uow.Repository <ZZ_Order>().Update(x);
             });
             uow.Save();
         }
         return(result);
     }
     catch (Exception ex)
     {
         Debug.WriteLine(ex.ToString());
         throw;
     }
 }