public AlipayTradeOrderSettleResponse DoSubAccount(EAliPayApplication app, EOrderInfo order, EStoreInfo store) { IAopClient aliyapClient = new DefaultAopClient("https://openapi.alipay.com/gateway.do", app.AppId, app.Merchant_Private_Key, "json", "1.0", "RSA2", app.Merchant_Public_key, "GBK", false); AlipayTradeOrderSettleRequest request = new AlipayTradeOrderSettleRequest(); // string commission = (order.TotalAmount*(100-0.38)/100).ToString("0.00"); string commission = (order.TotalAmount - order.SellerCommission).ToString("0.00"); // string commission = "47.00"; request.BizContent = "{" + "\"out_request_no\":\"" + StringHelper.GenerateSubAccountTransNo() + "\"," + "\"trade_no\":\"" + order.AliPayOrderNo + "\"," + "\"royalty_parameters\":[{" + "\"trans_out\":\"" + store.AliPayAccount + "\"," + "\"trans_in\":\"" + app.AccountForSub + "\"," + "\"amount\":" + commission + "," + "\"desc\":\"分账\"" + "}]" + //"\"operator_id\":" + "}"; AlipayTradeOrderSettleResponse response = aliyapClient.Execute(request, null, store.AliPayAuthToke); return(response); }
public static bool SettlePayment(string caseNumber) { bool succeed = false; try { var sellerId = DataAccess.ExecuteScalar <string>(string.Format("select seller_email from Orders where CaseNumber='{0}'", caseNumber)); var tradeNo = DataAccess.ExecuteScalar <string>(string.Format("select trade_no from Orders where CaseNumber='{0}'", caseNumber)); var f2fAccount = Config.AppAccounts[0]; var payAccount = Config.PayAccounts[0]; var outRequestNo = string.Format("JZ{0}{1}", DateTime.Now.ToString("yyyyMMddHHmmssfff"), Utils.GetUniqueKey()); var alipayPublicKey = string.Format(Config.alipay_public_key, f2fAccount.AppName); IAopClient client = new DefaultAopClient("https://openapi.alipay.com/gateway.do", f2fAccount.AppId, string.Format(Config.merchant_private_key, f2fAccount.AppName), "json", "1.0", f2fAccount.SignType, alipayPublicKey, Config.charset, true); AlipayTradeOrderSettleRequest request = new AlipayTradeOrderSettleRequest(); request.BizContent = "{" + string.Format("\"out_request_no\":\"{0}\",", outRequestNo) + string.Format("\"trade_no\":\"{0}\",", tradeNo) + " \"royalty_parameters\":[{" + string.Format(" \"trans_out\":\"{0}\",", f2fAccount.PID) + string.Format("\"trans_in\":\"{0}\",", payAccount.PID) + //"\"amount\":100," + "\"amount_percentage\":100," + string.Format("\"desc\":\"从{0}分账到{1}\"", f2fAccount.SellerId, payAccount.SellerId) + " }]," + "\"operator_id\":\"A0001\"" + " }"; AlipayTradeOrderSettleResponse response = client.Execute(request); if (response.Code == "10000") { DataAccess.ExecuteNonQuery(string.Format("update Orders set SettleResponse='{0}',trade_status='分账成功' where CaseNumber='{1}'", response.Body, caseNumber)); } else { DataAccess.ExecuteNonQuery(string.Format("update Orders set SettleResponse='{0}',trade_status='分账失败' where CaseNumber='{1}'", response.Body, caseNumber)); } succeed = response.Code == "10000"; } catch (Exception e) { Logger.Log(string.Format("SettlePayment: {0}", e.ToString())); } return(succeed); }