新手问题 关于 alipay 的问题

liuyang_1991 · 发布于 2017年07月11日 · 最后由 liuyang_1991 回复于 2017年07月14日 · 833 次阅读
96

移动支付,每次调支付宝接口的时候都显示创建交易异常,请重新创建后再付款!
mapi网关的RSA的公钥什么的都填了!哪位能告诉我到底怎么回事!
谢谢!
共收到 29 条回复
6878

同一订单不能重复支付!订单ID重复,貌似也会出现这种情况

96
6878zqalyc 回复

没有重复支付!现在是一次支付都没成功!

6878
32liuyang_1991 回复

核对一下你的公钥和私钥,支付宝公钥以及自己的公私钥配置是否正确

96
6878zqalyc 回复

都核对过了!是只配置这个的吧!

1

用 openapi 分支了吗?贴代码

6楼 已删除
96
1Rei 回复
  def alipay
    @payment=Payment.new(:user=>current_user, :channel=> :alipay, :amount=> params[:amount],
                         :subject=>params[:subject], :detail=>"[#{params[:subject]}]#{current_user.name}",
                         :out_order_id=>params[:order_id], :out_order_type=>params[:order_type])
    Payment.transaction do
      if @payment.save
        Alipay.pid = Setting.alipay["partner_id"]
        Alipay.sign_type="RSA"
        Alipay.key = <<-EOF
-----BEGIN PRIVATE KEY-----
MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAJfS4Xizv5pJdS/A
aVQFP1E0UsxVsKYQTsOR+vSlYvr2QU37h2OocmkYEM2NeKCuzeJ6QZ2lXaVR4KM/
hjK+cQZzlZ/RGEz6wAyiPBQpVQ9tDDo+FSPi+1txWdP4x+bt9iTvyAG/RCHSvkx/
CfFkgGqneliLIOOks4Ee0IfLNDnbAgMBAAECgYBKGpAazgFTWU9tg0rZm8YP6K4R
NjIGnCcVpgcLqj3pqJCvc3nd1rYhPbHV4ptiMnAjfvDP9YsDyjcO906VLgcUEonQ
8e1lf21cxCLLBrC3Z6OeXKIHRTDER1ammIAb6tC8IpO6XFeQATDtz1RWmjlRwRfz
Hin3zj3QSltnTHR5oQJBAMpRrVpIhACxpl7Q0xIpqSom4sY499SR0ImKR4gnMJrg
d5jDgULc5J/3jVn3wO0fkr+ZXfEfwJRL8QeBfPT80i0CQQDAG1wrd/sRqIDzClQg
MvABkTK3ZpfAPRkiTiP919Vigk3DebC6PC4dWlR6jtQfibkPFHPYnHm4CdfstAbm
gyknAkAR6ILor+yHRzJLyD42qFth8Mk39IjzVujXk9bbFWT3AJLgEcYaTgUqp7Xq
VcTM+HN75C5tjnr0ZXhzSqHt6YcNAkEAsR9IzwdTpMdRBUULpZhxc3B1a2WbGvL6
XoffZWd/5dCwdD+Z80wTVJr5cvqHmAB6cO3xldFH5KimviaKijR6VwJAEh+Lfjzc
vv/yNI0GOAIkp7ovIXVdmJ/+L+6f74bTrvXHIQJ90fHxlpg+dPiO1tymuwbIAV5R
z1vjmQIYCzYkTA==
-----END PRIVATE KEY-----
        EOF

        Alipay.debug_mode=true
        s=Alipay::Mobile::Service.mobile_securitypay_pay_string(
          :out_trade_no=> @payment.trade_number,
          :notify_url=>ERB::Util.url_encode("https://#{Setting.host}/pay_notify/alipay"),
          :subject=>@payment.subject,
          :total_fee=>@payment.amount,
          :body=>@payment.detail
        )
        render_json_success({:pay=>s})
      else
        render_logic_error"支付订单创建失败, 请稍后再试或联系客服"
      end

    end
  end
96
1Rei 回复

没用分支

1

这叹号让我不想回复。

96
1Rei 回复

息怒

1

Alipay::Mobile::Service 是老版接口,不是我开发的也无法调试,建议用 openapi 分支搭配新接口。

96
1Rei 回复

好的!谢谢!

1107

Mobile 是我搞的,那套接口要单独申请的,但其实普通的那个接口,也支持移动环境的

96
1107jasl 回复

那我现在要怎么改,求教

1107
32liuyang_1991 回复

换成普通的接口好了,是叫wap吧,好久没搞,忘了

96
1107jasl 回复

那个不是网页的么,也支持APP?

1107
32liuyang_1991 回复

app的话,你让你公司申请一下去

18楼 已删除
1

现在接入就用新的了,还有沙盒环境。楼主密钥已泄漏,记得换一个。

96
1Rei 回复

秘钥是改过的,谢谢.

96
1Rei 回复

Alipay::App::Service 是这个么?

1
32liuyang_1991 回复

Alipay::Client

96
1Rei 回复

method: 'alipay.trade.page.pay', 这个填什么啊?

96
1Rei 回复

谢谢,我比较笨

8744

哇,私钥贴论坛😂

96
1Rei 回复
def alipay
  @payment=Payment.new(:user=>current_user, :channel=> :alipay, :amount=> params[:amount],
                       :subject=>params[:subject], :detail=>"[#{params[:subject]}]#{current_user.name}",
                       :out_order_id=>params[:order_id], :out_order_type=>params[:order_type])
  Payment.transaction do
    if @payment.save
     alipay_client = Alipay::Client.new(
          url: 'https://openapi.alipay.com/gateway.do',
          app_id:  '2017000000000000',
          app_private_key: APP_PRIVATE_KEY,
          alipay_public_key: ALIPAY_PUBLIC_KEY,
          format: 'json',
          charset: 'UTF-8',
          sign_type: 'RSA2'
      )
      s=alipay_client.sdk_execute(
           method: 'alipay.trade.app.pay',
           biz_content: {
               out_trade_no: @payment.trade_number,
               product_code: 'QUICK_MSECURITY_PAY',
               total_amount: @payment.amount,
               subject: @payment.subject
           }.to_json,
           timestamp: Time.now.to_formatted_s(:day_time)
      )

      render_json_success({:pay=>s})
    else
      render_logic_error"支付订单创建失败, 请稍后再试或联系客服"
    end


  end

这么写对吧? 您给看下

96
8744lithium4010 回复

帮看下,谢谢. 报的错误是Neither PUB key nor PRIV key: nested asn1 error 但是我用生成密钥的生成器,匹配密钥是匹配成功的.

1
32liuyang_1991 回复

在 ruby 里面要把支付宝公钥加上换行,每行长度参考自己的公钥。

96
1Rei 回复

长度392,每行多少啊?在哪里有这个规定的资料啊?求告诉,谢谢

32 liuyang_1991 关闭了讨论 07月14日 13:56
32 liuyang_1991 重新开启了讨论 07月14日 14:04
96
1Rei 回复

弄好了,谢谢, 就是没换行的问题

32 liuyang_1991 关闭了讨论 07月14日 14:05
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册