九易六 发表于 2021-8-4 10:32:41

调用支付宝付款接口

本帖最后由 九易六 于 2021-8-4 10:35 编辑

背景:
自建企业内部购物手机购物网站,需要调用支付宝付款接口完成订单支付

完成效果:


开发流程:
①获取支付宝接口授权:
操作过程可参照TimZhang老师的帖子支付宝转账功能阐述
需要获取如下5项内容之后再进行后续步骤:
      app_id;
      private_key 私钥;
      alipay_public_key 公钥;
      seller_id 商户号;
      Aop.dll文件。


②编写服务端自定义Web API:
引入Aop.dll之后,将以下代码复制到编辑区,并将相关内容替换成自己的身份信息。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using GrapeCity.Forguncy.ServerApi;
using Microsoft.AspNetCore.Http;
using Aop;
using Aop.Api;
using Aop.Api.Domain;
using Aop.Api.Request;
using Aop.Api.Response;

namespace alipay
{
public class alipay : ForguncyApi
{

public void wapalipay()
{
//获取post请求的数据
var form = this.Context.Request.ReadFormAsync().Result;
var subject = form["subject"]; //订单主题,例如“内购21070001”
var body = form["body"]; //订单描述,例如“张三”
var total_amount = form["total_amount"]; //订单总金额
var out_trade_no = form["out_trade_no"]; //外部订单号,建议使用时间戳

//定义运行参数,并创建实例
string gatewayUrl = "https://openapi.alipay.com/gateway.do";
string app_id = "将这里替换成你自己的app_id";
string private_key = "将这里替换成你自己的私钥";
string sign_type = "RSA2";
string alipay_public_key = "将这里替换成你自己的公钥";
string charset = "utf-8";

IAopClient client = new DefaultAopClient(gatewayUrl,app_id,private_key,"json","1.0",sign_type,alipay_public_key,charset,false);
AlipayTradeWapPayRequest request = new AlipayTradeWapPayRequest();
//request.SetReturnUrl(""); // 设置支付完成同步回调地址
//request.SetNotifyUrl(""); // 设置支付完成异步通知接收地址
request.BizContent = "{" +
"\"subject\":\"" + subject + "\"," +
"\"body\":\"" + body + "\"," +
"\"out_trade_no\":\"" + out_trade_no + "\"," +
"\"total_amount\":\"" + total_amount + "\"," +
"\"seller_id\":\"将这里替换成你自己的商户号\"," +
"\"quit_url\":\"将这里替换成你自己的中途退出页面地址\"," +
"\"product_code\":\"QUICK_WAP_PAY\"," +
" }";

//调用支付宝接口,并返回给活字格前端页面
AlipayTradeWapPayResponse response = client.pageExecute(request);
this.Context.Response.WriteAsync(response.Body);
}
}
}


③编写页面JavaScript调用命令:
1)在页面建立4个单元格,命名为“主题、描述、金额、订单号”
2)编辑JavaScript命令,将以下代码复制到编辑区:
//获取当前页面
var page = Forguncy.Page;
//获取页面上的单元格
var cell1 = page.getCell("订单号");
var cell2 = page.getCell("主题");
var cell3 = page.getCell("金额");
var cell4 = page.getCell("描述");
//获取单元格的值
var data = {
out_trade_no: cell1.getValue(),
subject: cell2.getValue(),
total_amount: cell3.getValue(),
body: cell4.getValue()
};
$.post('将这里替换成你自己的项目名称/customapi/alipay/wapalipay',data,function(re){
document.write(re);
},'text');
注意:
JavaScript当中第15行的写法需要注意,
在本地测试时的写法为:“$.post('customapi/alipay/wapalipay',data,function(re){”
在发布到服务器之前,需要修改为:“$.post('将这里替换成你自己的项目名称/customapi/alipay/wapalipay',data,function(re){”

夏雪冬阳 发表于 2021-8-6 22:23:28

太复杂了,小白一脸懵逼
页: [1]
查看完整版本: 调用支付宝付款接口