我正在使用具有应付功能的软件工具。我计划使用braintree来处理付款部分,但目前只能使用网络用户界面创建计划。
由于我的功能价格因国家/地区而异,我认为我只需创建一个计划 private void CreateTree()
{
TreeNode ns = new TreeNode(txtProcName.Text.Trim());
ArrayList array = GetDepends(txtProcName.Text.Trim());
for (int i = 0; i < array.Count; i++)
{
ns.Nodes.Add(array[i].ToString(), array[i].ToString());
ArrayList array2 = GetDepends(txtProcName.Text.Trim());
}
treeView1.Nodes.Add(ns);
}
private ArrayList GetDepends(string sProcName)
{
ds.Clear();
ArrayList list = new ArrayList();
ConnectionString = "Provider=SQLOLEDB;Data Source='" + txtServerName.Text.Trim() + "';Port=" + txtPort.Text.Trim() + ";" + "UID='" + txtUserName.Text.Trim() + "';PWD='" + txtPassword.Text.Trim() + "';" + "Database='" + txtDatabase.Text.Trim() + "';charset=cp850;";
AseConnection conn = new AseConnection(ConnectionString);
AseCommand cmd = new AseCommand("exec sp_depends ["+sProcName+"]", conn);
cmd.CommandType = CommandType.Text;
AseDataAdapter adapter = new AseDataAdapter(cmd);
conn.Open();
adapter.Fill(ds);
conn.Close();
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
if (ds.Tables[0].Rows[i]["type"].ToString() == "stored procedure")
{
list.Add(ds.Tables[0].Rows[i]["object"]);
}
}
return list;
}
并将其与功能相关联:
xyzd
以及另一张表格,它定义了我所拥有的每个国家/地区的价格:
INSERT INTO tool_feature (billing_plan_id, name) VALUES ('xyzd', 'Basic feature');
SET @basicFeatureId = 1;
这将允许我做类似
的事情SET @germany = 1;
SET @italy= 2;
INSERT INTO tool_feature_billing_plan
(country_id, tool_feature_id, price)
VALUES
(@germany, @basicFeatureId, 9.9); -- € 9.90 in Germany
INSERT INTO tool_feature_billing_plan
(country_id, tool_feature_id, price)
VALUES
(@italy, @basicFeatureId, 19.9); -- € 19.90 in Italy
似乎我可以这样做,但问题是以这种方式使用Long countryId = countryRepository.getCountryIdByAlpha2Code("de");
Float price = toolFeatureBillingPlanRepository.getPriceForCountry(countryId);
SubscriptionRequest request = new SubscriptionRequest()
.id("new_id")
.paymentMethodToken(paymentMethodToken)
.price(new BigDecimal("" + price )) // The price fetched from the database
.planId(planId)
.merchantAccountId(merchantAccountId);
Result<Subscription> result = gateway.subscription().update(
subscriptionId,
request
);
/ Plan
是否是个好主意。
我想要这样做的主要原因是因为我不想为所有国家/地区创建计划并将所有这些ID存入我的数据库等。
这样我只为每个功能制定了一个计划,其余的将在我这边处理。
答案 0 :(得分:2)
完全披露:我在Braintree工作。如果您有任何其他问题,请随时联系support。
您在上面概述的方法是正确的,并且是以不同价格设置Subscriptions
的正确方法。